{"_id":"i18n-element","_rev":"214-c58fba0cb83b817b8312e34e61e862f4","name":"i18n-element","description":"I18N Base Element for lit-html and Polymer","dist-tags":{"latest":"5.0.0","next":"4.0.0","lit":"4.0.0","core":"4.1.2-core"},"versions":{"0.0.0":{"name":"i18n-element","version":"0.0.0","description":"I18N Base Element for Polymer 2.x","main":"i18n-behavior.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-behavior.git"},"keywords":["polymer","web-components","web-component","i18n","internationalization","l10n","localization","format"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"76de2a6bd5e3264b40c3f39074e727eb19df7098","_id":"i18n-element@0.0.0","_shasum":"1035a8b5b1294ae929385f18278611a22f13f72f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"1035a8b5b1294ae929385f18278611a22f13f72f","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.0.tgz","integrity":"sha512-EYblQZ/f9BIxsfl9lZA1IKmY19XQ4GHJsULvQliVihDbJ74Xz8cXEo6rvm7CRWPidUKK0PxGX6sskdgGcM1r6g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFblq92cDw5zqyywlO3Ij36dq5QjOQUzDu8XHMWBpSTYAiEA2573K6WeSh/kC5RPEkeI0A7v6tnnZLl/H+VXlzdTK/c="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.0.tgz_1473551423609_0.17228578636422753"},"deprecated":"This is a pre-release version and deprecated"},"0.0.1":{"name":"i18n-element","version":"0.0.1","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","web-components","web-component","i18n","internationalization","l10n","localization","format"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"6c044a2bf5fd24c587d117edf91613496a0535b2","_id":"i18n-element@0.0.1","_shasum":"abf4e061aac10716f319888c44f96714a325ae28","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"abf4e061aac10716f319888c44f96714a325ae28","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.1.tgz","integrity":"sha512-dyxBwTmE/qy+oJQXLd1cZzvxom5S9Obd0ktd7hUQifJsvlcg4ZkuGbhSqX5rPDMZUNpCbnKpHRo0bfpLQ0e8RQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6TotpnilA2nqtLoaKtEiJmA1he+y5IVpNi5zCumPXuwIhAMVfLUL6BUQzS+BXqbqrkvniHeuM5M0wH9lz6uk78Saf"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.1.tgz_1473680932026_0.5698686351533979"},"deprecated":"This is a pre-release version and deprecated"},"0.0.2":{"name":"i18n-element","version":"0.0.2","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"73e8401512c9f063a08dd57ccc6262bc35de6c85","_id":"i18n-element@0.0.2","_shasum":"57f0437d2a27c4d36b913562e956752a07d4144e","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"57f0437d2a27c4d36b913562e956752a07d4144e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.2.tgz","integrity":"sha512-2kpQ+Py1OdbtlL2leO8Etygci0nz+WLzX897OKhw/el0CQSFwPjxAL41WGe82XvNuoZ+9UAzrdDFkPgAdfoB6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmNhLB8IiBXSxV98ivkHon3AvLLCP+Agzzb7URWzUs2AiAyZI2sW+8UH7pd2ES1EwsbD9R6slQ+/MmurIfu87iGGg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.2.tgz_1473682063707_0.4742407815065235"},"deprecated":"This is a pre-release version and deprecated"},"0.0.3":{"name":"i18n-element","version":"0.0.3","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"ce7f47765becb9ab4dc2b6de0ad81b6eab5b3b13","_id":"i18n-element@0.0.3","_shasum":"15f1bd0885e81db6037f3848e077cf77a5800291","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"15f1bd0885e81db6037f3848e077cf77a5800291","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.3.tgz","integrity":"sha512-Sn6FnUNzDlsKaXZm9DFEewOOoqqb4XZYELNvBaPtRGwLqHYVz10LUBi7s3J+6IaVy3eCLqmRMX7JDq5zYu6IPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHKHuWBrQyi+SUofiwzivk3y3zLU060cWzNgczUZSqVwIgFjuW7csV5kKRFYEtJjH0F70T0Cs32jlYn3t8cmP+Tt4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.3.tgz_1473844924076_0.6242634335067123"},"deprecated":"This is a pre-release version and deprecated"},"0.0.4":{"name":"i18n-element","version":"0.0.4","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"dd1a8065c8c83a7dbbb6aaaaf6f4cb1d02200919","_id":"i18n-element@0.0.4","_shasum":"719c4696a09dd011926d5e3b54f6f29b50a44247","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"719c4696a09dd011926d5e3b54f6f29b50a44247","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.4.tgz","integrity":"sha512-WXZyVL2SDcAZnHakY0Nia+z94dECwxFRAOqo61BTYAG4uPw7PzgoNSqxS57uNQRa8eU2FDdhCRGlcSqO5qU4qw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHwEbG1PtNNggLFifWWwBhkopLGhMPbPdqO7Zj9pzaRUCIQDeEWzhtNnhClg0QRczmEUucEcpSTLbDVHJ1O08567utQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.4.tgz_1474467178789_0.06402369937859476"},"deprecated":"This is a pre-release version and deprecated"},"0.0.5":{"name":"i18n-element","version":"0.0.5","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"6df65931c0296378121ac5525744930990749ac6","_id":"i18n-element@0.0.5","_shasum":"6701d197a46ba1154011bf699b4050a32917e1a2","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"6701d197a46ba1154011bf699b4050a32917e1a2","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.5.tgz","integrity":"sha512-cikZJcGArWr4kfjuWygJAtrgPUWPWvsi+c83mrtKp9U1+pNlOJzQdxpZoW3SglV69WWW+l3/z2J+sd5kaxFppg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2gde4Oo2+vowuMmvZ6CoEucl6ndzX9zlzr4ibZPvPrgIhAPteZyy09dfyEx2lnLdlguqe5qV0ziv6KbBSxrYbv0xo"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.5.tgz_1474468571346_0.09750364604406059"},"deprecated":"This is a pre-release version and deprecated"},"0.0.6":{"name":"i18n-element","version":"0.0.6","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"52d6a0defef667b22ea60fe49c99a134ecfbc2a5","_id":"i18n-element@0.0.6","_shasum":"9b6f5a5c865e5ce7d7c9bcc7bcc2d526df79944b","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"9b6f5a5c865e5ce7d7c9bcc7bcc2d526df79944b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.6.tgz","integrity":"sha512-CynwZYGMqRtcV3duAK5bCiivinAGRtqJZjWONdKfqmtW1l6ZRodDeRItk73RHC5or4B6TJMG428TZ/1HVGjTcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBubs20y2doT8iQmUkNZ4YprFiVEH9ZaDmc0JzNl1FJlAiA81zlpyRiJdxCC5HOLngFSLZPsIXInUoQZn0wBK4ncEA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.6.tgz_1474469184540_0.7956992420367897"},"deprecated":"This is a pre-release version and deprecated"},"0.0.7":{"name":"i18n-element","version":"0.0.7","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"1c938f085c880a416ec40413c807402b57da5525","_id":"i18n-element@0.0.7","_shasum":"42a637f2ce367ef7c78bf9ef22aad57c079f7b68","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"42a637f2ce367ef7c78bf9ef22aad57c079f7b68","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.7.tgz","integrity":"sha512-HigXhwqhCtL12CLa2p6HvQA8KBHohpzhaoSxNt51vlzDolqcTpv2Lsyy2j5dV55gGOItOHyW9Hz2o47A1iAwuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNjjr9yTWbjTf15pMBpr/rUeddTiVTbhTOA3bysjrUfQIhAIvKOhEC525dUrddG1iS/6e62n55ciMfDCp+5eBBkhBC"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.7.tgz_1474543993754_0.9106346967164427"},"deprecated":"This is a pre-release version and deprecated"},"0.0.8":{"name":"i18n-element","version":"0.0.8","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"5345c2cc661e7936920e543eb80f6c0d83f1f6df","_id":"i18n-element@0.0.8","_shasum":"ee5186c75395037b8c79ce532234b6b761ff58b4","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"ee5186c75395037b8c79ce532234b6b761ff58b4","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.8.tgz","integrity":"sha512-5Ki53YtLcTT4hmBVio0ndvscJomOoWi+3EfI/VX4hqwN/sobkP4YuxhXTbVSo//y0TzuCxJ5Z0GKLxqA9/hjuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhLt85FQSgXAhsjeqZSGUGs8rGPQjJDQgipzkYnCpf9wIhAPKkoCkfwV7c6cb/vGm2D/cT2lf4k7Oyt8KThgwHqp9i"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.8.tgz_1474608258659_0.4954478594008833"},"deprecated":"This is a pre-release version and deprecated"},"0.0.9":{"name":"i18n-element","version":"0.0.9","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"e1f5e9cd83d948da7a65202b0ea311f8c0426ef6","_id":"i18n-element@0.0.9","_shasum":"8b724f7821beb39f5a958ee0230bd023ee8d382d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"8b724f7821beb39f5a958ee0230bd023ee8d382d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.9.tgz","integrity":"sha512-FJ5X1S6/Uq6KFk9/+L3GxhNhU5CCJNRbQsdvCaiLTZ0Yal6Z5Dpt4XMfhlo9Xw8lF5ONiJmlAjEdMoFeWMOtAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzTC1VzBB4POZIwvLLQAsdjtIwWjsWrXNrRFjM67HrvAIhAMYLnsovDxmgCJ73z1sQET7uLcosfY6CCVu8vqBnWdrs"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.9.tgz_1474608683540_0.34705609967932105"},"deprecated":"This is a pre-release version and deprecated"},"0.0.10":{"name":"i18n-element","version":"0.0.10","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"0dde4db2a321ad253a303448b9180b598be44548","_id":"i18n-element@0.0.10","_shasum":"dbc762ad5423aba7a214f7ae3aa24fd1cfa12b40","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"dbc762ad5423aba7a214f7ae3aa24fd1cfa12b40","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.10.tgz","integrity":"sha512-XM3d9pVzG2KMj7JuhiANTCnq/R4xzz/aI+eSkDR9sqqDnRDPqxskd8pVWLSEQtw46u1+dk4qWtldVv0FKX9DPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGD8pY26o2HkbYzvscANmazJROKhvLCK2S5dg7y4R4ZoAiBKNtDUHVQx/gkY6WTo/LnWEttoVa7V5x7GNuemgL40rQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.10.tgz_1474611125562_0.9478068919852376"},"deprecated":"This is a pre-release version and deprecated"},"0.0.11":{"name":"i18n-element","version":"0.0.11","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"c7780e00b45888142ba1a6c5c57d70a8b181137b","_id":"i18n-element@0.0.11","_shasum":"f56f6b89e319fab71be2022944140b6bc2e4be21","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"f56f6b89e319fab71be2022944140b6bc2e4be21","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.11.tgz","integrity":"sha512-Hpq4nidz2fnF3GyxHG+X1GZuLOGs6si1n9YTPr3RpWrbtem5wM9NmWGXpEx7iMxJoTz9DvVHPVd1gkhMTD8mbw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDja8vgrMsRGdDLLxqNERotZ07Bx9ickXpaa0d2ckbSEAiBxA0TBMmV7EkJZLhblT1a8dlh/nvWQUVeWHkFgFTW51w=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.11.tgz_1474888777365_0.37371674343012273"},"deprecated":"This is a pre-release version and deprecated"},"0.0.12":{"name":"i18n-element","version":"0.0.12","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"8859359bcabda8af87eff4706e4b9b16d515599f","_id":"i18n-element@0.0.12","_shasum":"931eeb73da468ebfb74799142dbb13e73565828f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"931eeb73da468ebfb74799142dbb13e73565828f","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.12.tgz","integrity":"sha512-jcj6SBfT8PQDqWLKoc1Mna+YX+ExRIJMPPmrDQHd2loZh6xyAhA5/JgzLpYto2vD8adC56qZLcdwCDi5xxDaCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDhTxjPwTKBfLkwWBAA5rd5BgGH10LwqG6sGKCsFDGpAIhAO6wxeSGleE+zryaMsABqrXXHY0RTbybLuBDRDXs6ijL"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.12.tgz_1474995267601_0.9770188694819808"},"deprecated":"This is a pre-release version and deprecated"},"0.0.13":{"name":"i18n-element","version":"0.0.13","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"2070b0d0896190735493da8d1ecbfdc603ee0081","_id":"i18n-element@0.0.13","_shasum":"4b0265682ab3c6dc5af305bc7e33042d4aef06f3","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"4b0265682ab3c6dc5af305bc7e33042d4aef06f3","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.13.tgz","integrity":"sha512-LB2cldtXSuTAQpl7GBvIZZovKYUh4SDhjK5s5ejL+Ef1ARycKFd9whGNIP+DzQjZs1WHR3r8h+fgx+1B1XG1VQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQg/uppXS6uo1JtOfX99eyxWOXi2gIoJpvbY4nX0QtoAiAn42Kpa/mitRaizOPxNXxXDry9paQOEhX4+BF8YynUIg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.13.tgz_1475026748337_0.9592804252170026"},"deprecated":"This is a pre-release version and deprecated"},"0.0.14":{"name":"i18n-element","version":"0.0.14","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"598365e961ddd9a2567d1b2382f4d306aa41f46d","_id":"i18n-element@0.0.14","_shasum":"7c66b665c55ec5dab6e7fac7d0cdaf7776c88b84","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"7c66b665c55ec5dab6e7fac7d0cdaf7776c88b84","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.14.tgz","integrity":"sha512-5Ods4hyLgJcHnoDNvBnK8zxM0fXr3CiCYufgbElm2UdFiOfQnfhi/wQOOsNUz1HtPgYJepojsRu+xSFaeTTNow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOAy4eSpALmgjC0VnrQXBfl5KcFs9/ck0YJluD/ZSt5AIgYEEPkNUAmEutm6xy48XZLynL9PpRnpL2c95Fj/7WmT8="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.14.tgz_1475049901966_0.4170772766228765"},"deprecated":"This is a pre-release version and deprecated"},"0.0.15":{"name":"i18n-element","version":"0.0.15","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"281055600c8bf57068c25f48f56837fbdb80656a","_id":"i18n-element@0.0.15","_shasum":"b113fa724b1fbd1db463b341a47a98a19e36b704","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"b113fa724b1fbd1db463b341a47a98a19e36b704","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.15.tgz","integrity":"sha512-4RF63+CxkOTyy3aFt2kgxrt7UkzMW4PBXz304/CMWyuys1bbHZ5pYD7wNTuf+lj/F4L0DV4jIxQyjbYQykUY7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIX7MxiSxYCnmg/mhaeGOXJ0EdIaRjUBhJtrmf0q+uNAIgB8h7QulBmkVTQ8sKY0OaXLq6NA7x5OxVuNmBA/fZbgQ="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.15.tgz_1475072142192_0.7502365380059928"},"deprecated":"This is a pre-release version and deprecated"},"0.0.16":{"name":"i18n-element","version":"0.0.16","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"71582d35b3ba3091d59c0987d1b31e729018efd9","_id":"i18n-element@0.0.16","_shasum":"35b89ca861177cd4d69a3e79b318308ba6a8d32d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"35b89ca861177cd4d69a3e79b318308ba6a8d32d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.16.tgz","integrity":"sha512-XBfpOWHM1AHpyQiXLphxTYoEkhl//CDnyd9HW11XmOeOOV7qitCieb8dbr0lJslqBW54FPv5UrMIzsUYNkS9fA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHB0wDobuliFpeIYAUuw+hnxMEPK0jmUxkGmMX3RKZ5GAiEAq+5sU60rLes4WTR80k+19+9M4/e/0TL8+u/aiKHYN6M="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.16.tgz_1475136224282_0.5439575449563563"},"deprecated":"This is a pre-release version and deprecated"},"0.0.17":{"name":"i18n-element","version":"0.0.17","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"f5268e734900bcda5f61ac1958385b3633504074","_id":"i18n-element@0.0.17","_shasum":"73cfd451239247e7f7711627b685e72e4e23ab4e","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"73cfd451239247e7f7711627b685e72e4e23ab4e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.17.tgz","integrity":"sha512-J6vBu6RVcpsoo5nN8f8u0Pfml76ZT2uOzT/oMQq7QfzDBtf72pREsmEeFyvWNwt0OamGweNj90O5KqcXpdg7fw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn5SZ/BhLQ9eGWoTcqWcqCrSofZgHeBtuNymldsivGygIgQhqfWyzbeeoBuEsddpbZiq1IJVYQOQm1LxpQXOvHp5Q="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.17.tgz_1475137102700_0.9133465674240142"},"deprecated":"This is a pre-release version and deprecated"},"0.0.18":{"name":"i18n-element","version":"0.0.18","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"5523881e677437bddf9386d7f069856f012ce3ee","_id":"i18n-element@0.0.18","_shasum":"4befe083ae80717357e1b1eedc658530eeecfef1","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"4befe083ae80717357e1b1eedc658530eeecfef1","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.18.tgz","integrity":"sha512-QfM0H+dfOh+WD9JlX7gvj9PZeIBGoTa6LEU3Rt3al9HPOZ6sl7n39FbHbbY4AiedESvxKYz3mrQXnRKOjdHEdw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBBrjmjqzsatSZBjT+xkE8LbrQJ2oFQhDhbY0xJosgD5AiEAzqm4w7obeqiPQHFDHGRKoOQOM1gBue5wawOhYFFzvkg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.18.tgz_1475137597859_0.24043076974339783"},"deprecated":"This is a pre-release version and deprecated"},"0.0.19":{"name":"i18n-element","version":"0.0.19","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"18ef650816bef5afe01a81c325f7c9cfe7ac7de9","_id":"i18n-element@0.0.19","_shasum":"a0447fbe2b9bada8e5b762c20b49f121a1e310c7","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"a0447fbe2b9bada8e5b762c20b49f121a1e310c7","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.19.tgz","integrity":"sha512-9+fv3/fwZFVPaRwhX7U0u1B4SWpqQVhewEG/jam/EJnmj7qTWPrzFZdJ+Zh9c1MrOB36tWTVnTb1AXgdbsaDqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEoqIILLwt/eW1AA/LQKRMbrcD2YHobXfbQdzoklPeULAiBjnXIjX7gYdjXmagGPiPhmRjZz+7FIgWER7RY0xLe8Vg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.19.tgz_1475207088651_0.7093346840701997"},"deprecated":"This is a pre-release version and deprecated"},"0.0.20":{"name":"i18n-element","version":"0.0.20","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"348936b59d2a4261288160f03993e9b7599e6112","_id":"i18n-element@0.0.20","_shasum":"8504e2750c17e75f5a17ff15076c5bc49b9907f0","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"8504e2750c17e75f5a17ff15076c5bc49b9907f0","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.20.tgz","integrity":"sha512-k0KYV7tESYdkmDMWXvZPLhNUBM1AXt2PmfUSJBekOAlMKaZO5Duv9ftx7Db4frihj1182Prk1N3+6KywHo/8Hg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDihkixIXnKWCQCW1z/fB8M2euI4UIGXF/R3cnY21glkAiBNSXU92zFNV537YJqnGj9a6KxD13dyg87V0F0psuY7XQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.20.tgz_1475237484707_0.8167140337172896"},"deprecated":"This is a pre-release version and deprecated"},"0.0.21":{"name":"i18n-element","version":"0.0.21","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"4778b82ad0d517b4e1ae2237ce6e30be0ff7283c","_id":"i18n-element@0.0.21","_shasum":"62e2d686e5bff601f8bd717615c8b73ded43be40","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"62e2d686e5bff601f8bd717615c8b73ded43be40","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.21.tgz","integrity":"sha512-+xCFnOrJ+T1eDjxkC2XELIuM5TnIiikVoaZr6a6dHsc6QVR1W9uwtR8ND6UEm8EYmYxUlfSv/7qWNd9IOW7Yjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFzvEevxDDiS02yOs4V0JEQVSv0quGsDiqilklXQRwFQIgMfqznqNUkdbQXoK9CGrFwjKbndZ0qVZ29Ge/N8yOASo="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.21.tgz_1475338167567_0.12005645199678838"},"deprecated":"This is a pre-release version and deprecated"},"0.0.22":{"name":"i18n-element","version":"0.0.22","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"0862cad43dbcd58299e11b230e54e92393e21c7a","_id":"i18n-element@0.0.22","_shasum":"d65de5b7b316d8242831dbcbdeb84a24532aeccc","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"d65de5b7b316d8242831dbcbdeb84a24532aeccc","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.22.tgz","integrity":"sha512-JDiu0fndYfwnJYtsleHdBBgEb7AQ1izauau16LqYngC7onM+3TWLsRSYYwimtGW14zlA6vWQiak8AgbNpzm1aQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNXP8r5SvBWCOWoox5taG1yBMQduLW+xYvvyXst6c7qwIgTA7gVvGRx87YRRIgSoHFBq6hHtWwaO6yrhrl0Hapb6c="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.22.tgz_1475344538203_0.39749852335080504"},"deprecated":"This is a pre-release version and deprecated"},"0.0.23":{"name":"i18n-element","version":"0.0.23","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-i18n-leverage":"^1.1.1","gulp-i18n-preprocess":"^1.1.1","gulp-if":"^2.0.0","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.0.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1"},"gitHead":"5c46a93b739989cec1270662b13564a9b205fbdc","_id":"i18n-element@0.0.23","_shasum":"3be39602325b45d537016822849457e7e7bde847","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"3be39602325b45d537016822849457e7e7bde847","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.23.tgz","integrity":"sha512-W1PuH/C8qb0O3AmoJMj9EpuOlEG74fijLKW0mDIXQ6Cr+1ovTmwkWI6kaGJXW/dwx39cyInMJj5SyrVkGmwXIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERV2rHJmZzqQO3eEqWGfyyq35qK6V1DZENLOVoNRt3gAiAF7PPHJnwiRtWvYsN0lpu6VJAuZBHkM8ZJILJHXbDH/w=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.23.tgz_1475423590979_0.07116286503151059"},"deprecated":"This is a pre-release version and deprecated"},"0.0.24":{"name":"i18n-element","version":"0.0.24","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"31f5c00bdd0d837c391d1c7a565b68e31d237409","_id":"i18n-element@0.0.24","_shasum":"4a8b77b8df4e554860b7b3f307c09a4550d575ba","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"4a8b77b8df4e554860b7b3f307c09a4550d575ba","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.24.tgz","integrity":"sha512-5o33MxRd+uV23fDIi+JNowbisQImeNKR0rN+ymB6DU3JT757L6qyXlcXi8mSwCUoI/hjhThNr5nn0y8GubUUzw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuFtqd01soLI5ZUJmJVbGhGtyiZ10YEvLd9r3EXDpCtgIhAJenMIiE7lNDrCNJbUQZg0I+ZrX8ZkJQU53dDGWDkrsD"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.24.tgz_1475513056597_0.6678446410223842"},"deprecated":"This is a pre-release version and deprecated"},"0.0.25":{"name":"i18n-element","version":"0.0.25","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"4b7f265e2f59ea47cfdf6c81e7f8f95a28499eef","_id":"i18n-element@0.0.25","_shasum":"ac90b905564db495b28d2b422fceb3b64e0c4843","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"ac90b905564db495b28d2b422fceb3b64e0c4843","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.25.tgz","integrity":"sha512-uJrJ+myo+5z0auhrgbQcq793Gax8h/w2cGEq8CiuY7MB01v17BmEhY17fhMfOA8+jsxjZf0C06okufAsP2YOWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkwFHC34gMm8PYN0amQV42HDJ3ZYStxuJ58e32zBTuGwIhAPle6CeINa+zDA5zIA5VEcxWD1Quf7LKEx+BflG1VNMm"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.25.tgz_1475558623863_0.4367845149245113"},"deprecated":"This is a pre-release version and deprecated"},"0.0.26":{"name":"i18n-element","version":"0.0.26","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"ca516e63398fb87610494df5b015cc7e16c4e52e","_id":"i18n-element@0.0.26","_shasum":"38418aa38cc793801e874a3bfaea579d9b02d44e","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"38418aa38cc793801e874a3bfaea579d9b02d44e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.26.tgz","integrity":"sha512-pXzhLW9/u+smD0aJdcaFObfftw2dt83ftZt3AeIphmAxeVgmD1vnny4tMbIGTJYMMaP7B3AXN/0KQm/PTjC+/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICE/myLMxg4vlHiOptKnB/izjRFncG41ldcf6ROdvIf/AiBwJrBlF5DsKAda4Ihe/sl5zuI5ASFgDvcLc1QluxR6tg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.26.tgz_1476070295965_0.6718209446407855"},"deprecated":"This is a pre-release version and deprecated"},"0.0.27":{"name":"i18n-element","version":"0.0.27","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"33940e233f2f5ef9fdf84c901e26e6f9969e714d","_id":"i18n-element@0.0.27","_shasum":"2be6f25362415069f6251c0f54f0f80d41d72291","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"2be6f25362415069f6251c0f54f0f80d41d72291","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.27.tgz","integrity":"sha512-TyOCdl4vNouzQvymW6SGuq19fFazP6tPXQY28048v7VZszTeMKyhlhNl1MdLt+lZRcl4KGYFZneYufh0vJazYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjJ/rAu7w7/wVGs+xWqfVUqzKej5kaBcAzUXxNlqI5ewIhANE20onPVZ5y/H4elSkpZ0ROvgwGvsfkRXfsa3hquj80"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.27.tgz_1476102131836_0.04917415231466293"},"deprecated":"This is a pre-release version and deprecated"},"0.0.28":{"name":"i18n-element","version":"0.0.28","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"05d997cef8311f0b4193154746321212c1e5a633","_id":"i18n-element@0.0.28","_shasum":"e8dfcd9959e6f25466116fc565cab651415f72d4","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"e8dfcd9959e6f25466116fc565cab651415f72d4","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.28.tgz","integrity":"sha512-7WHm2R+KAM6CbZbaO44Y0OL8ciRXn6c/1QdAcoduNDMZCixqZ9V3XHqrfuOdncMFZd5aeYux8f+4lAnpDq2T7w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBDgKOa1rHjjkGfxkKXG1iBHxcWEonFmgq82Gwo+CsTwIhAJtBFvmLwiMwtRKlhKCHGAP1tFRa+eS7kLI3IbleJuEO"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.28.tgz_1476158907469_0.3508553127758205"},"deprecated":"This is a pre-release version and deprecated"},"0.0.29":{"name":"i18n-element","version":"0.0.29","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"bc179d9f6312fcb3b5859069e8cc163fc65b57e1","_id":"i18n-element@0.0.29","_shasum":"461cf96d6331fd72198b13cddf65e2120f56f82d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"461cf96d6331fd72198b13cddf65e2120f56f82d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.29.tgz","integrity":"sha512-9eyu2ZklCFmAYsmfaJSBinbcT3dLqMk0R8S4iVt6K/xwC1ycrdEeUTgqfnM+gf+IyHaGmF6cTwESg5N7RafkFQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDniLIDvobnMboU2Z394rByDAFNXhc3XtkTNZy+Z8EBQIgHxqHjmcDvshlhDywlv/7bfDltUspC3l4fT6IITXi818="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.29.tgz_1476168493423_0.2286416187416762"},"deprecated":"This is a pre-release version and deprecated"},"0.0.30":{"name":"i18n-element","version":"0.0.30","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"8bc15a17c43c76619e21efe1fab61583500baee8","_id":"i18n-element@0.0.30","_shasum":"60bd2eb5556c69e07a9b263f52a223eaffd309da","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"60bd2eb5556c69e07a9b263f52a223eaffd309da","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.30.tgz","integrity":"sha512-Db0oI2Gi0VOiVczXmPRJxIcDO/UJBmCpp2zv+r4UX/OEnmxbKmX7LRx/svJtCUT8icxI9jJSIE9vNWsb54cQeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbiSctol3NssAH7N+dZ+0+hIMBy9JNGFIolPShHL7FxQIhAN1cABRe5+7ulEi2+uslMO3ZO9teP0E+i3PTEhIEA20u"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.30.tgz_1476169445899_0.18029003450646996"},"deprecated":"This is a pre-release version and deprecated"},"0.0.31":{"name":"i18n-element","version":"0.0.31","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"637f2b00dac5f26b3935440681d46c18e3d0b120","_id":"i18n-element@0.0.31","_shasum":"e8cc70b7c3de0e13426041e31c60d2cfec906800","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"e8cc70b7c3de0e13426041e31c60d2cfec906800","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.31.tgz","integrity":"sha512-UihFbeBeZsP4euSKAig86gnLj7nJ0a818RjqxiZi3drl0o/fphjQatI40u1qtLdAWpxov/stfbJSO5ghh6PmjA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfey7MlOzYearNOP3S2JsY6RFNUy+2wvRXMvtXKQ+YEgIhAIeT0l5VU4T1ZCdEbc5n7VJBVfA4iKXRkebhJ8vuhNob"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.31.tgz_1476295792662_0.8989180601201952"},"deprecated":"This is a pre-release version and deprecated"},"0.0.32":{"name":"i18n-element","version":"0.0.32","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"493dcb9d4b2a2cca9f1139be7d8f2ca1ca9ef69d","_id":"i18n-element@0.0.32","_shasum":"89ddec1ac782f31c57fb75229208621eb0a9cb4f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"89ddec1ac782f31c57fb75229208621eb0a9cb4f","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.32.tgz","integrity":"sha512-j8/4Eu3uHSGgrjRpdTr+/TudDfgapnYVSPlXjOBOqJQ8PJNtSP8YsG5y5AcVKTcd2Mlh4IEeyKchbQCKTuPrNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXIdk9Z3qgi1cBk9ygAde5V0OB9drhAigR8IMMCR7xCgIhAI84/kstiVK+0UvPGcTXI2oRwSHYCdZ3wT+p0/LpWEjU"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.32.tgz_1476329601890_0.8351158523000777"},"deprecated":"This is a pre-release version and deprecated"},"0.0.33":{"name":"i18n-element","version":"0.0.33","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"247d0c2e5b4aca7c004c3775e4f96db2f9845dca","_id":"i18n-element@0.0.33","_shasum":"7e78f04ec059fced226611034337e8120d6ccd0a","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"7e78f04ec059fced226611034337e8120d6ccd0a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.33.tgz","integrity":"sha512-ECb4dL0G4jfF6nv80ekNduLHwcIyWNsfVv3TOC6OP99i5vH+cmVH8KjGxvypTDnz2JZV+30Zt9htgAARGHOKNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdO/TbXVYuypCNr9QGnQtYdimPTlMUiuaIyycIQDdKOwIhAOVAjerenB+HuW/HpAU0OOnVyUNZjaYqFWEN09jh1R6e"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.33.tgz_1476340589247_0.43577537848614156"},"deprecated":"This is a pre-release version and deprecated"},"0.0.34":{"name":"i18n-element","version":"0.0.34","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"3c95c950fdbb42ff64979f8de8362a2ff20e7b61","_id":"i18n-element@0.0.34","_shasum":"8f44b48db31add3e19df7425cba5bd27e4a2bc1b","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"8f44b48db31add3e19df7425cba5bd27e4a2bc1b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.34.tgz","integrity":"sha512-eLgpR4K/EHOFO7U2OHjh0paSAMfxBOFXFL6LKpWEAdBOWwgtBDoN4RkSM06q0t0Y/jHffXnPnXtC/O5Ve9IqoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCA1u3888wb9G2kSgMWEEuaql8LoOqQQHDMan746I5npwIgb67wGTWbs6WF0TUadLuZ2DlnU8yWsdv47yJJomXxdO4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.34.tgz_1476436904173_0.3690641594585031"},"deprecated":"This is a pre-release version and deprecated"},"0.0.35":{"name":"i18n-element","version":"0.0.35","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"96eac6ca67e25813e44a71f231e97cb7af8d33d3","_id":"i18n-element@0.0.35","_shasum":"8bd034eb8734109dbaed2d4ef08a8c6cdd7dc152","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"8bd034eb8734109dbaed2d4ef08a8c6cdd7dc152","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.35.tgz","integrity":"sha512-lEf1eDYl2LS21gDaDYajLF/LB3vogPSpWbPvXVXCONIKe4j2JgWBUaia7rXr9jdJEB5ZW/4C4RCslXY2XXWbKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAlUD5lE+k9/3lPRc+asMay1DFU6xbJS6dIX3SjPgZ/UAiBZalaW1T6uYWO1GPzxy8+yb/hSYZcUAwzGvCOI5XezCg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.35.tgz_1476448466454_0.754034805810079"},"deprecated":"This is a pre-release version and deprecated"},"0.0.36":{"name":"i18n-element","version":"0.0.36","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"ffed84faf28c2ba9cc1d9eda526330bc5b6feeff","_id":"i18n-element@0.0.36","_shasum":"9bbe7979c4d63d2072e8e9b206c2a1acfc06ac6a","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"9bbe7979c4d63d2072e8e9b206c2a1acfc06ac6a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.36.tgz","integrity":"sha512-zUXY3uy/+sLj0IBSxpFBAIKlndPIj52Arq6Wfb4Ehm1uiVMFpY/KKVYvUHHsz14lBmFVelBADt4wT3AtLfX2lQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaRQAZ52hMddpjIypEgKr4VLcVeaLG8TSpzp1swH+NOwIhAMaFC2eTPV1CSOu/4tYq+vTnVEdgYMG1g0AzLLF9vXji"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.36.tgz_1476509290721_0.4088525893166661"},"deprecated":"This is a pre-release version and deprecated"},"0.0.37":{"name":"i18n-element","version":"0.0.37","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"07c9cdc624d7b8550604b154333746d17d9a4003","_id":"i18n-element@0.0.37","_shasum":"85e11dfe2b5d6668fe30a0fa07098b008e6741cd","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"85e11dfe2b5d6668fe30a0fa07098b008e6741cd","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.37.tgz","integrity":"sha512-EWvaT1N4HULAAZ/yKn/SJJmDm1PYhxu3Mi+cA55vjiEm+mN4a7Isw+4JE9NiuQZtrOokDWmRdaSC+a8v4GgbtA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyI5Sp2dxiKlwErOHUcUW0aUCMhAC8EE8Yi8YJ+DTzkAiAHdS+qtujy3OQ4uhmuosxY6ZPnMqz/c32gAl5N2l6u9Q=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.37.tgz_1476590976352_0.7522715080995113"},"deprecated":"This is a pre-release version and deprecated"},"0.0.38":{"name":"i18n-element","version":"0.0.38","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"f0189f9e3cb25f64befa063b85bb320a1b73fe44","_id":"i18n-element@0.0.38","_shasum":"a863454df508ece3a328ddbee1e82d20b1347673","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"a863454df508ece3a328ddbee1e82d20b1347673","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.38.tgz","integrity":"sha512-OpVBiRo0I9ho8SpiA/bx7eFL5MtPpTRxNBTLsBsh50nBSw1QQDhivDRMeU0eqoTKyzMVr96FgjKoOj8W5frGRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE1zUOxm2m59LfY+wZ9pGo7xUj97/b/7OI9sxkFwIuh0AiAX6y1qnXtlTplWOtcc91Nx9wdEPeKQfWmD1nyDfhuV2Q=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.38.tgz_1476601298559_0.8664786531589925"},"deprecated":"This is a pre-release version and deprecated"},"0.0.39":{"name":"i18n-element","version":"0.0.39","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"42e3ed7ad573c493b447242afd974af37804e207","_id":"i18n-element@0.0.39","_shasum":"28a9de27fddf1f9e2403bac85891d0e584227f65","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"28a9de27fddf1f9e2403bac85891d0e584227f65","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.39.tgz","integrity":"sha512-tsrPvYybHcQA85cQvMy0ZMipxNvEXGOGDi+b08CFEKNbw1Vynnpwv0oUMM7S9gUsFV1Gl31S5hJsPTIphAOZTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7uS3/tOvF02e9MEMcLkGd1xIwLzhWL8fE91cUrc9ylAiEAxP1cAWmKEsOjaY+FVkJl3Fb1z/3t8HQCSf+EcTDMYFk="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.39.tgz_1476718584853_0.12886447762139142"},"deprecated":"This is a pre-release version and deprecated"},"0.0.40":{"name":"i18n-element","version":"0.0.40","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"601db97a0e6d1a57b3d482ca10525cfaf0d68332","_id":"i18n-element@0.0.40","_shasum":"21c60f1d58f821f61abea2b8f2b3a57f67c8ceab","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"21c60f1d58f821f61abea2b8f2b3a57f67c8ceab","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.40.tgz","integrity":"sha512-TTXvp4mRkbhgCfKY6U80xRxIV1R+VTEFfFucgAwwYslrYmweyjRYrr6YQAKWQ4pdKmsmMrlLTfAFGQG7WbEUlg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGcOYf3jNzv5As3VOdVioELdqWbh2PFG5d22zpT02FRCAiEAk5Ed1FGLUztmWRO0VFRjOG94RdEXialaOpY15HGx1CY="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.40.tgz_1476720395657_0.1851339121349156"},"deprecated":"This is a pre-release version and deprecated"},"0.0.41":{"name":"i18n-element","version":"0.0.41","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"35b8920a1c9a4dbed31f16a42622da0af774dc19","_id":"i18n-element@0.0.41","_shasum":"90cc0b7968d6790e5a45e761ebc775d21cb7678e","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"90cc0b7968d6790e5a45e761ebc775d21cb7678e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.41.tgz","integrity":"sha512-BaZGVU5KDCjToBhSPNBKajatbSJPYpEb4iS66PR1lIH/jhUqJnuDy4YXAhnSTN+k/FgAGLlyU9Kmt+zFI85qhA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNh/HoiLG39CYhXDWYig+sRMeYYWGvCIku86VqWXrpqAiEArkMrhtjGIWpcP2vkolJY+b6sBJAzIvHWjd/I1QUi36Q="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.41.tgz_1476721251155_0.7158745143096894"},"deprecated":"This is a pre-release version and deprecated"},"0.0.42":{"name":"i18n-element","version":"0.0.42","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"3329a35671f596231ffbfff3ade0b4959ab47a70","_id":"i18n-element@0.0.42","_shasum":"2a347cc85a90c2f800f3c2adf83eec2943af4021","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"2a347cc85a90c2f800f3c2adf83eec2943af4021","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.42.tgz","integrity":"sha512-1RyuyA0WZlCtvjVZyeayG4J3ZjLBa5jhoW+rAULGeQWENFrbxVZyv59aWfKN2r2mDiVgg7RXlY0zC++mZm8xxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCceXGP5kkbtfhEbqWjNnh0DeP3vlAirBQO66sLNshsmgIhAI8VROafEO42UivTuwH3a5SFsYwnlierqpI82rrc73L1"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.42.tgz_1476726142975_0.12532066483981907"},"deprecated":"This is a pre-release version and deprecated"},"0.0.43":{"name":"i18n-element","version":"0.0.43","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"b1a7b642e6f5667b52609eb6b39a528ae827c877","_id":"i18n-element@0.0.43","_shasum":"fcda1d82292de03ab501dc74550351d84b8151ef","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"fcda1d82292de03ab501dc74550351d84b8151ef","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.43.tgz","integrity":"sha512-Q5+B7zk4xTaaX0dbN38Auoej1nbmnCs5Zr+TgweHO+E3Yn98KlMZURsb+yc8amtDTYCuJw8667gri0fOHpJ1FA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNGHvOHV0GZQvBIDXI6/5SixZLnjgK+PhPSZBswalteAiEAhyQAyrimaNiE8uIGp0AzDCptiPABnXdnFkIlxNJIqLg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.43.tgz_1476772365013_0.5226268330588937"},"deprecated":"This is a pre-release version and deprecated"},"0.0.44":{"name":"i18n-element","version":"0.0.44","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.1","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"bb68f286ef4470f23644cc03fb741125b7433a57","_id":"i18n-element@0.0.44","_shasum":"372720d25bcf6c73d47bd07ba32964e1d4fd522d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"372720d25bcf6c73d47bd07ba32964e1d4fd522d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.44.tgz","integrity":"sha512-NO6yWb7s9OJakDHwWt8pMM3QTEoVaPXMY2PpI6wLrlCSGNcbcE4pw/MYYF48wqXQuQrgzxH01xq+5TAAYHTQWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/W+nyAfKeIHEMS7LFCneXr23kiD7xwNgJYXXaHYR9IAIgSE3a3FS9kwVkoa3apfxhx/93op8Lyc4iwGxEneX+VrI="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.44.tgz_1476774284806_0.28412347403354943"},"deprecated":"This is a pre-release version and deprecated"},"0.0.45":{"name":"i18n-element","version":"0.0.45","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.2","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"8be8762e1fae22b46338a285a6633f1de73ee9d0","_id":"i18n-element@0.0.45","_shasum":"3f5159fa00909c5bda85a1e6a88ff9c8e018e6ea","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"3f5159fa00909c5bda85a1e6a88ff9c8e018e6ea","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.45.tgz","integrity":"sha512-F7lrP5rxuNnLBMlUo4PwVnLhs203H91kr/Gbx88xFmY2+yGB9eqP+dFm+2leLIK3JGBbT9vkRvvzJj/Wu/LU7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwk8J09tQlrQYOtZ1J//NaUQTYqJE1NQozsZbv1XjgFQIgSGo2tCNH+ENlrgK6qeSsTF/2+jlzMs305Cgz0RP6HYg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.45.tgz_1476860157194_0.6226359787397087"},"deprecated":"This is a pre-release version and deprecated"},"0.0.46":{"name":"i18n-element","version":"0.0.46","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"966d73d1b79dbab73ca553c701ca4a7642a6a3d8","_id":"i18n-element@0.0.46","_shasum":"94388822dbd9e9b45e0c57bffbfc8620bad9349f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"94388822dbd9e9b45e0c57bffbfc8620bad9349f","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.46.tgz","integrity":"sha512-UrO+prloy79JRXAlW8aez43+dPNMQhXnlX4FnmFih86FT1fXcCZotPOsIgdwTEp9ajRZPUWkoFDnTPZLx4Pfqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGPUHp9fXYOUvhPqomKZOilsu/RH1r8ZlVqd8H/C+xGPAiBTMb5/y5i6f4Ps4Xt+5T8Zo05g4Fa3t8pKug7Exl57TA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.46.tgz_1476929796905_0.9876432113815099"},"deprecated":"This is a pre-release version and deprecated"},"0.0.47":{"name":"i18n-element","version":"0.0.47","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"1cb900a0cd41f82aa9d5fa7111b17436522506e0","_id":"i18n-element@0.0.47","_shasum":"42de794d7366c29890ae3b91d7326dd3697069c7","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"42de794d7366c29890ae3b91d7326dd3697069c7","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.47.tgz","integrity":"sha512-rDh+R2NMh5CfkDJDe55q1fXEISoLAGfoSLMVi5rVD0sd8DC4DgOoMxhB/uEgCTqSfVkjS7wss/z1ueEZ+wMGsg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsSXqIwWFct7rxWoXB7M3tIGahROSP/YBarkD55n10sAiAOkLl3H5S4pPQmxTrCTYXxFYNkZiUYVAg4MX2Arw+pSA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.47.tgz_1476934103645_0.19928592653013766"},"deprecated":"This is a pre-release version and deprecated"},"0.0.48":{"name":"i18n-element","version":"0.0.48","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"be0e507973d8294ba0151d0ef5e2ceff141759e3","_id":"i18n-element@0.0.48","_shasum":"da7a8c788c7ed9c7b1b9c5d5bdb9095d43ddbd1c","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"da7a8c788c7ed9c7b1b9c5d5bdb9095d43ddbd1c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.48.tgz","integrity":"sha512-ckZInG3EJKph3uv9N35KXWM5s9PNzXm/SADDkG2oooi16FF2OtKSpCDzQeNq5aE/OGc/2TZ+Ouso3dxAaNo14Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8WgneEJUurqx2WNCru9hGLfqDkdAoT3lFD59pFhvQFAiEAnGcaeclXjOqE5o4GTEKGATG8l235aBRkRM2+dvZv6pU="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.48.tgz_1476960966590_0.39730523456819355"},"deprecated":"This is a pre-release version and deprecated"},"0.0.49":{"name":"i18n-element","version":"0.0.49","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"15306d47465bea931a9ca8796d724f788d84b512","_id":"i18n-element@0.0.49","_shasum":"5af105f2b9d3884e06afeca151037664dd43db77","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"5af105f2b9d3884e06afeca151037664dd43db77","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.49.tgz","integrity":"sha512-koNl0D68W69D/uwM6S0951hjxO2cj5fo81mmUgpMPCsTt/cNPLO3HvYuNp27aMIDsqH83oQMXwc3r7wR+xpaKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHNLCjzCavIx9lTigSmVQK8kodq4poP+aDs1O4GybO25AiAFv/tXyoRL34+yiQbuprGLEo4ecy0Z9bi1ia+Jx0a/rw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.49.tgz_1476961450135_0.005930857500061393"},"deprecated":"This is a pre-release version and deprecated"},"0.0.50":{"name":"i18n-element","version":"0.0.50","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"d47e0c173dba732e9ca1d405214547e46b24e30a","_id":"i18n-element@0.0.50","_shasum":"c835f14f7b0fe0a180003d93b10ccbed8a1a2f17","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"c835f14f7b0fe0a180003d93b10ccbed8a1a2f17","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.50.tgz","integrity":"sha512-YqIGFW65Dz4Il+kMr13XY9tydJ0VpFUaw1oiPxyf0lpi8O2SSZv7TBU3rpxrv1z4b2Cus64V0kxCpPDb4trT+w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvDW257pYSpI5FnUIFnzPwqrq1s97Td6svFDPUbhEdzAiBbOe06ywesUdQiCR3q50Hknf1kPQRF+6k6uZ45bDmMfw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.50.tgz_1477149559448_0.866882829926908"},"deprecated":"This is a pre-release version and deprecated"},"0.0.51":{"name":"i18n-element","version":"0.0.51","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"9f29643062808dabf5cb9e9b35ff91d6c46a810b","_id":"i18n-element@0.0.51","_shasum":"fd68c8905b3f0efe1e71a7d6ba7d3ff87eaf602f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"fd68c8905b3f0efe1e71a7d6ba7d3ff87eaf602f","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.51.tgz","integrity":"sha512-797+M0MiGymWfX5VWmTWG9FfMKgeAZgG3Nw4j+tytqCiD+kR+pr98iBn38Z3ppBJ81+NEV0JV5NxFkO1qzL6qQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6N0/ZjRr0Lr7WoUMwZCRU6nHvqgegKZRk0Gk1/+34FAiEA5d88Lv5yT6sZ1XjT8fMD6C7leTJxL2KXO4yirVrAq2Y="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.51.tgz_1477149804935_0.8277307723183185"},"deprecated":"This is a pre-release version and deprecated"},"0.0.52":{"name":"i18n-element","version":"0.0.52","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"eae05927ee9f0110e5b9d43a967c438ace7699b3","_id":"i18n-element@0.0.52","_shasum":"db9e6741f1ab72600b230daf9db587d00f6ccdff","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"db9e6741f1ab72600b230daf9db587d00f6ccdff","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.52.tgz","integrity":"sha512-gsgswpKPVy9n1LeDmGIUHznRyJIAJ4eH8hvTpbknMJTOASWgKD4cns2Hk/s8DdVGUax7/bpT06Hh2GGEjfIAjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+Q1QgO01W4pVIv7iLOyX2pjgT+NWHIye4WFudOJAhjAiEAp1m9MV523yCF+ds5r3gPGlJmwhe8kMpEFKNEhXIKwZE="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.52.tgz_1477204172663_0.5269426058512181"},"deprecated":"This is a pre-release version and deprecated"},"0.0.53":{"name":"i18n-element","version":"0.0.53","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"829baf8a9f711e516a10125b971c3c256e113f55","_id":"i18n-element@0.0.53","_shasum":"8e9da141ba7078b1dbd551f19475b4824e97d94e","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"8e9da141ba7078b1dbd551f19475b4824e97d94e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.53.tgz","integrity":"sha512-gD+MgW8GJ198RZ8QbWD3UxRvS/eKlpbcEo+fJbAWqZW26ETNLW7kOI4CULJPLNCs9qcIuFXAdwkUUP/hmf23gQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWRpkh+D2qlztaOQUcoL5TRabpaFvmLa9WgOPOHwe4zAIhAJ7S0W0hDK/l+UpB4tMyUJsGaizvm7fNddkGUWZcx+N+"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.53.tgz_1477212900602_0.2659112229011953"},"deprecated":"This is a pre-release version and deprecated"},"0.0.54":{"name":"i18n-element","version":"0.0.54","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"3a1ff9fdf9bf2da5ab410e8b1e8c3aa21c1a81b2","_id":"i18n-element@0.0.54","_shasum":"290b592e127a3136873c8a1c46e8b06683cf02b5","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"290b592e127a3136873c8a1c46e8b06683cf02b5","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.54.tgz","integrity":"sha512-JSxofVRaU0Ycbw+PSE/xPcRWyRyp/V/ZbPfSzLZLjgpP4vVpMyYp0FP9nU2AtRA0jWTYYPXVYvqXNOD7vFxIgA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzyFVZRwe24AoZeUElKytV0T07oJA5fBxb3XauvVbutAIhALo1mIMwlAXtJOt+PXs86cAR89derC8CmWtITezU+4v2"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.54.tgz_1477536534840_0.9826630365569144"},"deprecated":"This is a pre-release version and deprecated"},"0.0.55":{"name":"i18n-element","version":"0.0.55","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"f54f5a193a8edd8b343f888c94762c51f61ebac0","_id":"i18n-element@0.0.55","_shasum":"e2856f3cf06b7fcdc58577b288206c8a2af0de12","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"e2856f3cf06b7fcdc58577b288206c8a2af0de12","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.55.tgz","integrity":"sha512-VueH7BmxixdSz7IzcDQm9E3SUK+G8GEN46RB1kfKnyWS43UvLqa6Ahgwl7tar9dzKyY+synCy0iiQ9uj2o0HCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6FUYekSq6hIPuJahQITuYsoneW3P09icdu8bl90e1fQIgC3jGuBbdOp96KV2AuCS+n8SW8BRNtcr4yjp2xoylCG4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.55.tgz_1477720671180_0.24434609548188746"},"deprecated":"This is a pre-release version and deprecated"},"0.0.56":{"name":"i18n-element","version":"0.0.56","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"2a0bb9918f5020585b6c0b06b2a3abed90c3db37","_id":"i18n-element@0.0.56","_shasum":"f639c585111e79db8c867e6b02f85d9131afd94d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"f639c585111e79db8c867e6b02f85d9131afd94d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.56.tgz","integrity":"sha512-i2mzEfzNxJPK0TuOqQoJ3uNv8mx7Y17hr/ywFaxYYeq/J9aqyP0296F7iyDJqj1YiTD9Db6fcdm82FDx0oslDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBnbUz2bPRaqUNn4T5MZvBeXemzSPJCxEkaQPvwW/RhVAiAbpHQ9aLSQLFYhXXieJvCjSFc20tpmPcGHdTbFjlkemQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.56.tgz_1477723076156_0.6174499192275107"},"deprecated":"This is a pre-release version and deprecated"},"0.0.57":{"name":"i18n-element","version":"0.0.57","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"a4b7af217b79145d4956e0e0c2d27edc0dbd3bbd","_id":"i18n-element@0.0.57","_shasum":"92e8de8bdfa907f89d27d92dd536d6e1ea3a2560","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"92e8de8bdfa907f89d27d92dd536d6e1ea3a2560","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.57.tgz","integrity":"sha512-5IUc896s17UnqeEhEOsPWf2HYPYNPKQmxNIzkeuh0SGlmhvEe41uLNImzTI3ZCEYkUgYG1cOosu7SQep5TpBrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOSL38Brsa/sMwWZkT3O/q00Q9ieVwxCndGj+rcHO7FQIhAPzCJ36vxmPj0pR9z6y+PcT9lw/97b1CfFP/9BZbdjNQ"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.57.tgz_1478091448656_0.2691980111412704"},"deprecated":"This is a pre-release version and deprecated"},"0.0.58":{"name":"i18n-element","version":"0.0.58","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"c0cfa9f60180fe2f278db51d60818b49f8a7888c","_id":"i18n-element@0.0.58","_shasum":"122d0cc6fb56a75b6fd968cee889f1ab3adb3dba","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"122d0cc6fb56a75b6fd968cee889f1ab3adb3dba","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.58.tgz","integrity":"sha512-oIkH6Jxm39SGTNrmeI66uZspKLqz5etdEMVJvTzfgQXO58XVO5Cdcln2nySufMQQTHd99djPjIMpDWVukFgraA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqjFS4Dkg5HvEkBe0hAba+9gtKCiy+T33EYlmyV8U+zwIgXDCvp2CTH2WAqkIIl1XqEPo7DGvHa5q6qgm/gNjVKSs="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.58.tgz_1478092425737_0.03739064862020314"},"deprecated":"This is a pre-release version and deprecated"},"0.0.59":{"name":"i18n-element","version":"0.0.59","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"97d430c17cc97d870129958590ebaae423d8ffc8","_id":"i18n-element@0.0.59","_shasum":"692c882af9255a6c8351f8e8ee8d84935ad4b35d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"692c882af9255a6c8351f8e8ee8d84935ad4b35d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.59.tgz","integrity":"sha512-8xkGLVglbnpZgVH03oA2lwvwrHwOX4b7Q9mYk25RgO37IcsLDGGl+Sr592HttIL5ZvlScCM1SceDvTI8pEXbcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9eJdAsZYW/AItCVzZn/evY7dVGScZZva/9WClIQU45wIhAJw3CiQvY2KcRJULwGSuarhaAp/0M71mG4qU4Z4AS1V4"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.59.tgz_1478276101234_0.12693300377577543"},"deprecated":"This is a pre-release version and deprecated"},"0.0.60":{"name":"i18n-element","version":"0.0.60","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"bdc9eca5d63e4e46d21f029345b1b62940542144","_id":"i18n-element@0.0.60","_shasum":"cb4c2f6a6a5936c3c03dfcb5f31137956eea6583","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"cb4c2f6a6a5936c3c03dfcb5f31137956eea6583","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.60.tgz","integrity":"sha512-aTOO/taW6I2Zdfu/Y+oKhsFdlAsukIggcPvpsovgYRZCOaoudngijzvcXnT/hJXFCjDnN3uLbH32UkkjUWt3MA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrp5QHzuQw8GkXUDUUegJzVIjs96DVScuheFWmEYkqBgIgMr7N0ed3ChsNHKUIa7lD7QvHYHwd6IaLb7tHIPCiiYE="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.60.tgz_1478276599013_0.7218538529705256"},"deprecated":"This is a pre-release version and deprecated"},"0.0.61":{"name":"i18n-element","version":"0.0.61","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"1327a312f58e293c6f8203a384f09c0df6c379b8","_id":"i18n-element@0.0.61","_shasum":"fd13f3016f8277870302d722eec53e7e9fe3a6d2","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"fd13f3016f8277870302d722eec53e7e9fe3a6d2","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.61.tgz","integrity":"sha512-5QGAshTtsjNeAnP18+92ncSHaOd0UFifKmA+ZhcRLUeIGCfuiBQSj3KZIvPdfg1kfkdv5wK8MVOLpiIsGBJwyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjZLecB0hNy3Hoh5aY6IUERMFqI9doiM5MSDZPGUdblQIgMvefXAZ7KibLmkW0JdHE0FSlDvIfVqb2wg2BKrJ/SAs="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.61.tgz_1478340394601_0.4299587970599532"},"deprecated":"This is a pre-release version and deprecated"},"0.0.62":{"name":"i18n-element","version":"0.0.62","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"0f8dc1f66479752fce97fe56f295e10b3f03a339","_id":"i18n-element@0.0.62","_shasum":"7cb1633e53056c8d190395bdfbec0b17f5a741a0","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"7cb1633e53056c8d190395bdfbec0b17f5a741a0","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.62.tgz","integrity":"sha512-smGaRI2WSRDlsSBJJMwmbsksi07JB37VitfpWRKIWTn03efiMwqnR7670LApJYErpAAu7dmHpoUUMUhCDbEywQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE86K1vDlA5bUYVP4fA/jpxbmalcVu2hzMObjP9/CQ3sAiBn3ZTLoHGrqn67IiKIhjbTwWTkZAWmi/Hn7CANlvLF/Q=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.62.tgz_1478411110134_0.7200158152263612"},"deprecated":"This is a pre-release version and deprecated"},"0.0.63":{"name":"i18n-element","version":"0.0.63","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"4.2.2","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"75cbe25bb9706a541dd5afab58487d75bb81faf5","_id":"i18n-element@0.0.63","_shasum":"2867c12c77db4aeed632ecc241ec2bfa96fb4880","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"2867c12c77db4aeed632ecc241ec2bfa96fb4880","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.63.tgz","integrity":"sha512-FT6pQzp9bkwoqcb9qJnkTiBltQBHLnSbX8KXp6xHq8Xv2sc1FqufrSlojDc+vj7xl30V6ujUIxqHmYSSCG1NcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENVDxMJD0Y2h1sbt9mwDhX0gbQeyHeHxLkpyeVmPeQmAiEAtcd0ENyBdi2caMT5YxxvDg9ZOFrERgyFp0Ws7io/XZ0="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.63.tgz_1478433595912_0.9916893886402249"},"deprecated":"This is a pre-release version and deprecated"},"0.0.64":{"name":"i18n-element","version":"0.0.64","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^5.0.0","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"e83cca310f98088a59bbab4e7b889d11acc8b09d","_id":"i18n-element@0.0.64","_shasum":"e0749290f2bdd852e6ac3cfc77179a1d02a41bf2","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"e0749290f2bdd852e6ac3cfc77179a1d02a41bf2","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.64.tgz","integrity":"sha512-oZ5dYwO/qW5laN2atWwpsIrMgZMPTZqlZvtzPvZUaFwabeZHsy4dM5+ImljPufLJVLkEBKetozQz7PfHc6mX9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgHTQR/KnsM3xreMDsXSMGwycSHD8HKpfWg8bxTC0eDQIgXgZnrThkmtxjGj4e0Efq751F9TlULViOG+WUABWneb4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.64.tgz_1482383973555_0.30287991114892066"},"deprecated":"This is a pre-release version and deprecated"},"0.0.65":{"name":"i18n-element","version":"0.0.65","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^5.0.0","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"3303bee0be6d04ff811f1877be82ff8daf8e4342","_id":"i18n-element@0.0.65","_shasum":"5d7fc240b86a571fce0ddc0d059e91e47ee80b6b","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"5d7fc240b86a571fce0ddc0d059e91e47ee80b6b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.65.tgz","integrity":"sha512-rMQTc70MgItB9FF9POz1yVRAgpwZO5UDU+KNbP3l7U16t0KMeaam7LY4eQ66rPi1Sk1LWT0qzqI8B5F09dXyzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEpn82M/TaZrsT3ELl1En/LBk3EBb1cq88jbIXiwBU7SAiEApDBJCe6XyCze1a9BZpTFz6GHa7ubydaJ3m3EVZ9+Kco="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.65.tgz_1486105156985_0.4360691402107477"},"deprecated":"This is a pre-release version and deprecated"},"0.0.66":{"name":"i18n-element","version":"0.0.66","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"^5.0.0","web-component-tester-istanbul":"https://github.com/t2ym/web-component-tester-istanbul/tarball/0.10.1","xliff-conv":"^1.0.10"},"gitHead":"0a22bd884f3ac361e8839dab1a08ece62577821d","_id":"i18n-element@0.0.66","_shasum":"d878b06b9fbda6d93213b05d631cb67498d223da","_from":".","_npmVersion":"3.8.6","_nodeVersion":"4.2.1","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"d878b06b9fbda6d93213b05d631cb67498d223da","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.66.tgz","integrity":"sha512-NoEsk+TuvS6SjUBOfStCKdi7We2VpCvPUrHJW5jN//M0uPf/zS/TInX+UJTzcV4S96Uq5cbZ5hxAQxA4zh9zYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHaN3BReD4ECZSEJ/mtEX2HZXZXtjxRuNz2/ajP8MgJ6AiALypzNmrpwYvsWXyeQkUB1ufTMsWJzoIz8DtelC+3UKQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.66.tgz_1487832677755_0.3304454612080008"},"deprecated":"This is a pre-release version and deprecated"},"0.0.67":{"name":"i18n-element","version":"0.0.67","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#istanbul","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.6","xliff-conv":"^1.0.10"},"gitHead":"bb50bcdb63a34b03e7c5eb2185375720ee72d1d2","_id":"i18n-element@0.0.67","_shasum":"04ff3200f4984a09657e87ef9f2b84304894a330","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"04ff3200f4984a09657e87ef9f2b84304894a330","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.67.tgz","integrity":"sha512-rhu7FuOA3XiO3u2yOpnSE1FqIMBNUXiTiAMraKg+DsPuObt/jG0sOozSI15MNZ5Cbpnj7TrhOj8BT4hr+SDKPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1DUNneNcuATymLKLQBCM7to674RzTOjMFkWwGFaftJAiAoxxzmZahYhDoGrri8ToiCPFxVQzVjxuoiT5AvupeRIQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.67.tgz_1488444075460_0.8981109531596303"},"deprecated":"This is a pre-release version and deprecated"},"0.0.68":{"name":"i18n-element","version":"0.0.68","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#istanbul","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.6","xliff-conv":"^1.0.10"},"gitHead":"4cfee7cb978c5cda75570aea37f154a7ba4a19c2","_id":"i18n-element@0.0.68","_shasum":"d3091242bfa179e305952a3bee745392130f971b","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"d3091242bfa179e305952a3bee745392130f971b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.68.tgz","integrity":"sha512-eYOOVqXi7zyDhFytH4GZ2pTDImz8FASX7ZZk2jrl5nYG5TR+tjJ2HQbMTVkE6ac7a4tzWMXRI58ThnkE0Zhamw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBQUfuaeu1jMUUdCBAy09HZpbgQcGUUFQV8NUepiGqYwIgWaauvMeGZbJ9eE3bN0IG5iv4kLNqQED+7W+qQL9O4qg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.68.tgz_1488446492170_0.39082461525686085"},"deprecated":"This is a pre-release version and deprecated"},"0.0.69":{"name":"i18n-element","version":"0.0.69","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#istanbul","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.6","xliff-conv":"^1.0.10"},"gitHead":"0b14044eb2a9e7992f0dfe328b2ae8a0d8abcc0b","_id":"i18n-element@0.0.69","_shasum":"3c617977ce5d88463f328a8e96f08bfd14fcb7a2","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"3c617977ce5d88463f328a8e96f08bfd14fcb7a2","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.69.tgz","integrity":"sha512-33ewyqJZ3fxhNdmJGtl+cFG3RO4H7hCeENoBzSKab6cyES6z6Tw7SCkWMU37nxKLU7feIrYgqkaPidqGclAK4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbmAsFbDe0pm8RrACGFo0UmkpQmcGTuroxsd8kFY41dAiBRUGjuLJq5zyrMPMSiwBaS/0ADHt6xbi9cO1kqDpoW5A=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.69.tgz_1488453758812_0.3307345442008227"},"deprecated":"This is a pre-release version and deprecated"},"0.0.70":{"name":"i18n-element","version":"0.0.70","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"0e6aa476971e18e0f8694a0e5d50262f4aeaa556","_id":"i18n-element@0.0.70","_shasum":"63686df1464f60c60d80a48b1317584bdf1c7e32","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"63686df1464f60c60d80a48b1317584bdf1c7e32","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.70.tgz","integrity":"sha512-W2LYF8I2BUJ42HQzYJ0niEHU0bLQ/DReSihyKEpDEiRI/OOB9gezUzkou0t0wSBAL2Uo1XN+hlbPNouyYGtWzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFjzJFDnuVHctyKzRBoBSij6TYXMToTRyGRWJyWHto4AiBav/n1W3na+NSqXzY2eR7cEUKb1lcyPKt0N83TqftPFQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.70.tgz_1488619178421_0.44154791976325214"},"deprecated":"This is a pre-release version and deprecated"},"0.0.71":{"name":"i18n-element","version":"0.0.71","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"fd5acd14055806ca6f24a585e362e3fd9b6d53e9","_id":"i18n-element@0.0.71","_shasum":"4d0d92f7deefa2ee15a10efd1e84cef0374af086","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"4d0d92f7deefa2ee15a10efd1e84cef0374af086","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.71.tgz","integrity":"sha512-oo4njDL2eIXGXOr+zDVGQZ0e6MYPpyEiVjNBaszrlQaRY+osA4o8uLcs7vfafjhzudlDvCcEfZakxEPJ7tMcUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEK3lj2tkXg1UIci+sl6MsL9iJI0E/QGYheIdgA0cmmgAiAngiUTvdYZXOvzcyzReahcuZKHYHb5f1LR+Vg25iY0PQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.71.tgz_1488629057904_0.410151741001755"},"deprecated":"This is a pre-release version and deprecated"},"0.0.72":{"name":"i18n-element","version":"0.0.72","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"aca76e4ad8c908f5c577586c813a62fdd19fc065","_id":"i18n-element@0.0.72","_shasum":"88c35bfa6fa7eec6911d45b68756c53cc2835ad6","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"88c35bfa6fa7eec6911d45b68756c53cc2835ad6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.72.tgz","integrity":"sha512-c6x0ZO2cLkT+rIXDc8+ZX7rnzJJ+Ify+ZFt5sN6mLHsh9F9srPUVG6QPgy2Xo3AinxiH4AB/Kl2ATJt2b0CoYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHHgOINJWOorZPcEPilZU4GYJjYlBzeb7Cx1kIs29yOwIgMqNc8EkoTUiHekZcly0PMtKEGCOJBEHWsxUOgyq4WEE="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.72.tgz_1488782102012_0.6058818905148655"},"deprecated":"This is a pre-release version and deprecated"},"0.0.73":{"name":"i18n-element","version":"0.0.73","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"5bafb6c3cca634ea4f9dddf5959b3590e4289508","_id":"i18n-element@0.0.73","_shasum":"86b9573df5995f001365d4de0053eb1741e5ddc6","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"86b9573df5995f001365d4de0053eb1741e5ddc6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.73.tgz","integrity":"sha512-EKB+bHXq8XUiEbTCVDZH5sGeSjjSTGWB4jF7FkmWd+KkcibGkW1HBP7QrlhzyW3TrJaX84w/LCMzOn0Mk6Q6cA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJgevM0LRq+CFZcPOJMN0N3nGLncWCJ4fbP6pqN6nqWAiEAinDfr9gWKEwAbGFy7+69FXrwcYR4FhniPWGop1fIRVo="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.73.tgz_1488942990167_0.4833158738911152"},"deprecated":"This is a pre-release version and deprecated"},"0.0.74":{"name":"i18n-element","version":"0.0.74","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"5a7e8fb93877552b4198754735080c5ebc1e9be7","_id":"i18n-element@0.0.74","_shasum":"1796d5fb2c527e7197368e961c559cfbff22f4d0","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"1796d5fb2c527e7197368e961c559cfbff22f4d0","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.74.tgz","integrity":"sha512-VSwgsvSfOL1TtJLhde0FapuanmeIrLMlEvYeSW9Ms6gXDAQy0gu+Xu+WO4PCcAu8KU2C3hQW3DyzHdLVk5C9qA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeBC0qUxbliW21ByhGW0zkRD7GBEE391lxUwpybdTVqAIgdtTclFfooNCPAqKbqbVsdTGv8UmSyyBu12+69JpCDs4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.74.tgz_1488967875154_0.7143610543571413"},"deprecated":"This is a pre-release version and deprecated"},"0.0.75":{"name":"i18n-element","version":"0.0.75","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"9c4b017b104190c5b13ecf35e12796921eb0b2a3","_id":"i18n-element@0.0.75","_shasum":"fcad32f1b2cabec3ecb2a31de225678e27ebabd4","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"fcad32f1b2cabec3ecb2a31de225678e27ebabd4","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.75.tgz","integrity":"sha512-ToCXzXLMZNIsp2SMLin9lOfZzvWQ3wejczSF1RwgTilLu0UQZwul7HfhNhtMod5koi9P3gnujHeM+gMAMiKQNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDEnmQfM6RLfFsfa4sePj3jCnSkxxQ4uRVtJBNpNLBWvAiEA0Rpd4FywBPsfmxA2LLbuU7FJ+n3BDX3QWa1FGlHLBac="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.75.tgz_1488968618223_0.6748779697809368"},"deprecated":"This is a pre-release version and deprecated"},"0.0.76":{"name":"i18n-element","version":"0.0.76","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.7","xliff-conv":"^1.0.10"},"gitHead":"44c220c1d181794e34379e3bf755a4e9a2180406","_id":"i18n-element@0.0.76","_shasum":"d33580922abb030aea58af0a9e7df933680e7f55","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"d33580922abb030aea58af0a9e7df933680e7f55","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.76.tgz","integrity":"sha512-EE3GHhovUn0ndF1Wzck02LA3jLtlw+xBIL1Ciq6aKIyGkaD5WOpGPTHaFlF58zui5KELv6gLDefiFY+K/4Nwwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh8gRjSGndwFfdTjT/oN2V+T8qzrfIz55el1OCWTUdpAIgLk8sz1eY0ZZMTHJfofcxkdcv7jR7F8vIg/FIbTcvUlw="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.76.tgz_1489052115796_0.1900386104825884"},"deprecated":"This is a pre-release version and deprecated"},"0.0.77":{"name":"i18n-element","version":"0.0.77","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.8","xliff-conv":"^1.0.10"},"gitHead":"307b261644a3c737da1967b5db5bf61b71b4b7a5","_id":"i18n-element@0.0.77","_shasum":"27c75d721d3cbb9de21c3257c8816af43ff22b77","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"27c75d721d3cbb9de21c3257c8816af43ff22b77","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.77.tgz","integrity":"sha512-qi8uSl+AWdgtqmb1dJlAi86sSrW0AIppqdDJ5ZTxu+tB7D1aaOGKOsu8Hjb6dVDRcb3KGHTlyIsvZ88FJl+TvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQTYH8vRemXn1M2WjK8L4ORzFwhYIR2Mhiq0SNfgQQmAIgMtIYkVTL2gTyP+w/3M/NHN/F5GfAq4gQaXd9aTIdqQ4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.77.tgz_1492263685132_0.20530867436900735"},"deprecated":"This is a pre-release version and deprecated"},"0.0.78":{"name":"i18n-element","version":"0.0.78","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.9","xliff-conv":"^1.0.10"},"gitHead":"65c1a56ce248ba5ea756fd967a93eb9b04507477","_id":"i18n-element@0.0.78","_shasum":"5d93ec27c3189a9272abbe14f87909e5b016e372","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"5d93ec27c3189a9272abbe14f87909e5b016e372","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.78.tgz","integrity":"sha512-X36dJyd9I43wj3Yv150qv8ecu20ljdJ8086A6Bgm8hgDuKnZIXR3ZUPnFEWY3Q0zYHOI5ok7OTHlTFCRpHfRFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAkIEdGztjNlqFORzNs/X0pTWgbVLOhoM/ZUntSAeMk3AiAlns05Ht140scV+wQu2J1HMNJNyOlIvUPWp2PgZPpeCw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.78.tgz_1492507453553_0.18516471609473228"},"deprecated":"This is a pre-release version and deprecated"},"0.0.79":{"name":"i18n-element","version":"0.0.79","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.10","xliff-conv":"^1.0.10"},"gitHead":"b20477523396e5eac20c95914fdab365662515f5","_id":"i18n-element@0.0.79","_shasum":"216138d1c48b92d386489617935be62bcd50af28","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"216138d1c48b92d386489617935be62bcd50af28","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-0.0.79.tgz","integrity":"sha512-BqLUVZ+I5Wa1ItKEoSvJ1JqawpiyYKalQKyrpPBT6uhDFej74Av1jhEDpHiPl74rlxmUdSfT27RuxWGUnId6Ag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyNilej6lldRA0VleTV0aDysYDu0jfkZBMkd9Bh5de2gIhAMeSqpoq05P/gelb7Qz4G1vW3Fux/KzWbYUmdCeCVElA"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-0.0.79.tgz_1494686028270_0.9899613130837679"},"deprecated":"This is a pre-release version and deprecated"},"2.0.0":{"name":"i18n-element","version":"2.0.0","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","web-component-tester":"git+https://github.com/t2ym/web-component-tester.git#wct6-plugin","web-component-tester-istanbul":"git+https://github.com/t2ym/web-component-tester-istanbul.git#0.10.1-wct6.11","xliff-conv":"^1.0.10"},"gitHead":"491d7448d8e80f4d309a02107273090e672c3857","_id":"i18n-element@2.0.0","_shasum":"41821fad7473ed0fb32bf3ea8676ee0785393aff","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"shasum":"41821fad7473ed0fb32bf3ea8676ee0785393aff","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-2.0.0.tgz","integrity":"sha512-p5RLYMs5D5o0nhkywKpUHZzxI0itvTguZ0UszJnFHmqdngnfkmpMK1ffO6CrUUPqc6dgBR4sRndw6BB/MIgmnQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFDlQZ97TG1opkSTGZwcuwYsQfmMkygQhTEU4TYyoys/AiEA1Ta6Qgq9d+OUHLnPA/DVKxXU3YvFDKjpI1mbbRFsVmg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/i18n-element-2.0.0.tgz_1494936553642_0.13284812704659998"}},"2.0.1":{"name":"i18n-element","version":"2.0.1","description":"I18N Base Element for Polymer 2.x","main":"i18n-element.html","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"homepage":"https://github.com/t2ym/i18n-element#readme","devDependencies":{"babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.0","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","@t2ym/web-component-tester":"^6.0.2","wct-istanbul":"^0.12.4","xliff-conv":"^1.0.10"},"gitHead":"33a8e661484f9382dc531ca2c1d214d49a2c0971","_id":"i18n-element@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.1.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-9ZIDc728/tG0QsF3oiH8leT04145nDw9yizACtj42K8cd+6+VTd691SPbNdFf1UT+YbdfzHf07/mBrQFbNGKxA==","shasum":"d238eb511936a6db6060e703eb27cb40e8546c62","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-2.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICd3J+WPZNRXvHc2esXICoto/Nc91zODApNns2aZYv3KAiA1mja8pV4GX+UW6V3//qSt9VAjTGmBpvSOLMI637Rkgg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element-2.0.1.tgz_1517305989105_0.5076088351197541"}},"3.0.0-pre.1":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.1","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"e2f03a539a10c50cc07c32c4e575508989ce5657","_id":"i18n-element@3.0.0-pre.1","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-Dqnpv4nNLgheQ8YaYCzLX1J3K9rLEHMu59p+WfGpbrdHdnoVDCcQuBxBZS/LcMQkLMbSz8Dl4Ktr223OmOs8PQ==","shasum":"be52619f7d98117d82d62846f24e4164160329b2","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.1.tgz","fileCount":851,"unpackedSize":15111643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMD6qCRA9TVsSAnZWagAApqEQAJWp/er9T6bCSsoYgU63\nh/pUrdEMNaXkGwiOu8C+P499OauP/CzSkXsIb7yQ0giqA4xjIco8kmCF8zAU\nezRs1r79sPcZMR1JedW9YCpiHOaWGzWQDJelYrh9kWdYXMQrbFBfLCihdRYT\nFyEo57RVA2ADSzymVAFmr9SV1pJXjsNVPhfjhFZq+bevBs4wxv8xUOZO94GJ\ndwJfTq+tjp9SiByl+0iyQ4Ch+j1SGaUZO266aG8KCjkTCSN/jMM4h3CQToHh\n5i8XDGQ4L40vcr73GVLPVe3i6WULUer7QHuNxgIvmEq3cudeMNmHp0Sm4rQu\nmot3dAVwM87PwUPzTwuYRVZFum9g8G1Ppmy76K6aRZzviGstW8gAUUp+RcvI\nwGicNJVZI4EPt8sX6wPw/Ry0OWiqrx6pIVo6SEQWfPe1dtWYaVsl09M0VGx9\nyGYihwRqU4OHBAiM96YI0exuLQUwBD6XyksZNmdia6pbMBi+wUpXf7ayBGM9\nuK6At+G0lF0adZPDLUur77OinYTwYGf9DlGDglXyLDOELsS2EicQicN3hOnJ\n1WhWqUqQyuygg500yVmr5XkCdCj/dpWoxHN4Hv6FfnpbVN3jt+2cmuY75tet\nuWcO6nsY+SCxZxiUMnG0jEu9q8y87WhZ6vtWGflBZTiWKben6Kxzq96e1Ph6\nIQIr\r\n=uvmx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQITAEmHxqKbd/WqZhKsiCF9tZAeLPo6Mx7vmqmng3iQIhAKBclHk4HqFmQRwaoDm1B2yLF7eUvpOM9xaw53bFOdmd"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.1_1546665642033_0.4380126327717442"},"_hasShrinkwrap":false},"3.0.0-pre.1-lit-html.8.4":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.1-lit-html.8.4","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"8aeeb0d2811e1f0f1fac4e7b4fef57ee30992b9b","_id":"i18n-element@3.0.0-pre.1-lit-html.8.4","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-RVuk1PH3LzsyPs9uQ2E8/CgfLf5dpFMhr1BJvzTBuZXRVuN47E1Hks1H+eeZMjzn4HVpLaznBvoSW6SIz+veYg==","shasum":"2c254c4c4e770f8cd41c6afb129f4d75eafe6bd9","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.1-lit-html.8.4.tgz","fileCount":889,"unpackedSize":15205331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMEX0CRA9TVsSAnZWagAAY08P/RJSmKM0en0+sjbLS/D4\nkqupo4fiF/JisQeyj3VabFoC26qVx4YjDoF26j7xbITPR8tCpWYC0x97MZZH\nd219ma8kNMQM5EZHiCfOSuNChgadp+O8rklAlPxi1unoKAPYHxEqJlhHPk5h\nWp/CQd9NDAu6MGt4KSJxBQD3A6+9yQIm9frLc8BPPEvA6tBM2COvNH8/y5Nj\ntZe7tJF/94ndrUu+uTgorZKWXlbx9oT5Cmy1D2WjXYKFJBmUvX1nVlKSO6LF\nJIJIrxt3WDgq6hnQSt+a5SdS5d69gUysRJCP0qAkC4jlwZH5UYVdP/t2W8G3\nyNODMgW+0uoHomKW1Lvpre3nbS5RaZ3xgVSbNvao+9zRwOaHv+/Cs5RJ7HEC\nCzdHfJTK1uf5Z23RiK21jXjbnsDBrnXrSguRXdenHpjNJJE8qCxTOmGMmgNt\n/SU4GXdHnuFbBsEtdS32C19qVqr0lVk9Yxvp7VjAUuPUwULqx9vmuT1AMC/v\nh9g1RVQ2Bp8mOahtKO0VEQMEUj3kQHy7/OFZyaS6ns2KTQND47u3Z6vp2/Dn\nDfgD/nVknvS23hpjs8d38AVmr+XVkmxjX3BGanYIw1SQ+uLsu7V0JPVZQ2JF\n2E6OgjJgT6fdE+h6LgNwW3iN4J4gwELrGfBM6pBJ/2p6aVP8Pexcy7o9J0oW\n/pnO\r\n=e6w9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD85afqaI6/g2daw/XJ752wR6ZtXZGp18dWMKtRqeWjRQIhAO6rz7/0tBmVjWck67LwrX5TeqnFztGiySxxyvv79tsO"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.1-lit-html.8.4_1546667507598_0.5672404536581799"},"_hasShrinkwrap":false},"3.0.0-pre.2":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.2","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"cf37974b6225b200294521681540f0c2a048eed9","_id":"i18n-element@3.0.0-pre.2","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-dUMfo9aVndEMH8kCb8RC0d0GoLykLrd710mr1tI35tlS5tuj3SJfO8GYQin2axolJGi2AU07ycbCzL9egO9NjA==","shasum":"07989a45d2d7e05f039a6f7a6e9f87e9afa8bd0a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.2.tgz","fileCount":932,"unpackedSize":15640125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMK0UCRA9TVsSAnZWagAAZYoQAKQMXtEsMgaAVaHTuy3h\nQvS4ndxJwgXju7NLjYKvym+Kb5O+oZgIOiHS3ZJHmL5p28c2vpOAmXypTkqI\ntDbDS22vMc3R4Udw98eFS8YykPQ2ytUl/4jSrH9FDTtgGUxVWeGOAharv3yx\nU1f9RWpU6KCIpY3ibYgaSGT9L2CocPgT4XNhUgxpvRfeBojEEOIZNHBqG3u2\ne1Xi1seucV8d+MtAXi9pwjwFwCKAJrjou2W/0H1Mtvxs1bNWlfo05YNxSLdX\n+HVmWXvIZ+fGs4+rj0bj4p26l6EKzdt3w7ogrNGuhXMl1PKDffTqq+QYaWxa\nBcBDq9hh3UbN8u8LEIvZ8srIWF1cN1lBX4OQVuFq3cin6kgI+30Vwq13nA43\ne9Y1uQQP06dOZZiggiDK4aFTObBi31dwlqnGmhVB+6hft3c6wvpKccxuNRFa\nR3wv9UzpA+QXqrAJbRAfALEX2cCX8LnVIhfJhDUOryRIyLeUz16BtV2FBWrx\n2o/feynrPooP+4x8scXYmbR/ttxJrYwrqkzAzWHHAQeyJlRUaBmLKbWoH7CW\nExNq/IMU1N24XPGlNnpAKzrqbNEjOwU0B4l9aNOBu1CFEYFHY3HaaetbHp9Q\n4CIQuQF/SlyfUawcm9Pc7dEqW9BjPem6dECgk5En42dps0J7tj0hExb2fBoR\nxowp\r\n=nwyO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCympiRlJTNbRQFJ22Qru7CqhLICW9GqM9Gp4nHW2czZAIgV5yQaONshFApQT1CP54j0buvkv85N1zX6bjG5vIjB/c="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.2_1546693907505_0.27229785045447086"},"_hasShrinkwrap":false},"3.0.0-pre.3":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.3","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"559fa817ac9ff1e62f4b83c13ec5cf3d0c8f6175","_id":"i18n-element@3.0.0-pre.3","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-DV9gED8BhmW+yEp1cKK/t9g+e7yhoKkDIyWEssUFsvhejzaFUqR8Wc6pf9cb6T+iiDL1tM01oRJZ4r+6eljhGg==","shasum":"1a870126c4b7200950872bcb598b27ad827c9740","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.3.tgz","fileCount":932,"unpackedSize":15640204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMWXqCRA9TVsSAnZWagAA0m8P/04N+ABOSM/F2sOsqqRp\ns/aW3/8QdkZvKmJkAv7VksajMlwhJ8Aa7MNhYk0/Kcj6ItCucBOKXg974M7Q\nJrGUWtSsHc9L6tjdjIgbtJrk6sHGjMXzvE+iw4WIGqFMYPypp9ahtXB7550P\ndTIw3msWGHOQZCJWwFdaPNqkHJEcR2KP0Wx96TH/nkaDqA+h45ABJKs67z1A\nmS0ZK4aeN8VJC6kep2U6nIsG2gP5WHqhJzMCkFSXTGCSfiXRMYuL/3jU3Kp1\nDEA/qLVzTGNWRhXpmyDdBJkiLLcJXoz4Nb7Zh8Nl//9a93KWy2cGQJz1MAsY\ng41YEe52Ln7yMEq55YODYspxkTrZZRpYR3UOoKXTUqQ7ftkM8CIIp/Hx9kTc\nNcl1lt1uQ3vfaO9wM7hbjpjOw+q9T7K1OktFAPx0iip2MGZxmGdQFygpX9qM\nNvTX8i2zWc7RHAyji345vOb488/cKg2Nzmi9rQ2j+T+lZ20irpeB3aMuHHle\n9SVb/5HDbOtPVn/995XD61YgusH4FJhUpCwv5S239YR5gHCOnet1TYH95cHo\nbihHUbgNrDCEL/y2qDcwiUChUu7ut/WBl3739Zo90O43t+aH5P/GryNAY7O1\n1qU15ihPzeCMJqsVHGJwnc8yv5u/jmZ48qH5LjwSvo1dH63q9AbErV8rbc9O\nij7T\r\n=gW4Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH3+2BfJN4LNjZjyS2V6uS0tUcWdsVKU3pW+nlrdj94zAiEApoVKeMRhP5cUd2VKJaj3wzXaZ8hcxEanvoYRASpbMxU="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.3_1546741225969_0.002352517914433916"},"_hasShrinkwrap":false},"3.0.0-pre.4":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.4","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"a44cac81964e85e896c52936cdbd74bfc59d832b","_id":"i18n-element@3.0.0-pre.4","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-Mhk+WBZDrP/v5TKcyxfTGhdem5LRvTKudFhTpZoKhsPbPE/UWiOlBjn7HDPqWV7vg0EePha4BwpAOrCLXcdGwA==","shasum":"208959a1402479b8c544902b0d365b892694077d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.4.tgz","fileCount":932,"unpackedSize":15640468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMY1VCRA9TVsSAnZWagAAMswP/jk4/jFIdD3++OIVEfqp\nB7ftvsuHJd71SH1/VTJw85cm1p88oHlx8o+uZcHbBhj8NMmpjLXX6Fvnnnpg\nzahdmOWJHbUTBckjS+D+NTke3H5d32Is6FkA8zkcKYzE/9UshWVWfwkJsQAm\n9qtwG1E0wmeA6IQFojV3PA5/o6uC/3CAu2bGX8XhlCoY/O2zK7EUe6WxbaZP\nk/5moNGF1RWr+qZE9Q2nGOGOS+74r4bhkZanpjZRaJqEprtvgbE7Zt1KT92q\nyFTlJ7e5xLQBB5ij8bWJgEOfi/jM0WYsmrGRh9MsjrH3OcNdI7oZyyVcYJfy\nRiM2ZIxxdNHLKEf73EA2tiYDmz6jbo+sHbSfVUtCt4VEMP6Aa6oXaO0AbOy/\nvjU0AwKOyB4FdRNGWHO5+7Z3i9uT01xIkYzb99v2shN8g+2YyXTNiY0ItDNK\nhScxC43y+Vj/tu9BDVCVo9bPqVomXw3rPV/8jqhhjCXkul1JNCo+a5EekfrW\ndU8FCNcXGGwYUwJxoss+C4QRbVE63iALYhvDyedwzMYCeY1DLl+4Z90PLkfC\nCDiKLtk4g+6jRqcfd2wUB0LnC4Q8ZqZl09vqXH/AhxCKHdXhZxXfqR2j68Tp\n6M0frhBpPB0z2ce5gxMYz2mdDGuuVDvCZlld0E1HwQlrxvHP36I1wMf7F5PB\nRMy4\r\n=oe5E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDllZRiPpJQ33cwRn/f4AmeYo4L2YMqMXrqy6zTpdTh2QIhALhumogN/+MfMNzc9grp96cbwILfnXRcYiljlSxiMSjg"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.4_1546751316920_0.344302506569768"},"_hasShrinkwrap":false},"3.0.0-pre.4-lit-html.8.4":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.4-lit-html.8.4","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"89a08004e67305ef2afba275c20614eda371f1bb","_id":"i18n-element@3.0.0-pre.4-lit-html.8.4","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-8rK8kvainVQLN3ZUpFrvA0mORtqEg7MHwL9gE4gQRUWO4RQVuFxqiWy/LODOZEn2PETdW5wwjA9YK51/KVo3uQ==","shasum":"a332bfbe62cbd858a83836f74f3f99da5f7f0cda","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.4-lit-html.8.4.tgz","fileCount":970,"unpackedSize":15734156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMY63CRA9TVsSAnZWagAA+HQP/jeuoHImFzyJ9RjVVhax\nTaQqtD0O5ohAKa8jkrnRWcdBRtmIJXggnBMSCH8RGd4dMyY9OoshsnIKNBGU\nDTa0JkCOkDVmmt54vRQzUekI7sud5O+obge8/5oUW7wuouhTlUe1kbUS009Q\njRe0+dmjpT50gKM6OkytWlfzRJ9v2Up8Gq3PUMxoVrC0dGkuxJ9nV2gvUZZ1\n8RmMhHj/zds1f+SHmMA6fDDtuYk/bSgG7d1id+j1GKP6q6wHfBD+4j5Poi8D\nXu1YTBSyGmw5Vj4h2JjBlMq2E5/cC/L1PYIxlz4qqNyWT15FNy7JDtqfWd1z\nYYou1gAQpm68pI8d4jVWkqzWgt9/MMDuygGPW+/f4ZE8UZt/lF85822+TnSG\ntbveVPzObCsM2YSeuoKTP/GSECb+1aXJDOgUFtGeL3oBQg1QfaakviuP5BmE\nEt/hepe9TPJj4VLJhaaS/LeV9a0e5yemuvwX19rwT9KMABB76I/7oQZkjPnJ\nIQLGBI23E3xZqCHriVG8Q5mTtNcFMjrWNuIIpm8NrAydU4SIRUu9qNqk03JY\nU5v/DfbwGNq07K4w9xrcqKi20Skm42bOnK5SbbVtxZOC+4034rLD7TuOc5yN\nvXHdR7JPKtOjhJ6mxGnptSBfgtmsemcxwPcuvyJFZECyRFWpCWXH/9ke0PO6\ncvPi\r\n=XbqN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZthiMajsu2dXrBJoxWWG1MNiZKMQJWbEa5BCgtAi0FQIgMf6sc7Tdv9hVq4SngeOOsyROHpanGTWdFN4PHw+1WhA="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.4-lit-html.8.4_1546751670888_0.9570024429433699"},"_hasShrinkwrap":false},"3.0.0-pre.5":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.5","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"8e041d7c41169b3b3bafa77cac7f84a4efe097c8","_id":"i18n-element@3.0.0-pre.5","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-q2053H7N5f94sEki+llCPBiegHIHCFDfT8JWy6N+ln232iYwBvxbwKyS6NluI0XdYV2sGHAzplQ2Gjj/7XglXA==","shasum":"7a9e550f6dedcf8ca47112259b4e29271a1040fe","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.5.tgz","fileCount":932,"unpackedSize":15640863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMcDqCRA9TVsSAnZWagAAuCoP+wQ1ikA3jeURk8uRx0fN\nUfWBkXof0NH0SdLLn0TKUtTkT3CPC8tUO8QhT9qzHVs10CTssMxVqaiTr4+1\n2VMht3HqheIZMSKLMfUz5bRetfuhebR7kIFV/WSwUqSJydx+A2nbrlju8Udc\nZ9mTj5i1wHbsSQN3+QOdgK05lrYH9yfDr9t5zUXTNZFj41QWYAw3pDjIT3/n\nBBSGr2zCG61pk4sWGvOSSq8n9vxtgQo/FIdnJ33D7ipRWnjXVnhImY2X/g1D\np1peoXNqEaCrRmSln5ScwF/dTh/P+BPCEQg2N53evhsT+7MoiNMX0gC0ZPbh\nVNeYOq2e+jBJlEdHcZ4BnWh/StMsZ5gDPTCwoF/PxdIzMzgtNXcZv7yexR54\nwVVR+QeU2fFu1oQRMWPS8FzzQfmbCkU/42E7GIfKSzpIzibMHDexeyu8+iRF\nx+EpPRBLL4Vvi7b2e+AT0I6SIbY1n2ve3+wc37PjRNeVZPNoS0zDkMUrM73o\nCRHkhU/d4EIXpNbxyD+d6JE8PSBdWxMNpPFD/1xN+MNoAmqneBIRIIfKsIoW\n3/6liwGDg5b9bxF8ZW4xiJlKI/m0scuHeQtEF9JIRUFuSP7XzzjWT8K3Xekm\nVUZ6ZDC0nwmvZ3XVJHQfbuh4WJzqR9eAE2V2q63n4htDjmkc3uR49q2qaeTX\n23EG\r\n=qWzn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmQL4wVCTzeQFtJ6BEfadtavsafDi/e8zL9b3yuVkCrAIgHuM6ju97dyCrOLQ2YJQR8YYocvkSk9R7HR8cq83g+so="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.5_1546764521715_0.1914547530822197"},"_hasShrinkwrap":false},"3.0.0-pre.5-lit-html.8.4":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.5-lit-html.8.4","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"0fd1ffec45a396c8d6f7a300550385e870f7431d","_id":"i18n-element@3.0.0-pre.5-lit-html.8.4","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-Vlo4fhJWwKo7OJ+giYOzka0QlE+ybjgyMoD2v6GQJHUR3QD31zLvJ/P6oVUw/6Z6q4TIO2mPHci6q5NLiKCEiQ==","shasum":"22673497bfc27532a4ffee2bead07239733d4e78","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.5-lit-html.8.4.tgz","fileCount":970,"unpackedSize":15734551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMcMpCRA9TVsSAnZWagAAoZ4P/2ymMDTPxf0MNULNlkM+\niMXfnpFJ4MhGdw+f+eX9okulKHhWW+1midCe4ok28FOwYkhRWDr2qryLCqfZ\ndGT8qZqb4+qaplGDIKsadZpWyyNYQXi8fvegwLqsRml4Di+o3cJdpaXQnDXz\nRBkQtQIsVRI6nxwA0NBpFxXHy/CeWUDD+AgBODBCLbrJVUssWOPHlX05ukKF\nlqeOCk1cHoTf02nbBhQJEB3yiduXL8O1VtAU3kmiAQ4vOVaifaMTAhJtJqus\n7dg23JOqUkH2GQNZhBoKLoZKZvngqdUPAo/eqYeVXlt2fVUJt/CEkvXGtwiL\nsaQ+bJc1XvlOrKOpvNBbRI4BGYk26SsP+0ofE6qQdvLoSL6JR3pUCPoNKACu\n0brZfv9CjVM2lQJDGODEX0Jv9DoWsKJWgEzT5g4KluzesudhmjChcDt0vAIZ\nOw3YNg0vJVAFn655Htrm2xWjkh3Lj6TitVMHE72Auow26rvrgV3N2UhRs2gX\nkaAg2MW9TEtGiqJjPPZ6L0jQ8+q9+64Q20iy1AmDMcZhaXiN3u/VYKswwMV8\nJm3ByalwxSXz1nrTUa8Rn3npX0b4io8K64vIKLkl9v52haAEIyMrUapiOTve\nNWZlGbJy5TpREzRmPwF+sy8bbv7ALzF8IAkYIOweh5/AlI3wAaMkFHoiH4el\nbCLS\r\n=oTBg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQxwlGjd169eeOmHkmM/Ksxr0aBti9Bs0oYgnvLKzMEQIhAKtIgxScgkVG4ZYtCh9JVYYnZbPDhLsBuOeuzEGaYoE5"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.5-lit-html.8.4_1546765096899_0.3144092061830406"},"_hasShrinkwrap":false},"3.0.0-pre.5-lit-html.8.5":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.5-lit-html.8.5","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"e3b802b3c0ebd0482d1873d28169ed2adcf85935","_id":"i18n-element@3.0.0-pre.5-lit-html.8.5","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-4w1Ux/K1eo/N4kDiZAmo1UpBhJlpHBeIOaZEdmtr3YdSSUBQlmyZF+ThZfv8YUMCwXXvjLZyGatijHrjpv+MSQ==","shasum":"93b76bca0c5ab7a8b6187e5d16299cf82bf681b5","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.5-lit-html.8.5.tgz","fileCount":970,"unpackedSize":15734559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMdh0CRA9TVsSAnZWagAAI2YP/2/HYMTsSZqr5HNhbozp\nKhqhQOaQ7i351vZWk+OC74gjPMC2lbLOVnUi4SL4uRVSgUmz5d8A1/g1qYls\nehfcmey5g41w1bUilzx2GYGqrBxmdtmcQADRkFykekFF5H+PX8Dimk0GXyRr\n95OhpBw80R6fx7ujeV9UXC0oUxi5Xh1yIDPjFClAx3g4bH82e1zOm57mZRhB\n1zyPLXk+Il3wmHV6v9LII4SfPiOMe2i24exCcXLHk0lsnMIb3QeW7x5+ajQl\n307nv9bvdrf8d3l9autgt9o6fneYwP2fUxxZv1qL8LGSTIeCI99F+/8NTd5m\nmpqIfFc2xRmpu44Gm3C3Ms7yZrJptUXVQrDiWo6AJZLSZXeak1was/jpRIsc\nxsNXI/MYvQgxmdiwokMH3Fy9wfNiYvhoObh9peYz5M8hNF1J511gS4d/pmTw\n5tKSKEEymXxUztgyuTttc0UtKYM2cC6iUGJsEOs8a/2bbMuLHg6je7wJkpRj\n27b/U8YnlHYIX7NZDJX2e5YpMif+R5QShN17Lei9tK7oADSL9fw5FwZL0Pmj\n/IxxtZmH4TDdrWP+1qduGXZpjX+xWksDT7kzcoeB/HO0qgauZhOFpcc+1Kh3\nPQj5avvEgudmkXQclLGyGrtCVZGcxh2qk2US0i7zcpwKKHJnL4anMLSIt45D\nTqWD\r\n=txNu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSjGp8h6qU30pKZ7D7zhYQschm6I2PKguGyr6T6OYFdgIgfnkAs4+N3SN98XGa7ClMkWkDJqTnrBkKRIfcOTVTMR4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.5-lit-html.8.5_1546770548051_0.15508757345166968"},"_hasShrinkwrap":false},"3.0.0-pre.5-lit-html.8.6":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.5-lit-html.8.6","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"4e6af1e0ae654dae757730db0ba5609f240d9bb0","_id":"i18n-element@3.0.0-pre.5-lit-html.8.6","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-4n8rAYrfFZ91c17sucvlmRVCmEoXouOvoXxv37fKhZp8dAhXjGqFLjQ2e/CwL4voEuANUl8TZ5z/pNv3QGbclA==","shasum":"2da9df7ed0d02b32441847d71fe8505091928ed1","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.5-lit-html.8.6.tgz","fileCount":970,"unpackedSize":15736086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMfJhCRA9TVsSAnZWagAAFLkP/jEobOe7YnYtE2uTWFrJ\nuexi/8ktLloOvNI3XG3XDOdD2fOuVlElYnv/ydlatoDRhd9h9qpMmW6/aBJe\nVm6jiPte7+4bEXvmB8G4/dSTPCXHu/ULV8bH7vss2Jz4W7Y4HT/NdWxk6G9e\n/xmW+sMSUdHnPq+jIw5l47xBa5l+cCTzlt5Mu9mYGLR5w3t19Xe1jeVVwwJ6\npowlbtyEFvd4KapQ626AiaLpG9pUzaOI5U9ACKL+O+wRNXr6ZXosICtcDwJu\nXxD2fHPeFQ13IOpqPUs7b67yHU09OK/k/7y0fml4hDttL7djZBb5ug+zhvwH\nk3bqgZlLYEUpzq6+LE+GpDJSuChTfb7geQqQS+0uioVotpeFFbC8Iz6nwrVO\nU8I8gjm9sXRxXgN1caVPFcwGkPMWaCBjzb3hkL8GsKf5pdwKFMW28/hJ3810\n3F6oikNSYCL9nNLBVhy3PnbP/dEzp+WL8dUVTOcqrRJo+innPjCJmdz1E6Gy\n8PXeamVz98qY+c2nTeYQLMpalg1NLPHLavU8rwlNpuVASQg3GCTXeb7FK623\nltKibzxkKFq8oZami1gvy53iw73cbrm6YpVldENbXRgIcjdhHPpeE289uR8l\nBE9r2OrhADntMNq+9EaaV+X0/P2i91eAXVJH/MljYwxnXN1tEGYSzFaYASA1\nAmzC\r\n=Ir5p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzbp61+Xls5XB27DLt/rhkLWKVFLpaKqgrUmrExw6mnAiEAg2J7MXN5DPa67eLI4AJJjZpfpbdtoZEFTdDtLh7EI8k="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.5-lit-html.8.6_1546777184391_0.517427340858736"},"_hasShrinkwrap":false},"3.0.0-pre.6":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.6","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"11d39f79819c29d6fdc691ffb5d3c320a69b35ef","_id":"i18n-element@3.0.0-pre.6","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-a61KZxPcWJ5XvTeb/j+KJxxYoC1CU152D7R3GLYj432V69NZTWZ24mTX6HV2LgnbJ0hYWbgrS3gLBRH4iNuUEQ==","shasum":"6b8f995fd6292eee2ca335c1ae12e7721768cfc9","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.6.tgz","fileCount":988,"unpackedSize":15761299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMf1rCRA9TVsSAnZWagAAWHgQAIGDkXC15jJ4+K1KG7yj\ndfxgHkBQ5+Wr3t7aBFvZAaJzBNEwQ413hfoNwEWjWebH82euTTojdmvNS/nG\nfWRPvBTRR/jqM8Qv4ATUY7f7t5cRd9JdL8AHM0/RhnyDLy+FaM275y+aq15I\naa1g6VTVRC7z9lMR+KEv7qgWq95Y8WMR5mAcf/ZqRMTlw2CD7dhS/JUC38FM\nf5aAoSI5GTRAiOpjRnwQxx7Vg4SAoYlYYmKfTAg05PqqAO9i4h9ZJfKuSxAl\nJ2dnjtJSxQeBehkWPqJ/HiDAZAndTxODXq7XyMuJ0SCIiiyLCLMJniVJUAOa\nhjnn13yErkGyndtWr35aTgq3kQvcdCdXscGvHUu9A6VKcUQDWOqfpXMbJj/D\nJr/Deix10z+6leSC8mm6e/cSdhiAGK++xJj6lrj6iPwya9Gdfn1hRYSD997b\ncYH8gjfhwHulhRMnlh2N9Wl6AdS8tUh06iyxFB3+CBDpz+QelnBxt2xbdDoX\nRF9KV9Hy2uWL0dut/E4wMmWzYQPnzpfoaRaU7jtRkHagqPk1i9br4aqBrybr\nWZxgn3JFqgyoDIk7rOGAIqPTtRm6dgsJA/LtqvU/b6lut7IEtp6J0HcayHFj\n5iy0/Ks/bZryrIOTJ3r2HGycg1OgxjQM+G8ZUQVBkUgNGFYDDgWiSmMveNhj\nQoJi\r\n=D+w4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcp3oWcY5RGRnHV18r5z/RgMtT6ZWn52xc0Yfo/aX7mAiBuhjd2uWyGhiMHlVfZtCJzsj8qUlYj7cx+MkYBi4oijA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.6_1546780011029_0.8036937116610179"},"_hasShrinkwrap":false},"3.0.0-pre.6-lit-html.8.6":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.6-lit-html.8.6","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"596f1150e5182324939b32b3029aee63ab14ebca","_id":"i18n-element@3.0.0-pre.6-lit-html.8.6","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-jbJOvEPIzPEaNlUdCtdcngonfx0iLlycNNcyE2YAM0/Jt/JxPI12qaJDRZZmWoPgve37iYny2YRlO19/IxaHcg==","shasum":"9e63b778e0b28d38fa8590137ed46206636d77fa","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.6-lit-html.8.6.tgz","fileCount":1025,"unpackedSize":15834005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMf2FCRA9TVsSAnZWagAAXmwQAIscDcpC2hJ0bKHX1qwB\nWrtTnTtpq8Vn1tIMNBN7yeoUda29u7gkCcqWUaKNKiXQLbn7wJKTNUsx3SnK\nszG/KzIXE/Af38D0i8HPIxE/iyJqUPHwyBg9kd00yCm5INZAWvK/+mHhBVmC\nYp7lX7ZqAXtCKxLFSK10tB6LaMB57kplrbPjITSQKxTkKG258pnyUeDdYYtI\nhIU3mleVbCMhiS/7WEtpIxbXxdK+npEYb+1F1eiet4YPYcjZD/dwTbySGvvL\nSpt2WMK2F43BxUwgylJci9dDtLT6omawCAXx8o9fJNY9ocZXgc6GV6ja1pQB\nq9+m8okubc7c5nxVB9JpR6DUe7DgBjbjwJqvxy9EluUPDsXKcDO68sW5EZqv\neroDoFbSNq46lvGNpuss7PkvRiaEeiPqXFfmzJjuyO4jRJY76v6MzZroVA78\nE613uAU5mFw//3IxgCmQLVDXb+kvfy/dLgZQx7P7cr6kXAJy5BeoKnM2S9VL\nhZA3eJRQKsinPFd710qAVRUQD81jZbNsao/OAvyGA025e434FECQ0K9oL0Cl\nwYDJXaF3HpHEYy+SLoRMYeTefWPi3Rnds7r6fTZ/WzItxEOP5fcTlKoDXf0g\ntqcAoUHkBDQRzh7yh6DheZauc0VQQyblC4w8XTOfNNj7A1Q5GVQoE4D3ru8i\nkBoA\r\n=An2N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7MUV8QxwgtUSooOu/tmyxRtanL+ryIwFG7xXuBnkj3AiAbrOxXbDUVOfkIpvoZf0q8NE7TEZO1K4PLTnhIDaiK5g=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.6-lit-html.8.6_1546780036942_0.5594306081349127"},"_hasShrinkwrap":false},"3.0.0-pre.7":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.7","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"781397f8a4f513e4c9021b4e6b8842ac88ee431d","_id":"i18n-element@3.0.0-pre.7","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-uo7tgPHHNKfTsNzNJjtVRIGPlkS0ARKvswFI/M3oKN4tdj4nlcUo0eMDJPKxQ28O1PbZNIrQzoG2rusJjUEvdQ==","shasum":"b75d4002206b02e29f95c4102e36045e58760a88","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.7.tgz","fileCount":1112,"unpackedSize":16550751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMtvrCRA9TVsSAnZWagAAEAIQAIe0E0XqCbOYe4jeVqqA\nZ8y98Yv1fSiykPMreU91trU6FEeLwPE5ybWqaMXQENf7GOvLSvo7cy/oVniI\nJ7eHHfkO9Ea2wUN8w/JTLkpvm5o2nU4YXyB5Uo/p4iv+AGj8z1NeadozHswF\ngs36HhsXOFj8Bv7vEV+vCvBKwU1qE+V+4pSHgoEYckFkSQbMgxgxe7ilfySt\nlZUz2RuX8sn2x/tcnHVebghZuCS3la6xfCDaclTXG6cwO0ymi6WTs5xzeXEj\n6SS11Iu+xvlFohUmdShdpEtw+J2keYbv4vThaRV+iA2hMjnnieWWqeneKqHe\nOHrk+/UeHSKN9erStyLpVIqBiqou+Wj5V3RbFk6v0MH/r/vbXQ+7h29MKdOF\nWR9rzk5aGTaIj6YkKf/Vhd2kBokWnZ9c3t/MM+7nJwMidlu02RX1jJ8k+Jdu\n0nvD602tobXA9BZ/BhJOKPnXPQhD9CXklTPgFzAQ1IgQluumhtLHWUI+rdid\njmwDIk1S62p1OjxWprndMJnxwoLPXcSKP5bEpU9XMJR+hLzkYI/OmfhuvDtt\nb22xKpdlySaMXXZlpZq/sz4THY3M7uHT+Upg0n2KN0UhykL4qZUPkVuUp71Y\nrpP92M4oDmD2zHWu0aGQvZPYGwcSaCL0eEaZFXbBkA9NmmrWB2JijR0o8Nxt\nYtwm\r\n=Wbw/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUKuc6YjmSn3RPZuUiZz5aqhj8ozEFFvi01btdIJLKqAIgedNiHF1PrY8DwPmI1MoKXb2AYZctnBLRViCZ3GNRhvk="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.7_1546836970892_0.030898626600721624"},"_hasShrinkwrap":false},"3.0.0-pre.9":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.9","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"36ad98eecc6158c8b9b8c51ff7840d8c9b710871","_id":"i18n-element@3.0.0-pre.9","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-ow3Jsr7h1p4dskv0/Frv7mADdt2MuDxDzCgOqgiUH3XLvkZhezmw71sYJX3Y8C0lTbI9cY9hzJ2l9Wb88ZVetg==","shasum":"f851be521c0c69ed6d5fd094b649795b6c9e83be","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.9.tgz","fileCount":1191,"unpackedSize":22127620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM0uYCRA9TVsSAnZWagAAwaoP/2A3qf3pjOxwslMe2Ob5\na7rp+Ra6iM+/TYlVmNt23xh8LEZrbLOM7+tRHamAG3zqtyX4zjBYEry4ctWH\nFeFx+6rlDpimJKwfe7ln0BZQMhepfuETCzub/81Ljt/368LbsRBS8uZFEv7j\nIT8J5IhywkErobCzWHlCHJiqR7i9PyMesHOL60Vys3AQHdRVFIa6N25jrAyi\neI1mShhFjjVdpkhRw9Vn+gCRKHIoP366PsYpXcUATOFEq+pFYSthSJFRlx89\n3UcPp19Mvj210MfISN9XW39ng2/YlbLvp5nF3Vp8sDtryjfNda6Xfos/JcPx\nRHBW4s7IZDLlstC5QEYGP47dJs3S6bCxb6RS3YUlu/4EZtYgAzrqZ1WiKSxx\n9wpmYWR0nN8ka435ppSZVu2gSo1s6FE3f+yW09hDI2/28RpNnPH+brAS4MOx\n5JhELv+iyRyqHPgAxqgMKwBL9FSpD1jg7FqrEx79WGhXQnVCJw0rvLm6MyNa\nWJLyqvhRUID6qxXcFptFYTIuJfvctuj0Tro/sX7rQaab/OAa+U9pEjcARdpL\nTGksf33L7gm4OwtiWXNCeGlIzUY7OWHA2p2kPfmZTXZLe/piaKKSk1D8JZ01\n2mBCbw8At5FuHOrh87e08xPQQiNLgqweO4cHcPl4/4uiUoZgVyu+hHBxd2+N\nps/R\r\n=ytij\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeFlrGUuf0Hoy1OcKO04Jiw1aJlfdyWwOmQedfhOb3dwIhANlp6sI73iKKsaRRWy1L+FY/XegM9AD7QWNa+i4gl97m"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.9_1546865559750_0.2638894143394446"},"_hasShrinkwrap":false},"3.0.0-pre.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.10","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.0","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"1d3205154b6d9996c945a9ee4124e9db9230fb2c","_id":"i18n-element@3.0.0-pre.10","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-L2y3OK+bkg6CMAG826+wfyn20MaDN0DeNkBBJU3g61Vm4gVmkl+1JpBJU4oI+2yAIyOQqR/6OlGebquVa6mLbA==","shasum":"a48f3448e41ca85d6acea1d723731635511b3070","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.10.tgz","fileCount":1191,"unpackedSize":19543476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM2j0CRA9TVsSAnZWagAAdKAQAI1xUa8bb8R//KG1k0AA\n8JupAe8K8mB9A12UPpJ2PwsaTxrMS2b/SebqQjAw0KzswNTXFIFv69G5vAQF\n+bqQEi983+q6Tfj16SCVqvmzXX4+yzbP0EOQZCHjaB4WHIE/QzBgDuJm6OYU\nxvxrUtqJjU4M+jsX/wilMbwp4HtM/YVBShnD8sacLHH44SwlUTO5jwRn1hK4\nXwXi8NCAISpOMnt1CN5Dj4Tgy4mcxoq6KMRHLgjzS6ZaXox8Bz0cybtGDyKm\n6SVqjLuL7GV6yKzvw4dAER3ffrlkdEC4J+P2LF4AXZLSKfJ+c2qVn6WprQJW\nUj+oUBOphAzCB4+nuneE+44IAf2LHTbTwgC31cYe3bxucCJKIevokm3tgnFN\nLstnJ/jPHE8k+EbvgVbugY11BZAa+PjtbJ5UNlOn8xxqchdZh1cu5t1RX7Lk\nE/SFJrVPrdSRnw7zme0FpTp/iDF4/V2Zr2NndiScTBJh1cMF/8c1TFzA8Wlh\niz7QP0ws3Mdr0XBWYwaLLIefbU1AX1P2Q4ayT3jfqvYs0yDWBvlsCXDUQIN3\nAyc0lWlLq5pAaeQLZgQQCooyciZXhEiabx2pldbErcuU5vYj8cwF7VE3+GGO\nOE8RSfo6pEzOSGxYzlV9gvk2rjzDt77opL1gtIA9FqTVeoh0efPP2zv9WskJ\n2Dyq\r\n=DX6I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJu7u0fbKc6k7sk9PgESE6adpfekTUca37S1iZ3m+3IAIhAOuzgDB3WivcX73b2+Xz/tLpLPwNiiPCTdw99Pmrh+bn"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.10_1546873075596_0.4697997746931708"},"_hasShrinkwrap":false},"3.0.0-pre.11":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.11","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"518520d62ea3402ef87dc38f629cbd4e97628405","_id":"i18n-element@3.0.0-pre.11","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-vlXDsy15ete2a/ikCtg1qwgcr0hjSbmqfn3Dv55gGQHtm1DTdme0bhd6ABbFm0fDvANB2IgodGN+9uC1UgYY4Q==","shasum":"a484313e650350165981889a7fb6f0dd3cce28c6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.11.tgz","fileCount":1195,"unpackedSize":19559973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNC9CCRA9TVsSAnZWagAAp4MQAJn5K4AQJeqpDPc4PGM+\n5QegvhUgH99VmmcF1+OmlniJf7RsHI4fs5ebwqHkXxi/CumYIlhCvGJwudXn\nsZ5CMqpZ0IKMEO+BwfQ4s6WDjXIqjHyqb6rnnSCQPMldrQfdUB30l4rf6wAD\nEa7L8scMuoSyvyLurMnXUwlOhmoKy30Pe+hPY6GTx8uGNsHcodiaA682VBwc\no5rzYqt5lNuMd8deKdbUtHJspHAumqI5fOM3XdTLeFyfdmqGlDqoW2uuKBGc\nl3M1TvwbPHWGLYq6/Rh/CeZib7DVCpQGzTd0dnpViVjPW5oQz6WSZxbeedwX\nQoUR37NnCbOUQP+1LgGDP4Bs1yPPas4Nn6dy+uTe5byNQpV6pQycSeY2yReZ\nJ9ZpxH4RXkL+Lxa9L6v4aGBnXtehsIDmDa88l6gHBo5M7k0QV3l9vj8La0+7\n5bb4BiNlK7aZTYX8E/gu9oJChc6j34Vgg8UkiblqhR20sreCcUXXJX4oVL3k\nz3ZjWgFk0FmN0c+xJ+k2YLj+4bhWufmAXQ2OgoqmqIyO6geRcjeUHbn2i3Lv\nkNS+GNKqS6TU0Nanh3t0mzl33eGsLeeNbdjaFCPcwWToVROCxwgF0cPxNqxN\nrqvcFiFM6/Vtn45z8b+cO3Ht1dNBMU93YEmUMFfHwbEt8C0yuMtkMUBWtj4u\nsIDm\r\n=TN+o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbRAXjvXHMxBA7gcLzFR9N6DHGd5eO0JtcCimGDCq0LAIhAM7wjjf6XJfG9WAvTdntZBbRrruj3PSdApkqtjX2EUUI"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.11_1546923841865_0.6883503239077051"},"_hasShrinkwrap":false},"3.0.0-pre.12":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.12","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.14"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"0297e76bccf840d583e15c16939d56c4c05cd7de","_id":"i18n-element@3.0.0-pre.12","_npmVersion":"5.10.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-/dePMQCv0aXaOCFtaSwnd/5CdW3PN0T0zzxGE+xf0W7GoT1vAz7T8tpAO5yCsBgvR5Bjpl2vS2f035/uIeATig==","shasum":"2a0a95306e327affed111afc87e08bb2064f7aaa","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.12.tgz","fileCount":1195,"unpackedSize":19560135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNDY5CRA9TVsSAnZWagAAmxEQAIr2bQsh4QPcuqps83e4\nRRp9YflkM+XD29St0GwsNyCQkbnjuYjZhm1IXJT8J2lKf6xlAkgtWIX2PhrW\nvHMcI7NV2un8g9YiAc5HNrgpfwUdk0wZlocSrMDoFUCWY28SArDCDv06qlP5\nB9I1+KMM5fOGf9Q0X51qAdqOi0LE8j6H1c5XWz5O9mQZPwNchf4VLn1GmYrw\nyXIx9s0eAte/PKVPeCUDoVC91FqCWPaf/8Xx1ekDibNGhBTrZMLTyq6ppWVC\nEtsALnmHu85XS/2R7f6wVTwVoNIFP3jJjlumhYXVDr2AZ69SQSamK0h4L5j4\ngF/f9hwOW8AijUttBocrXLPL1Mcmh4lTZACTdds7AyuDdi2NR4iSjctEviys\nUaEWc6GlMhUXpRiQCpeeQeTbfwdC3JIlbHq/ahmZf8IsrShDm63wcgzWcpNK\nlblPIEhwKSM3CBc3FUNOptT1rsRSh5871bu88jqXIezmOArRGm3EMYBu3aks\nXdlLeMqYnZxl4MOFO694e8cDH8wehG/7W91r6IEFtLDux+1sPlsqa+xIQYlA\n5f+QNsQSK3K7emGGqjUzY57f/Oivb5K7SR4pOBUkgt8Oz3sw9xH+94NfyH5v\nGjsmodUiVlG5RGurgyUT4u/td1Eq6JMY2cZd1jSHhuHfCY/Xkj15nK1XSdsp\n+w4+\r\n=2JDZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAuLto/5Kt0upeNoSD+Zh019toPq/PGf9CZuE878p8rLAiEAizJSv7gKpH3cAWlm+z6HpD0SRvEcGF3Ij86//yTOfXY="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.12_1546925625071_0.6157133100417269"},"_hasShrinkwrap":false},"3.0.0-pre.13":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.13","main":"i18n-element.js","directories":{"test":"test"},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.16"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"5126e7af60392d091cc62ce9b78a25e78cec2828","_id":"i18n-element@3.0.0-pre.13","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-R8jPdVzdG/iEc7xpPUu/pzkKHNo9tMaSIemnKlPcLpVLfG+BKPUxPkx8MJc0X4opMPyOxTJdjS3LHDR/Qn/6lw==","shasum":"41757e9f841b1d44e0246ea76ab5926152933fc7","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.13.tgz","fileCount":1196,"unpackedSize":19556255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNIXKCRA9TVsSAnZWagAAvmgP/ik27d6BDgG0DNQmtj0+\nnkTe7Dz3I9vmyLMUurWIE3Dtlg+wyKs8rFTb/UzcMmFx/QQan1Mjlh+e+SEY\n0OzGP2nZddDjYdRVP1VRDtCpea0oYR/GiaEcIAavvU2eFLG0kB+oCWP5e+Qh\nL3EN4NobQ52F8ETVLHeoDmuqCpqYz9mAapgonESNoSa4jj1VAVBjHYYsy8yg\n5W8wsD0MjxfIwu1vaZH4pyQuQn+2vbBgFDyUTBjdrCCAUKUwv0bLHy9Xz9uC\nf0SwVMseZPNyx2m4b0UzK5vSzRK8xBSKB1FGy+CvxQ2ssdaNZVv7NUM6nbTm\n/fvO0CW3p+cwlr090MTj6f3tiC6BPyHK/UckU+drkX3xys9cjNKUXl2Twqcx\nvSVtfK0KbKt0YUAOAexkoZz8syTmZrExRGa1GpzySTs2ptOTOoiJ9JGYFtJc\ntD7RjiZjrM9LXLWq2TMnSxDBWfFTlSEpNPBJuS8czCDPwM7Q0CAG095xcWHv\nfku02tCy37tOt9z9iVDSW1Dfudkb4CC+pQJM33rdIgQffVMokDu3j1hhOP0k\nPPBsF0de+XYZ2m1LbH1kITnXrU+NPhsnaUChvp5IDEFYuR9v6LVDRJpyT/Zy\nyAHzPXeezvcmpqyln7oUSS9imDqIyROz2aZnO7WgudLL+r8qi3o3IMklNf6V\nk4vk\r\n=yMdi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD90m6HFVMIvEeZyQvlOfD/wCqK2zyfnXht/ddUO4bMZwIhANm7i70hiD7CmRDVHYp6oJ5R+gUpVtJ9+cV+LWrDzeR+"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.13_1546945994048_0.8270640771153139"},"_hasShrinkwrap":false},"3.0.0-pre.14":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.14","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.16"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"b6c8546dcf2fd2c9ba42cabb646d9f3b54e8a475","_id":"i18n-element@3.0.0-pre.14","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-c/fOgA3uDWCUPSXF4j+EloNiWANn8ysKhGBmSbc42siEQ+AqJwvpAtL2GjT/cV6PRJdIGsk324rck4sp601Chg==","shasum":"610bbec9ee4d3c4eaa13ededcab04fafec0fecb8","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.14.tgz","fileCount":1196,"unpackedSize":19556418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNJ14CRA9TVsSAnZWagAAtvgP/3qoeOML1QvwpfGbK77K\n+vXqtMQUs+dRpSqPbaH+Zzf6rb9Firl3xOdFgjukLmi9qF6mhwQxI8r7+mbc\nDCeSGyD30fQbxg9vY9LBw+8lb0EYcVZt3JLojWu0zyf8oeK6TFHkxYF0/x4Y\nLCQP796C1DJbcRtks2dCQew7nqRz5i/M7qDSUhDZd098U+k0/Hz+mZeZ5rgz\nHBcJxSQKOlB+PmNZLVzVFpQwfQJCfA5J/dYCoDzbAr/YAsb6STfwKGrkHLjw\n9mJPock7n9c292FxPy8rX/whqAeVNCglvfpA3C0zNnKH181N15rH3oLr4iYn\nUYstfiPItqkUPLCQ/jVD9CWx5W9mZnqkXXVsv8U+bOPZBT8xlItAYw9H1HHX\ngo0XcawccURX8S9fk7dDU+gW7zH1yfooZyAM5aFgs/mcZWrL5LvBysjiYYyt\n5FtUb89eHwhXbQO8GOm3PUTe+3VybKZKEY5f2oGlRS/+fEGduhVAC1BrCDfC\npGgalRiqYN4Ph4No0AFxPbilTZJL+qqx4jRHxH4UDk3+gwtwPEmp5Mws/5C9\n380dB1opRBHvFPRIJBmQQr/Ea4/5la7TR/9SLmyoyYabVdQOqM/qHjLn8EgW\n7RVc7W+Nd8HG7ZwJusn3xqhDl3wSV4OKmKNEdUIec6pe9GbkJxeJfDq1ZEsa\nYMoy\r\n=jxoJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJXEZI8yMOf6ZR9F2BEk7+68b1HpsEthEfWwwPDh405wIhAMkZd+Z0PJyQOH4hpjkLpe1+QPJgFe1E0gwnzao2huBU"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.14_1546952055457_0.6409603863325875"},"_hasShrinkwrap":false},"3.0.0-pre.14-lit-html.8.6":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.14-lit-html.8.6","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.16","lit-html":"^1.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"4d9e72030fbc8ceb826f99d4ae7d28f88d725d0b","_id":"i18n-element@3.0.0-pre.14-lit-html.8.6","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-11w/Fej9JD4c+s0cZCdVUeYAPeoq1rZyp5x4PP5xuJJ2llEVxR08M/QmHGYqH6ZVOt+DuWIRtUyUHYXPj/IIuA==","shasum":"183cce99bd4aa51e740f5a0cc1703f2f71e1064d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.14-lit-html.8.6.tgz","fileCount":1233,"unpackedSize":19629124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNKGcCRA9TVsSAnZWagAALJ8P/RGSuoeC1Rhn8AjhHNo6\nNS7Ev0nPE4mvcEd9wt9jLBNbQvUVJzmBMTbFHQvm/pBc85lI5loGfN6GJiR2\nUlTZ1xE1jrBErBDilxR/Gj1odaUZ5uLugs4rUSb7Lat+OsXN+kwtCTGjjrzI\nvDV9msGuyw7VlGYr6E1ua/nPbAEDIn/e11LsDYkRIZdeHwemDgEePBryzO4y\naZMpSy/bDt00SeV8RROT0A5aB+QrVGHFdNy49Gp0lZAIIMaIFF11Ty7icaYV\n5zJRMvGtsNoSi5PCUa+ZsbRZ2z6pE9HHRjDolDbRWJrr2ANImZMSsAoDQijT\nP5ubD8Q3Bir6zimsNxqGMTwnewOXcWnqj9T0O9woAE+qqVorMvItFM62HWGm\nIuMvGoRBItLY3nW19YAc8VuSXikg14G4lZOn+eqS9qnwK7uPrvGA4YVx3JSn\nQhsWSXEu+mTiZRUp2M+iX/CKfa5wq4jQhtTHBlif0BSQJeFY3J8rPqcpVUBa\n4soPEY7ofqGVwRsM/mH69svjp3xSxOB4m1Su+XKkxynn0OSx91n4NJKguJND\nQoMzNKnn4ifhu/QsMH3Gc/XPWRID0CO2SzLqwA7YWh3yvdr2khIO03Bgxw9w\nc0S5K6WKr/0T2tO+4xeUtAv7RIA3sp6sQDExQIWAS+2b6HRazDUddCwC+hwV\neRfj\r\n=ktSq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBFKDSjyMcUKcc6xZwCKt/QtdBx5AfLiZ3foGXFdbPsBAiAjPsvosIFdYr1dnD540Kt98F73BaXBwHW14633erAWJQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.14-lit-html.8.6_1546953115215_0.42156983151892824"},"_hasShrinkwrap":false},"3.0.0-pre.15":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.15","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f4532430d75b3675634b6434c8b4edc5eae7acc5","_id":"i18n-element@3.0.0-pre.15","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-koeV8GA7flVCwLTpjw2jlx4zPUZMzQonaEh51/Pp4qLA1D8czhovjUQopYSy5frZHVqFh8S0be+C4Wikh633NQ==","shasum":"2cfade0ca653f5d4e670494c26751e6492a80664","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.15.tgz","fileCount":1228,"unpackedSize":19827122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNVXiCRA9TVsSAnZWagAAmWwP/3SadZjFZzwwD+Hxx8t9\n5N+3DeU3hQ/9qO8Rq8onyetfhFbdLZwLx8arx4JXAFr0XFb2Vn2vXD+Kh66l\ncDcX3OIY7E/QGDbBako3941a6w3sdrjsHm55MBMOIzWT0z8R5SU24oSCWdpB\nMCqQtUcizt+fS5p9NjZURrYJEbdacJDjh6eT6KwoioGP6ZIgfHcm/J/FnYkg\nU3J7/vKmuMEWi0OhQzuHeCTIFOogQORSKxYHTZeDiLFQKBvCrB+071M0lk6x\n4iPkh3jLfLt+BwUCwlJrS1vuR2i42R2EVXc5s7vjGFVLAtl5sLpK8cYCiPV6\n1f1dU4uISs8ukMmSO2dotDJqpqi39MU7NDrIZtY3z76urO+Zy58WHqUjlaGc\nwkLLSaaVe17Ly39p+QrAFBf9Tw3ePFiQJ177Kia4pXoX1FfUe3xA5K3Jx0Px\nX6hjvOdqJbjdNZ6m8xLohfSnVq1V9wzz9H+UfBPOVktAo3eJ0Kul4yWDk6wI\nPJYHVOQ547PoH68Aw4OGOJRvP4KFW5V+Fz1jiSiXsZiX1sZpjAXzeagdcFsz\nflkvHI/WyQdrjsfZ11E60qi7vWU/P8MPzhCmVZaJX95usdGXLUjxYQkXMd5C\nNJxv9Sl4mylykYRomfikJITDnndK8iz0SB5znAzdCua5x2kljXYVC4NJ7zS+\niMI8\r\n=ilcd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDm6JEaWPlrZnuKA1uITSz0qSQrfIGUo/pqKd02J9dzbAIgYBZjdvIeBZAs8si63ZY/mzu0vzfNfhEt0Y0BLWgvp5E="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.15_1546999265221_0.841921939184056"},"_hasShrinkwrap":false},"3.0.0-pre.16":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.16","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"90d5142dc0d9c9112d330977607bcd09810d1ca1","_id":"i18n-element@3.0.0-pre.16","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-x96+0su3XG3/JXQ+sUh2b4RthQgisKUgTXxHq7LJtsDrXyvQHBC7cQCCwgpDbODhqF0wQ0jmoyGTZUtV+xTYpQ==","shasum":"598e935adf848371cb9fc5b48fa4a97224b1ecd6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.16.tgz","fileCount":1229,"unpackedSize":19823735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNWSJCRA9TVsSAnZWagAA9dUP/ir6JXxai0QiyG81xGEn\nPmw9dMepvROL6RHLhh+rjtWWBl6R3m1DRXuQi3nJvp+7PzE+7prGPo7ztAHg\nvQiDjIsUei1efn9z6ofzpEcHD+B5WlRWPd+tF2bv7NKof8Cdh4DF4nW37QkS\narYAxkZlyLMjC5y2x1WJY7H2NhpRZ3gC/mNVAUKQeR0+adqZF/+tuwu769I2\ndLpa9vTWvkrpgImFds24WbqSJulGpc6y9OD0qalGDCvjDqT0Vuz5tmAKFo4v\nTPGsSLZrnAwK3t8l2tTCUU5tcNrNpYML8VA1QFDh9HTuLNYd29/a3redyK+1\n8YonHOyOfH1KDzfyzma0bNjLQ55553+BTHlM7MBvU5Q2VedRHC/KFmAi7TBJ\ndwNTlrezaLVKQ72K6gx2kmKRCg+ymfYPM9Rjvg+j5QBfHvFCjaOvvz3UOii6\n9GN+n9u0RS1JqVVLKo9ZXBNI5nxuV0E2GGcmTb/wFMSHwT+ayx7bxZlSI4Cs\nKK2PaDd7tGMPs1GapgxTgYsqXo1zyE+zO+8uBU3NGIrUjq34wUA0mhQZiv8e\nOxr6ypyMOWyOO0i3QMHYrxk636gKs1qXRVarDIVfY2m/RFM4i94bw00FdHxz\nHZVkDZmPQOUUckCb0ct3JWmWZNEt+MqPpVzzWpWZFzYpMPXObaYtiXo3aOiu\nKzkU\r\n=d4A9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErnZd1DPxoT4/buCifztUdKNJFWaa9C56xdw09eOONpAiEAp/6l/sBaDx2gNIzJ2vhubCjtqIFSw2A9WIYchlV6i+Q="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.16_1547003017192_0.5720415092181084"},"_hasShrinkwrap":false},"3.0.0-pre.16-lit-html.8.7":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.16-lit-html.8.7","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f536930d1c0800e5cc7445c6a9843f1d5dfcd421","_id":"i18n-element@3.0.0-pre.16-lit-html.8.7","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-YBgyJcxBwThj5jkETAXe8QEFpdG7IFaMPx/Wqbw0Fso2eefmUldH5D1F7VWmxvLHWZ88NOE5IAG/cddggh6Ozg==","shasum":"5417dca605c1ed70041b52f79be2059c37643cb8","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.16-lit-html.8.7.tgz","fileCount":1266,"unpackedSize":19896441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNsTeCRA9TVsSAnZWagAAhhcP/i6l4rxAgwUT7bSyNsr6\nXRYs5ZONSAdN8um7m+jUJes6TMsmZQCS5dlR7NHXUYgn43aVPMNMcH0CW2xv\nAWefS8q4IFZwUT7bAQnzCDi9RYES7u/fLp1EVlirEFbfruuR/CivTzK5UT56\nvWWtw8vnm2YEk0hhf4mXWcPmm3eyNvGQigKFsCyRPia0y8Z+eZw5TmZFL/Uw\npo5ip915sZNG//GxZ8qfe/W7R2etNvy445FmIJcSWKGHvvXolD5rxeKIVas6\nLPUTbq3ZmkTYiWcya7HVsug2vWz6DVVvtZO8hVHjoGzW2EPqJBD56lO19dAT\nJh9TruNZkfghH8SbEx0m+U6KaxScVGhPVzUj5IGcDbkHFIAvgGcg7ephrXEo\nSU2wZ5n9WgNgnAPhV/Ts/1T1fNtrx2MSlEcAMN+pnlQYUnYHH2e6OCRbQ97B\nGL5gAoHbIftatwVaFi7T65PZrsqtC3KBDxLssxx0o/GwAQK5C3TTAjto7V97\n/4vplsK8KP6jsX/bz/1aSnbLgapfTGKR1vDtw7zVD1MoSgm1/BOOIrvX0ceJ\nFwZvsBUyzzsToL5WExUjkkGZfJGJMKrsBg3nNDGOjqiq+pDo9gAo7YEUJuuc\nEd5pjmAcYI+FJZPMegwqYIxTc79AVgFgbb6PZT+8h7dh3Sgc4sDMy4ty9TcX\nCguY\r\n=aqiq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEoTsy5K7vp59T08lISg4mRyUFSTfof4dT401lLa+6XaAiBBqRZNN81KP1h3zlVRkcSR1r90uJcAV4zprlDe5j2ENQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.16-lit-html.8.7_1547093214019_0.7689654661728251"},"_hasShrinkwrap":false},"3.0.0-pre.16-lit-html.8.8":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.16-lit-html.8.8","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"e78f9843adfea2346a95b0cbbd9085dc6a5e115d","_id":"i18n-element@3.0.0-pre.16-lit-html.8.8","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-W2xN0OMNY3xsy1BFN6r5hZpmEnB0OiLmVaB5mpN7e4eDIETwYhTqZBYqvKvSB9Y+bc7N93nq0jH1Rj2ywBKGEw==","shasum":"00a0edde42098ae72eac55784b62ac7bf18e8840","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.16-lit-html.8.8.tgz","fileCount":1266,"unpackedSize":19898422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNw9jCRA9TVsSAnZWagAAJykP/39FunS2r5dOW7XSR7d2\nBZ5r2xMNRcXwUHqxE2uhCvavAZnFE2u9vEiUrk/dbeXCbXh2cZ+8GcfYwDD+\nWR8KKB2uMKWxFIAF19Y5Up8riqUm1X7nhHS9BGdd+OR19mNKLFqg89ZKlv23\nMIbhIlVzlBKdYTAbz+UR00duAS41Q3Dsajwut3JLiVZy5Bm2da1lphjMvahg\nmdTfah4El7y0UTInJs0In4UTA8X+cU/KbdTDg0ZJ0Z4z72SS9v5LM2jBXDC7\nvqm1UzCOCS/8Qpckdf780d/ybylVBPJb2ZrKmqk7cP6S6zP5S5VzeNSBpHYv\nKTvpPErwmVS66Lio72xnXmJC4S/QiyALk727HMJBOwnCsFAwvUo/dNplC5bN\nXPuDgWbwc6mqxgVAJ/LSPTYXkKdGMIJICgJ62C18TdNiIw36I5VGSNuruWVA\nEeK+bqaA/j502FhnMFmZ3hN3lzwdV+CZiKD1DGJWC1LWChOCpfshJtPC7KGH\nSj82JLRJGgzQRMX3lGEPmj1d8xTaFP6TLGK/SL4EvHrBFJFc+K1m42M16dY3\n8t1Lip37erEEUnuuc7YaVAqKNm9JlARqT6oTIVK7LY6Rvj1ADYWpF+irPXfk\nUCqywf643gz3Ock7EW/i0jDN3Lc4FqUP7db1aTgoTcx/RnxnXyEkmzA1HqQV\n2FYM\r\n=4+va\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6dXCdqUzK+lZjS4u0JIVmIv0MCUq1FkBijdJLjWuxXAiAYhbLE+N6cw2MvZpbNBBzZoHYM9XutqMwqgBR3AJC62Q=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.16-lit-html.8.8_1547112290776_0.6769989659874309"},"_hasShrinkwrap":false},"3.0.0-pre.16-lit-html.8.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.16-lit-html.8.10","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"b5edfd10853c04cff31f6b5a26b726c9d18273fb","_id":"i18n-element@3.0.0-pre.16-lit-html.8.10","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-Md08uqTI9BuQ/8hUCp19EjT0TmYG6bFD5z0cjc3cnET+dmu2ggxeO1fn4VSwZ5Om/EIpkttMwCq37S3y8XZ6jA==","shasum":"8952b38983fe39ca1c2cc7a848dfd1b67a9106e4","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.16-lit-html.8.10.tgz","fileCount":1266,"unpackedSize":19898546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNxbTCRA9TVsSAnZWagAAojcP/3xfDh6I1uee3CpcUJxw\nSzt72fPmGsphQGJBpVbdsv5Cu2TqTx40stu2XKnYIkf0rohH3QGPIVQ2rx6n\njXCgnNAzikalJsv4ADcGlRYtfApXJFQuBgcW8gh3XqBIwrgCd9a6C/tHtOBA\n3BxdXg2rFhBjq2pFUYZlOy0C8LNaIW/7QFo4hAmmNmZQKdBeEJ8dFRb7Sdta\nqL0pFwRpgrOWdfIg/eB3Qt1WnbjkAcIgagABvNQq66uzHHojtujP6dDg2xGe\nhm+5KrVHl92Vbye96GQnNB6q17PeCw5M1YXWy5mQtdyu35iAmKzXfN+RURq5\nWhNP+JTVe2eLeLualhiCV5qSWZkhwZwakjL8S/9vvt9KRGrfW7JTLD7z7WF2\nJPy/LFWy2u2cJbYU2SHGgdbFU1H9X0LK4bU0EK0LDlnL9Zap4QnmGa4aXcV4\nWh7bamEMrKmK0TZYQMl+pfuRDZ6YglLN6gTGElhfu4fNypgfBb9v5uod+0yx\nlpBIebMwuPHEjxhzzRHhMKCpBp00dsJ6T0gg11x+3hLPWSY0qtA2kVA4Qaji\npthFZ1eO33g55i621YdL9u/P+BZC9pWwm0d6HIkYqqg8Is5Jj9Jpfq7uKuML\n59fA9qWs84RsXJiXmS3LjGAirYF0xEG7gKNP6b+3hh7PB+oQa2tKTqA4km9T\nvtlv\r\n=RO/5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChyunRnpgfLkHdgdkN5E8uO51wJVn6LaFNBOoF1t1LlgIhAKV5KRHmU67bKFozh0/1DScu4dW8qjTKGqvouWsmPpsP"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.16-lit-html.8.10_1547114194496_0.39352189577459895"},"_hasShrinkwrap":false},"3.0.0-pre.17":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.17","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"7cf3f7cda5e04b1ca5939dfed0a174f985a59e36","_id":"i18n-element@3.0.0-pre.17","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-1fhyWG104843qL6+iTZAMfZw77MSShS94DGizUz5bmYBPjywdCpuJO5n6yiKTUfNo/WldSJ/HMBxUKwz0NCCaA==","shasum":"87021fd386ec71d170f6bcdb7bcef3dd81735d90","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.17.tgz","fileCount":1229,"unpackedSize":19825987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNzjgCRA9TVsSAnZWagAAMdsQAI73HQLeWc2ZQK1c0cMr\nwzrJ/bEv3JJFbkDyY5qixNlewc+0RD8+pCp80FZSe2vnAbYtael4bdzkIggv\nJO2lmwlC0QEU4ZDQO0Og2GsckqTv1Oe01by6aOn4fvZWcua2w1g1hCDy9gAW\ncQTxEfSBsgXwYOElsGdp3/mXkNxT2zFFm7xKgJMR30Hz++jKCSdvGy/CFhMj\n1Mk7xhommKhWXbgRmY+qbpCmy4xa3bYFPO9BR7va8oaARqfOQ2b23WaNm4HB\nYO+dhR/i1cnHiwvwGyMTK2WQ19eeJq10q3xZ/BtgN25l47QdQXPp2gKFsvnm\nEGvwy1Bn/1W5/oCUpO5BuBJMwU6a+P1Ucr42yNGbQ6mjCkLro+E8aooTp39y\n00fKB0pFbQlslEExFOOaCXnQfCMX8/qrD5aIXJQa3fiaJEFPcrybqWLC1x16\nm3xyLwSVHio1OkaoMt+JFNLkTqkm2iOzHKrOYIkxsR7zhfhL4A9Rw9ZI2vEk\nXfI8iGb0JZSzdEgF2qnw7Al3GYjbnd0AtbUGKYcq9amuZXtXCGhoipXIzAvp\nOCglFcy9ygi6UkuXMUMxwsAq4vN/gzeDyp2LUeHCGD/Ismjhi43gYgvV1gBG\ncokXNjXRbL1o6N8R4FuviIU/LunzLYBB1iZrGs9HSbklXS9liR9FY/MFfYrH\ngqnc\r\n=mejM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdGhzWr7JqE1yadGvVZNouj+jtXtkpLzMbAEroAMbe7wIhANd3msMe3BQ6W8ymwQ0ikRevcHnbJvi7FoN0S2IrVs1j"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.17_1547122912298_0.5537952743421954"},"_hasShrinkwrap":false},"3.0.0-pre.17-lit-html.8.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.17-lit-html.8.10","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.17","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"d78f2bce01404e74066acde593fc13d4d45dee01","_id":"i18n-element@3.0.0-pre.17-lit-html.8.10","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-jXaappnxcuEf8wW3njgdijc+W3vWAPtqdTEMg829HJmIi2yEB1af2RAd2PAbHwsoILYj83OzbdYX7IngpOIzwg==","shasum":"f53c08cc92d7a4a8e433ba2bc2e5dca18cc369c8","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.17-lit-html.8.10.tgz","fileCount":1266,"unpackedSize":19898694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNzuICRA9TVsSAnZWagAA4/EP/3WhJZorNBxIAqnApvSR\nI2tCEdqWT7JI41qqrkmPLfvvcNhi8zdE1HYE0gt+Nqp9r9j9f9ThZqR5slDp\nc0n3OnWS+Xfw0kS0ZFl/ZBsbS9AQAWu0cv7T65FPXCBUM1SKMi/C5ir58l/Q\nlCkTKUcoKAwTRJ9bt+bmrIgL3GxjS86cXfhtRPZ1bn8jyx6jKwH9f5xCTRpE\nU9bivH5bCMQq6YnL13Xw/ByEnkuH3LGvi3Y0klvPclKp3p9jWhImTdBdfrXg\nwoa8s7LzpINo0NNxoXAjKkkcmiDf98ctKXEANQH98Q/fCSzZqqUgiMQhKSdi\n63yhPmnWBohFfw1S1S6WiBEcoTpgJHfcOnP7p1/YaGvNTx4mBt0+VZxS3M+2\no3rILa6NZgyIH4OJZK07yyDlM1wLEQ+SnS9vx1SuB4P1MRkKyhOk9Fs4HlDf\nc6xglrveMCUp/u4/nJusD500VN0gYqXXpvqYt5eagLG1dtEFLvGYQ+EtAZbV\nHz3WL/RtjMANrTWb1cR9S/0Ejn1yJ0D4ZhUO5EE5sahOvxIGfa68uTvuUdSC\n/WM2DgnQlQvb9ECmz9nL+/DSOAOtak144rpaZiZ0zzXnshUhKeqiw5kfbU4Z\nkkWPmQHK3CI58sJ4JwWb+adbCZtA/7NT2mJDVL6ymK8YUZt4L3bEsMreBWQw\nSrvp\r\n=pENg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTxvyzXGoPOXXCQ97nydQwnIAy7qJBsvUdD5MylBaEAwIgdft+nVVCLYpOXgT884ep/77h0T4rb5wPb/GdEfXzOI8="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.17-lit-html.8.10_1547123591457_0.2868835075554459"},"_hasShrinkwrap":false},"3.0.0-pre.18":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.18","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.18"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"28859bba15fc51ac816e1460458247b82417f548","_id":"i18n-element@3.0.0-pre.18","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-bxVciFZwpDrwSHDgp7wwMI9Or6seRClHnc8//sUlefIgCFYqmxYGwaH3ydm2+gS7Tm9jizaC4OsMmUS9bycpsA==","shasum":"0022f346c402760266fc506799d08dee76342400","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.18.tgz","fileCount":1229,"unpackedSize":19825987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOGkgCRA9TVsSAnZWagAABbMP/3C57Tl0iCHTg102joQJ\nOcApD6TrkWiPXzat8RNvYcONKWTO+z+O2w3UTeuTWhSB+MmEv6HF2i2I22ih\nAKi1rBVmenvFyTNtXHIjJqIDPlWBqXBNXalGEezIRRMzL/qu/6nApw3AvjJh\n6LISkGRESSfWsVdN6oLY8mtxorMCnsbWjcf6AWVXKSzdpwTdqxcjDoO3diu/\nyXAB5fdN3cBTNRc+irKMZXXT+hLEhmuFSCgGImgsCgjPtppMtHHRtIuBr6gv\n9dUyBiQLINwxD9U1JF2qsGcW+VcxuQnCpi78RCbbKyfI/UMjKoF8EH9YRZ3M\nWILTwufINmoaomCpSpOxdbLeb0EIddWYxUXYbIOig8ZBwTe08FwSqHwBhs1w\ngKKp6zHdA3kaJE1W//ZAaeqKFsvD24vVp1Pzdmhk39aeon2fYAr2duJjtJHV\n1XILh+5q4LA/Y5JCa0/b+VUo800X047UmyfTAl1MBqVRNad5gVAr/PbHUvzH\nT+0Bk/Y9avt2IYJ+mpE8jfrBsDo2jiFl6VaBYmYrtaImlx7IaCSpGrdXh8zb\nypNgEkRKaQYN5125Sx/e59Po6astVULCAmCnjOG+pKpqKZRCZOwmAH0mY9N5\nKawDNSbkwnNrV/cENQKBgw3wA9KXEeb9qotPS5PAtwH7M+uGD8DkbNXeBgFq\nOwuM\r\n=w5Ak\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1IOpx1qZqERbPLt5MDgWF5VvUXWCZcZohjAdPWjLTzAiA1Z+teN39LRuFS6KmJVuo5VLx4NxyK/eqaXgRvZ6d/Ow=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.18_1547200799409_0.7084660598669146"},"_hasShrinkwrap":false},"3.0.0-pre.18-lit-html.9":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.18-lit-html.9","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.18","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f7110827271a2399a3d7ba928da9501b5cc8fef9","_id":"i18n-element@3.0.0-pre.18-lit-html.9","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-uxI3miJ6ZhVbqI9lDsdklTfbi0uvBNvrdcscqWOVt9ApnSp9DO3nxVaa1BoPLylaFlmcI+jsZ1d/VMAPSg6GOQ==","shasum":"a4c4b73926d2ec50faed0554303ef47f974bbf1b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.18-lit-html.9.tgz","fileCount":1266,"unpackedSize":19908181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOHboCRA9TVsSAnZWagAADeAP/2IXUzE+GpBFln5wfAGK\nH9wmw90yvaOZoEe86tSa1RvcFflBx5Afaa899dflmo2qntr6PmduJx1KADAl\nbdwTlgVkSMzUhw2ZRpaVQNXBJPQLzMnsLJjBft/Hqw2Zk0gJvBu01fakAG6L\nN4FLw91wm+8TOlXMLNwYzhcGiRLbFgIHXMrE4DT0UuNulH0iKhn5Rz6c1jr9\nvNLG0LipCcoIN4SUX6FnRwBS9f+SFgn0o1TRm2AM+LEqJoIsJu4tGxS29IWy\n+3mBIC1AXIF2nCAD0gDxEgbJUkd9k/xwPDBphqyf47He8IN9a3KOQZdC9EvH\n1ilsr0WVFfBe8wEnzOSbDu9YhX1pP1ebCtPEgsHOkZha610HRHj6RoneNbtA\njULoC6lTQPhepUuta7v3lADnyGXO9fZo96rmVbWhegoXgSfjx3kikjOybARr\nQiY5/f6IStZJZr3i++zVEM9PyMukqETXniFGmKb5p/yWdQV1D86sbFmgsZlp\n2dpBc22dp3gK/UJG5nxBRrdqKV4W7e7zZMP+2uGpxCiO3a6N40bxujQS7Gqa\nRHbRnpbGq6rCGCJRd09g1rIS3gv3t1z7ho03End9XjBQ5RPXAoZgAZ1Eqz0W\nj7MCuGdLhF0TWG39V872RWM+SfkQHM3RAI+fj6S6eMdklzI9muGVom3+rJHs\ngSHt\r\n=JkaP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKi8S82y8HdTGFan3pgNXRpHIyg1sLhjUZWKZLJLbP4wIhAIChcCSGHXFn+n+fV8ide8MrOHtxemtomFAPFmCAPzfK"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.18-lit-html.9_1547204327824_0.869552157302041"},"_hasShrinkwrap":false},"3.0.0-pre.18-lit-html.9.1":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.18-lit-html.9.1","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.18","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"8aea179a90abe1cda38a037b8eb5b6479cb8a5e7","_id":"i18n-element@3.0.0-pre.18-lit-html.9.1","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-1SFX56uX0fzoJf8KIwLo3PLP3wDcjqXQKXPqWMOfYE/rW+zevqu3rUEmq2f36q6n+I3rWHJUDaD0AkW35xU1gw==","shasum":"978c182ab16276001e569cb9ab063ee8668f86e3","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.18-lit-html.9.1.tgz","fileCount":1266,"unpackedSize":19908183,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPTQoCRA9TVsSAnZWagAAbu4P/iSJdYE8Zxp3AklVXzRC\ndt8Zi/05pz815vH4oMYPdGjmjoRHVXlWrlnzSFnRez5bgZ6Ol8GHoC3qWisc\nRMydBC9a5Dcyu6zRB4coU5sV2n5L8iisue1oQm5C89cl+9YjNgctyBIGkrYo\nIORmbG6k2xuUAReXvgnwrfzVaPpaEkUc020abH4lv1LwcI1dOzdRQyy81FEc\ngpVzRY8ua3h7Emfw/Abx/m9RgO41/4Jp4d/YwQMTmzt4WWDLamfyYi7h2BnX\nbd3JCYTz8AZPj/UFIEzxSEkcXVOwjYATfpA5Hy3tjAEofIAkWbD9bS9qFaGB\n+YUXHuM5vjaLiPrs/mWrQzWyybBujiJTfvCzgjt6aFelei7Syn5id86Ri63p\nACcTj4HHUzXbYFlmEWgH8aSQpz6xIj6jvryhKOAKtydT7ksn4+SgfRco4K7b\nnNtQ9D3Wph2oH5LzaEPgDMQK+486MyK6ww2OviEBytK8BUBgrQs0KMcasYJS\nLS6aDD6i+o3DgSn50yH539DJrA6TP0DSEOYcTVP9GUVIYcQoElfs5cR1GeWl\noZz50i8r6krQ03dhMm9y9yaGZ3LsXqDaSaNQdeZna5dGGdK7Bk1ec0r6KMj9\n4fCLJr9UlTKjRvkXiHeq2Ft7uA6BBgE8pTthhK3buyJL2aZogK1pfbrduHyH\nloNb\r\n=azMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/99UXaxl/K8WvKoON2JsD8wYWyva7tSEnuxCp1sKeQwIhAPIKswgcQuMpCYKfqOWxevRC8WEXXs1DoqzS4dqRWUFc"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.18-lit-html.9.1_1547514919628_0.7642813638648385"},"_hasShrinkwrap":false},"3.0.0-pre.19":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.19","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.19"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"4bc9a55a8909ba78b2fc6c0cc4960dc7a700eaca","_id":"i18n-element@3.0.0-pre.19","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-0M9FbIsvPOGWJf1KuwEozpC8RaZ459gwSjbwkji6/qIR9gZmUNkR0FvAohLvsCgxksJTsyT5Ewh0WI2W4GBYyg==","shasum":"b6d8f6f87ee68289c5e6a44e3fc9f5206c93f6b5","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.19.tgz","fileCount":1229,"unpackedSize":19819075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPziDCRA9TVsSAnZWagAADvQP/1ocGoCDvDvsP4rVcejd\nmeRayFxzrAPI8eG3BPH6sVlhSOr+kNFID9YJlogV9cJCIYABiWAJRIQuagYw\ncIk5quxF/UktGRcPW2+4709Ie/lQ82CuiheX6P8eQqnI8lHSslYQAy6haBV0\niOEz+MSEB9OO5Mfvw8yInM43UU+L4need1oDL8GlAvn/QaT2fKPYiHFdmtkx\nl49YXxpec4qjtBhDJAw5XO7FRwP8bjLL6imBaJBMNJuJozUyvI9AD8O8rVwj\nRLou8A4ucGa/7JYXzhPt8gSbDUXO2hW2SLYO45pykcBwRq/W8Hv4Rs2n1R1Z\nt6XVMTY7wqSg5jPyPi5K2HYdcIUO5h44288u61AqNcHMeKDSJUHaD1DeNHe8\nOHgSW+9z6flbhVU7nRXYIySlg0ywRcHLPoPpjsNgwzi6oXRyIGXsIIYU9R0L\no+LDXPbq6Z2Yd6FNNvve6TEjOM4QWJyusjd4uLAnvC7PO8zbQOpDoMifFxdp\nHbT0ylbPHRzfjpsn0mwy0w+Xu1E6tTHNrzoCkugsJ8vONJes0fOBTZwh/ntm\nHKvU6tdlPtKiG8QBtplLjF8dma4XQkdbTIPEk0drCriIIDuPWQEpvW+1zT5n\nL8De4pBUeqwyd0kD3QIe9YNAkgDypLSnIY7lsWRLGarmgFOMqoQeogc67HS/\nRgQF\r\n=ovjf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGtK/MDy2IvFPy2YMiIYq1p5TeX3PZrbWTpG3VKPYRYQIhAK/FHOdMlZf2isCjia+zrcVujzuOGZnd1StoayWHvdVM"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.19_1547647106973_0.9996348417900398"},"_hasShrinkwrap":false},"3.0.0-pre.19-lit-html.9.1":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.19-lit-html.9.1","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.19","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"c3d6af11fd6dd38916206d9c7c3d66cf17205466","_id":"i18n-element@3.0.0-pre.19-lit-html.9.1","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-aDHczZYF0yIrbS+XJej0RXVM6Zg2JAhvFZxX2BeJXqMIyxBP3+uWdgYcDJjYwbm+sPpfy2krnY2k1b3jYHDKMA==","shasum":"801636e1683958cec3bf0eb538d3c1a2046f6177","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.19-lit-html.9.1.tgz","fileCount":1266,"unpackedSize":19901271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPzpGCRA9TVsSAnZWagAAJeAQAIMtmfsb+6zF9rldBXys\nUvVK+XfUIPVkg54Q9XIWcEWVcIWI7fsmUvp1zp3X3rOA03cr5WerkxqtuwTY\nAcA5BARLT3mmWu7fvgvELl/j3v/gocYXirv0Qp+5kd5QJU1UI9HQekvRDHKj\nEPrbASjIpkymUXZljNMZ9pBVW1Y/UoA6715eAQhDppRr6bx6w02StFkVAy3B\nCIfLCWSOi2TcfOTUjwY6dnShPuUwoUORoP2DxKh5UZ8m9Zc9MwRpD1AEOJjT\ntdNdd6dHOoZWuVPd/nBnqd/CIVR+V7c5HuJA2YIGvslSnJe6tzKRAbOPpQE4\nLs4npdgZgr6d6FOlqtBJ92+JuQ9BSAdDA5pEzZGksY3wCr8tJqsq3Ikntn39\nRfhhduBRAMInzoMmeo+miIbcf1KcejN8jR3ukAOX9s/JteZGeQp6Dwn83D60\n/jrrj0iJ22l6CTaTxTCixq0UuXsjAgiNH1toW32ENDTyXl+UIlCFRngoxn3x\nVucqamJ2B7N3mz3KADIAlFWuoB82k//eK/uiMd96L+DP2nh70/UEOmMSH7KQ\nl0nGUn3kMGOkdT9UY46VXgo6te9MAe/BifTMZPmyvBDlkpMGypiZYaWxBz1l\nuG87IFdD1jNO1yIklsdVlLqt/coNPlZDIlAqTTNHoIxvzTmmLk623cb6fwCg\nEDfW\r\n=D06S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1OeA3Uoxt6J54YYI4aylPZ9iog0oX4Vg60XDTIa9BegIhAKFI8azNkQELqiAvY3AOyosb1ilU9+Vzf6LnHRrFeVU6"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.19-lit-html.9.1_1547647557248_0.9018201368512471"},"_hasShrinkwrap":false},"3.0.0-pre.20":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.20","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.19"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"3cf064cb8d0cf57d0bcbbccb84479085b1ee7de7","_id":"i18n-element@3.0.0-pre.20","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-mzlzEg8IJkz404CZwist5tAyZIZ3ScWwkcuZ+cG+fnrIq7V42Nmq54zambdCZI81pGyL4ihAkDEDM7LrFL3VnA==","shasum":"9b0df6cdbbc5de93e71fc00b71ee77cb84080261","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.20.tgz","fileCount":1229,"unpackedSize":19819075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPz/8CRA9TVsSAnZWagAAaNoP/3rZicACiTtfkAeroMbo\nlXJM89DmJ+cAhYVAVO8HOCEfrv6n3ZjMp41vgsZvg/7SUZ43iE/gQlIBirE7\n+x2xxSY554FB0paZR72G/poKZibIaaQQZRMBaH3XoSsSc4P+hSO66nK+Tr1u\nKYzGhNJZ6DE+olPRJtYr4a80jp0wD1aloNzx5G8FzppwhQgNCCZoFCLben/5\nCfbEf73QQXAshff0wNEdsawL9cB+XiuJOhbfmIodjCeziEtx0rORw64Wg0By\niBVwvi8J1RgxWrLE2de/5Vk8ZkAH0pi76CIRth73NS5H4fAl85ftqBvBDS9s\nv+vXaqb6cc6rzMNuIxaTJ0HUxClmdU3/3HVgSvnJ8qFPq4+CCmsfzYL4HhJn\nO2qvM7lkddZ8Ng8Dns0YSNj+ST9goZgfFhzvZTVwOy24iuTNydRo9AKKYpAt\nRaS5jtZlfutLyHsj1sGMgxLUZBwOKurNJXINOBk8foQHeKn01Zt5dfBOa9Vv\n7sQ3lsEAYyUN02Dx7BGget6MFQyauLML6nDx4/tokkXokcoKixOQSn3s7VLy\nEKAD1UoDcsetpiG9Zic7SpmsDVjNHGZmxqbFOVkielbRgHw1YkVIZtXBtapI\nzrOqbVUpK0+fgi77ocFeL8lge5XCUXj0MiHhUNVM7XgZjiXDxhxh8PwPAimh\nSkT+\r\n=N4US\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdnMOyM+459gfsHFsqmgPJEF75YJWKAyQeOxy9sXilCgIhALdg6d78nArE/X3XNlenid6htKUDn02mUfniFLmpXYXs"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.20_1547649019242_0.47325701219632776"},"_hasShrinkwrap":false},"3.0.0-pre.20-lit-html.9.1":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.20-lit-html.9.1","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.19","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"b6df37ba15fe0171938e4a7c48b5b959eee6438a","_id":"i18n-element@3.0.0-pre.20-lit-html.9.1","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-pxlCHjEWY9H/nJl4uBUETIvmcP6hMN7w+cRDg9ibgcS4nUoW69OFG2PbnInHlNSl2KCoclPBCFspjekMk/c8Xw==","shasum":"ba3b885f59afe321f510e5ac7547e626fd3eaf35","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.20-lit-html.9.1.tgz","fileCount":1266,"unpackedSize":19901271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP0D1CRA9TVsSAnZWagAAuAEP/2jOQpNqeSVjFhT5BVli\n2nZzFSl2p6AUOh775dmCmEAM0VdC5uqlREUDJZmlmy5V9tNj0epc3OGIVpXE\no0srb4YgYACRCNQArzdmVApKRZ0BGU3STQ85wMWyGLHQhHVziN9cFuKWX9sG\n4kB24oTZzblfeE9AP4NK4i6NSY7qbAQ9qtjYs7ulM0FVrN1VF34MOLSVkZ+z\nr2q/f95YugYi6ymin1o7Zs+AZRnWEyX+QHmgc++fpTuAqB/gkRu3XxGnAxI8\nDidtL7CansVbGjgZSLdE6Ij+KBhXhCsAMK+bsW+CdWFfSKJsUOvfvGKRTtmj\nHzvookQtPRMapwrEQSes54uxvcGEbWza1oVD0lU1wLLolBNZncP0Kb+9A/US\nk3gHCiZhPSDusNaa0g1WpRZO0H0T2Qu31iL+gsRHmHeSpDp9+B+It4CFmQv7\nBr9Z4x+Tp+BBq/nTbKxUDIKYu7IsXUp+vgxZgCuRg9flcggSMCPeeh5GGY4u\nEJaOGJ7pacMLG6UJLfN/vKhmikoSJKscOR+4JnoiIPch95JrFDCCT25/unnz\nzo+1y0S45IIhDX6LbqFiNHMLYA99UaBw8wOs1kSTS/iOA1pyjROi6oLp8kem\nqcVMvUv6MbwLlLbj7j1WFibHJVFDYnDgwvmgpYXXMcljPBwWjCZ6lPHivbHc\n3trN\r\n=GeMM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAikMDD3I2KhqJRrd6KBbObEZxAPPburVQ90AIN2RRQjAiEA2CvadUKqYMkiHEXpQQjpDoYUR7AwDZ86wvIfGDUVxOM="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.20-lit-html.9.1_1547649268266_0.6566228544727268"},"_hasShrinkwrap":false},"3.0.0-pre.20-lit-html.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.20-lit-html.10","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.19","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"263a00140e127e6600090e4cccf4aa4dd2fb98f5","_id":"i18n-element@3.0.0-pre.20-lit-html.10","_npmVersion":"6.5.0","_nodeVersion":"10.13.0","_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"dist":{"integrity":"sha512-Y4G9Pq0bq4zazXnXx4tf6w6yLg4VHfLK32WSvQf2UpAwanR24/6dZ4LlP9F9+Fk4tCnxhwTmIwI0Vs7ANbvxJw==","shasum":"650b33536e4b06e63e84eb96bd09c43d014a6c7a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.20-lit-html.10.tgz","fileCount":1266,"unpackedSize":19901663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP0QlCRA9TVsSAnZWagAAxpoP/0Rrq9FZqsjKVVUVSFUK\nl0LPdH0uxplQHRlx6bEWi896HS8v3zfXjIZ42Mct2aHk1gwcQvhFkHO3MMqX\nNf+7htCNqOef+soC8zCVP1Ir8NUnoYFXQX75enQqdhwvz6v5O2rJ2sBIxN1c\nLiMedyAx2MsmrQ5SYAAsXylawFCqBok5ffMs0q1QXE7Mq7a+LDPWaJ9bEA3P\nHkpyv3kBOeWz3HZW0+mS7DG5n8JsuDgOwuq2mQ5eh54Kn2Knlb3ilBBOkepB\n5zn3SEAUrukvl51sFlPNjtD5wvcUq6vrCjLYxUUu++2xZOfXvXCUC5ZrMZaJ\nbMxyCHjQicX4J05nHhABOyKqEiNCi6l8iLoZjW2BOyxTDHAhmvcP6w3My7Mj\nIMvxln/W+bCpM9Dx8a5TXZdCLtU4GXdjMRwEQwaon1apevIpLwxD8AXDcJ6g\ncjZpgixINbCQeOJchCilDEdnzyUKuZEslhetgo3WF2tL/iM6ao/stqf5xTCf\nftrj4qt93PFsK2kWjMRWtCfh6kAsHAE48gU7wVRdvvdN1OiSH9aszoCvB0/o\nbR1YA8loJGzTePWpii1ZPjWS7HdMtl8VaKPBfBkTGe9mZ8zraW4Y+DEGeJgX\nz/uhPrsggsGmJJtePzp/8Z8QmValrzhwT4EkDyph0D0SYDcKT5IP0WPGpzeL\n0/0j\r\n=0MhH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkOYsWTYXx8d+BKO82wFgyX8NTmw8mmadF+UGlplPD+AiA2nnQkxh9P9G6RVMq40QURCmlLbCEQis8VbMbNzz3Gfw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.20-lit-html.10_1547650085026_0.3136839935698177"},"_hasShrinkwrap":false},"3.0.0-pre.21":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.21","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.20"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"e7bf9cc8868288afd746fa56866b0bb334dd5a98","_id":"i18n-element@3.0.0-pre.21","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-g/Q4zm3FgyNrTqXN5N8Zt8OOrqWAMMXXFT09gfFWXJXYcOwNOo4oo4W+3hfdP2XiKuBqvfo+Ji7fbyixhDXm3w==","shasum":"2bba1437e618ab0410e02b5751befc0ea5b25408","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.21.tgz","fileCount":1229,"unpackedSize":19803831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQy0CCRA9TVsSAnZWagAAhu4QAJr2YNMQB8q9/UEbBDfO\nxoy2RoYjeinqy+iq0evYRf55MUecoi5BxHZlCFH43ZClcsmJOO8hXNOR+gFw\n5djlMZk1bCKx9p4cyH2aXiH/ucqGYTsVapi5hR0ME5Iq5nZ/GEzPE2nxy1Ps\nFdRyzex6ElM/T47dhusqeYcCkIH5lytZykaGCaiUuLXZJ81Lm+EuN1IdAYBz\ntkw3X5YOyk25h+neYvONyKZcdtPhNOHKhlJGDahH/HBqOoqBdAgQqcaIvbUV\nw891fu2B4JbXU5YHOF8uBwj9xGzqMnr8lmAPDT+0qNvWOImwKQSGDESoxL6s\nojQHNcBLrIR8NxJxIzkZgjlb2H9t3SdmXdOJPDVx6CLGjSPdSjHpQad79INb\nYBNUttD0vbX5MNt7Ujzqaw1o8sBNkgO/C55PiT+yGdPehVUMl1/FAV/EfzXl\nJwI+6I2SCFlJH5dAnu/9SORXcPAhbIa6IaR4l41CQIHbmsviOlnq5vsHagrj\nwryt17YXPVNpz4i1zZOUlHfWMlgZSL9w96qj7JNLkNQzw2KPwP/eDxnWAh1y\nRJiNTDW5kEt1jcPWm+HqTHE69b8D9Ir3xtr/XnQpgLFDgd6J4zvIv0JOxtpP\nRhrAF2uCyKuR7wCgvCMQZpEGKWFn9FFsk2LwMpHvgvyvgNWze8APcfWcmGjn\nl8X8\r\n=2u1K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB55A3yMR/1dggG0+eKKqYagNLPF/CRYdn0g4I8gfhORAiA1/S6fig9p1z8geBm8AWirRLpy9U/PBpXbTB/SVfrDDg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.21_1547906305508_0.6687745812772441"},"_hasShrinkwrap":false},"3.0.0-pre.21-lit-html.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.21-lit-html.10","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.20","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"2b6500a2affe83c25397270a8638c969b3100099","_id":"i18n-element@3.0.0-pre.21-lit-html.10","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-kqALR2mISfmZEf4hYbguJOfy1zc0OHwXSmlUiED1GiOj/7gdtOeE5JvWI2c6zyo9UCtIu/pVB7Z//qVlWkTwHA==","shasum":"24b151c70bb8c5493cc68a37387643b49f7b677d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.21-lit-html.10.tgz","fileCount":1266,"unpackedSize":19886419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQy01CRA9TVsSAnZWagAAeD0P/1DrV7dHwZ6DgDF31J6g\n20kD2gqAMj6fRzYvbxryoC2Yd9hwNE9rbWEmmk/1OONFc6pZhiD8eCuIKQLE\nKAwgut4nZnu3iph3fnbDNVDRTp+nwhY0p/K1ugsDBdfegsQg8BDrlQiWKxrS\n9xmBrPmLmuUCoj902YqTy+RYzAopqox7PqOGf+WMuEuSEXVk5L0qOlo2UiBE\nAKlmVutBBMcPhzFZ/2sRWQ9dVEPqzjCz0Ni6m5rr7MG8d3ea0ocG+EAz+wkW\n4U9s9SxqPE7QGZFXnr99DnqN5aMSc7SlZwnWQ/RggkWZxmXD22yvyDfYiQ1z\njmH30QBloUsNGJvEyZF8lbDxMII/+u6xgfjyViszKHyCqon592YDtbos/9rx\nu4bsw96Tn7qn2ksyH/1j5PBucHGbu880GO99KVlS+Vdaus9rgkO/YfYfdtnK\ndK+o0hzG3QPiRQvxqSQSSQi3G1z1UJemEhynSYACDwAGCgknOE/N/choAdbv\nX5c9jHCtMw7R64baOWTzRAsiJ+NEof6ECl6I0eBjEP98sw9Kot+2gvrPLDN7\nHk+PFdmJiBfoWiymhij9nr7qi51vTWzrUJC48L3vjv2/x4PdOMeOORR2M/Nf\n5fdLKKNzdO2hiHOxjEOzjqCnJ/7TuKq5534u1gns66HVbRBGZeJW9CLF4pRq\n5H3n\r\n=dlOo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBX+7qaxdl3+MYaACc/NtNKnBdla/gXqNaTQLKj3gsleAiEAtX1mso6GXOVcy+BjJWbhUhOTNmGuGHgZVkyqsZcPyy8="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.21-lit-html.10_1547906356689_0.23375527868257806"},"_hasShrinkwrap":false},"3.0.0-pre.22":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.22","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.21"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"6522389fda073e5b731a3316b1ceadbbb6e47fce","_id":"i18n-element@3.0.0-pre.22","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-bHUDpoSdqrpQ5CRwjAhsl0MczjnAJy/xf/bUiJ5TFbuPMaE8oQJ/w7NXDn9VF1bzHR/huln52MrGm7HI7iAxgA==","shasum":"3d12c7483495959e8ef75081a400443176b0fe61","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.22.tgz","fileCount":1229,"unpackedSize":19806287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRCfcCRA9TVsSAnZWagAAYAIP/2IHg76WV2LBHV68PE6X\nq4dNtPoUqH311/O+9ehqM7/iV0SOIWKeTUdEHtnv5IGPPyDknuuFKX5Y+ZFH\ni7SoVuJswxPcyHbuLfnHFMOtxlzKFphzpIaTzgSsHdwL1wcC7aHt8shcrvRG\n2TCkgNJfhOx49McBulzBdhdc7BQXdvfxEW6U0USI9eoTmkgknIpHcprx459v\nOHjH4p+nl9BaXNUltXT1qEUZNWlIfMIxcP1G0m1AYFSpb+gCe/Bat60UBdaX\nCfOyyyzsvUC/j74wQJ++3HdYu9ORZn9QHnlBdUEYXrsm/eNdgNpBAzzibdXH\nO7QI9LF0hAPzhmIszmY/yqrk8Yd2Nk3ldvMDT0sA+DlW274dW8d1l0SDQU4e\nIH9UN/Of9JMxGxmPuRch3+kiJV0GrRO8lWhUrqQpV9ywkEVofBced5fSJYZM\nKRE3qV5KKnMRn7hzo+tQk/MgQJmDGXHACWsTLDhiMXoAmqtM0tCyaFstx9bu\nUxF4MgTLsybKiZmpfVPmf1GQa6klD/XjuUXEFhk+DNGkiS4L52ZX0oUbl5z0\ndgzucretTa49yDhzqrYxehXkca2yqN9mEmTUShBQZxr7EnO/eTfJEd1KpXZh\nK5hASnhgscqD39ONhUGgZfZRK0D7DSFYzUrBv9HQxjYBVnF+iQihJxAm/uQz\nTqV2\r\n=TAHf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+S1kskhjeW2OIcHzDTJJpKU4d8PKtR98sQSku6gjagwIgOjapZ53e3TU1mwWuGzJNMhd67FNj4J3VG4KPBADO5I0="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.22_1547970523820_0.0021081809189322787"},"_hasShrinkwrap":false},"3.0.0-pre.22-lit-html.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.22-lit-html.10","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.21","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f7141c87d3de40afbce8b7927c1600381ffbae21","_id":"i18n-element@3.0.0-pre.22-lit-html.10","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-eE3yvrLqmfmNw6wRF3kthMO3HVV3HuzzUGjGXH2Q2AgDFu67KBlXdJFmNkSANg/eOI/RuJcj6dQdccnAh+ggoQ==","shasum":"4b7edfbbf435aea84e96fbd73837f393af14e57c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.22-lit-html.10.tgz","fileCount":1266,"unpackedSize":19888897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRCf/CRA9TVsSAnZWagAA2DYQAIZPhrkpTvZRrSt870ES\nXPQpVhXTuPAM4DeKSxb3/vnxN0N2UGryhz24JqeYy2Hhcugp8rzFSk16OyN8\nJvU+IcmIk0q4eTBV2G3A/2GRN0aclDq+6ZOzpQEGP0vPKn+q2avQb7i8xeQo\nLRgrkkWshDrvmqLXdplHyIzDl/odFuouR+VxCvx6qNuhzoOgsO4m0YIaUX+5\nDCnQO9/xq/oGrxPfk2op1B46Z747yI/1+XzRIky2Nui0RutyT42BE0tsRgE+\nMwTqvanaTdWj9zoMu9vFNhIG8sA3TzEljrR5QGojTZN7+arDMIlD0ItLzKL+\nMuDPvmkEifsHZtCenyLNkuPZy4upQaX5IQEdWp2B5IG30pTk4wBx0BnkdRl0\ncX2D0PJEqLaWdztaVP7Hxk7fyOpZk88PbZFVkxQFMpEt5u2pLl249sCLwJqq\ncfAJzTHgEDZTAItAP3TqFeLknv+iYMC/3sdcWgYmhygNajlOdnTGX8m3Mopy\n1yR5Xe28WRALUIhBlGYi42BanirtVcS01TnTCAdysYUIFbHqpOuuZAhEa/lZ\nvP5sTK0pH/7xkg2zHZtryPb2ngDKzMEVAvCiPaVY3FaLM0u9FJn4rTZq9Cfc\n4RO6CiCi3ebdjmUosf0fN4ucMrVTWqE6OCeoNiTD8xOjxuUdDuJjLrEOLfWz\n44xR\r\n=wCRN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH6ZajZjgo3T1MKk//Znpp36D35HGqrqFQfRlrbrP48LAiBRf4rxGtsW3e7lZdFGNsvfBUldUa6kyoew4tVrsyavBg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.22-lit-html.10_1547970559360_0.6608626089721104"},"_hasShrinkwrap":false},"3.0.0-pre.23":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.23","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.21"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"b25a28ec36ad09cccf08aa5230fb3951146fcff2","_id":"i18n-element@3.0.0-pre.23","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-XaQnnhv6FXHxrxE8Jf/c0edxccHMFFQx1VB0ljjrdADi39JDmN7NJ0zTG3SSkcmq20N6XnFG9kHJQ0HiIyoI4Q==","shasum":"8fab14bb2155ac7557caf05671d30c92197895e5","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.23.tgz","fileCount":1231,"unpackedSize":19806004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRdW4CRA9TVsSAnZWagAAQPUP/RilTBp7qGDN2XMjgr1u\ntnZyOKtkTZLd1QZSpY0L3glFR8C64Vm6Miay4HVwM7Rcb7CQ5HlwFeJo7EYW\nWWM+fRd8uqafAOWMFWubb2zhUsUdLAIBTo1MKZ+MejQoltE8fnCzaQlYX/w5\nHH4oSFXCKlPBYa3Ci6H0AG4cBGz0oik6XiDPWvFQm0dphlsi/TLtf0WcEHZE\n6pZ8WgXEC1HsivfsslGwPVJTz3k1ngVCuz4VH3yALyRlfsT58NOKghndBc7g\n12OYJ+LYlRuDdfvr3mSchoNsAHlUHe384cI/+692wgMHqtLYNdhWzAVdoybs\nM+pnYclLuEGEtqJBcT1Y1TWlCe6ubP7GWwy6xEUYVKVQEhR3ubnNnmp3n54m\nHzapin1+FMhCaNUb5c0Z7lvY8eNlRWYW27wVdcdxZJwC6XG+JHPnGE82/kH/\n5sNl/lWb/Oa4b/YgZf+PvbzUz7LcLzE+mRyZ3X3PEMSC7ECga8XUzIqycUub\nufk+XtHnPAjW79sk2CKz2DyN+//j0JRfmcWISLrF/wL560x+r5gMkWERcyWw\nRxpaaPPr6NTNsBQ6e/S7Ilr6GeZ3mxHrXKGKn9sNEX7BlTK32MjUPgA/j1B1\nzSdwl82MqhPTjmH27exkjc+bVLg6vIcwhXQ4QXiQymYs4AAykG7PEiOdrmeC\nRLmd\r\n=Jj10\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAomgQJIhGrrDW60BxOdZp1yUfJ5b64CHmlq1hM2+CXJAiBeBZuXZX+aShW9dViajnNkrgY+O91AdPy3co8MZwv8/w=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.23_1548080567875_0.5120471727537514"},"_hasShrinkwrap":false},"3.0.0-pre.23-lit-html.10":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.23-lit-html.10","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.21","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"a10144f17561c92b57ebab1e1ce07b4db1f108e9","_id":"i18n-element@3.0.0-pre.23-lit-html.10","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-5wnttNjFi3OU8iECuK/apsOkIc5gVhCG7GuMT6HH4R/vNMKr3ekHsRlMPAe9wCsOkuq1KGBmIvrOYBx8zUqLUg==","shasum":"332dd2bebced70b0576b1bce25ac08bffb87cbf6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.23-lit-html.10.tgz","fileCount":1268,"unpackedSize":19888614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRdaLCRA9TVsSAnZWagAABukP/RZ0ok0PlkZV8fbQvT37\n5L9Q2s0laEBwJiJWwCNgXdRCDZEvZBeNQnHbtzD38gmTNAS1tlx0M1J4uQkJ\nw6v9GdiLSlimX1PB1T6lHo6qWuM7EeL9SBL2TeqUpSvV5s2dMboOAruUE2W9\nfnk6ZMLYmLzVKSuRjRu/2D8CjWMCQu+nN+dtZZEtXrFLZQBDAe9Jbrvv9jtW\nDSSuyaIZ3atQP9qwl3fthPjM3BbcZE2ShPh3GyxEkj5rZrtpg8Bx83cMt6T8\nkUlBG48GlrqOo0mrJV1+TBpMQJB3RUzNoaPuwJBfmbAa5x4wVTsoAjbldEq/\nWVqxe1e7idL3rA4e59VSwqRvCUHIeSMRCPPNmkU8jhzQq1ngGC+V01Widhz/\nVIlQXJKZ1MBs1kdQydkMpyxHulp58MA3ohVjI/eeu4rH9y376YaZt1P5gDkA\nAl5Kstr6W33PonZBoWfKsM/xET4W07Dv2yiHaXXTSkEVoW8RON3s476EyqVb\nVM+W6Z7Omd3fRItm3Gsh2hzT/jIWL5KI4jVo7rCI/eFhqG3zO4/IR0XlNcbC\nVXGoW6SxHtTWkYQPuoYJfbAkonnrvcFFVnq9Ya6RVRCXwnOrIKhRxr1BBRdK\nYQwujZpn06HqGuHc3TsKmaHwmF6l22S4T8erZsj7lJni8tGvCsWpnMyuGK3K\nvjUO\r\n=FYDZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBpW8f6mc/jPoFBGpenTGzCmzkSIEUaSm0RBGm0I7nBgIgKBZCQovicRVcTBdX6S8R7bB2wYdtG3lXNF2YelS02Pk="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.23-lit-html.10_1548080778763_0.05231271573649665"},"_hasShrinkwrap":false},"3.0.0-pre.24":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.24","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.22"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"51a283a3c1ea43ec365578d98e3f4a5638c13985","_id":"i18n-element@3.0.0-pre.24","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-1U8lBKrSmZ8WE5s5f65ruwmi5MbJ0Fvg8AxvxhD+r+sqUO4HalR2vONQ9ddzJOpqwIWPgoDxWpwN5Zma5aMZ2w==","shasum":"a28c6827d5fe69caee8ddcd38d2d6eac325e9ee5","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.24.tgz","fileCount":1231,"unpackedSize":19806004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRt2+CRA9TVsSAnZWagAAyMYP/0uhQpdhby4IH52lNkJe\noLBoPhtKD5QrP+1CCIPosucLc6pjNTk7IpnXNp8tNqVGm6sJs1nTwc/AmmIC\nwkj1tgyKCZonD2qyxN7J2R4SIdhK4DoQ3DQ+Ip2ih/CJHMxLIt5X6Shnm01I\n6fbwCYLS5lsBCF/bl4utNDcSzy3p6VV1j+t3BpVgxwNCPlAqgnHuFgp4h2yZ\nbFHVOL1cCeInkdbNg0d9skaEp/MclXQ9wyIiwizuCTrbuhVeIRqoXYc5yg1k\niajKISqy4HCqnzzPGu+xkEVgShnBzyAdOmG+iTfT1x92Fk+ArSx6unmlEWvB\nNr8VApzjxdOo00F/L38EqkH2Tz/yIouRioWg+EJaPw6lpFf3V9J7hlTK9XIr\nbh+uK2jzzTOEZO1oXBV6RkNcQYYPvCXl90LDl4+XVYp/FEfmEIlaIcXV3YPl\nV4uDYlES7jAmijMFtfHwy/dxS6Cv5JQhBT7HT41mIYK0KVKXlFA6wZfyG1TR\nIAgfXrF2B7BJ7dUD80JtLl1p4de9yucqgGThudFom1LpdLZB062NZhK5w4Iy\nhweJ5QPIMILTySCmfgr1a6AkNf3MSoEz0KlyOKuXEUxfi67VGAwdzEIJojco\noX8TmGtqBkLMRUzffJgBSC1OyE4aMF5AgHkjYLDTm+E/mIC/DuG0phzaq19U\nRRjN\r\n=SmeU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD99CiEZYsMN4OtrFfItas1JIN5ROcpA/nb+3fbNMLj7wIgGf7aKdjMKerJ/3LY/dpnHOk5tpTWlDXQw2ginv6+Fe0="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.24_1548148157797_0.8434522686351575"},"_hasShrinkwrap":false},"3.0.0-pre.24-lit-html.11":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.24-lit-html.11","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.22","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"24fe459eeb4b1ae2834c9b517ac397635e90b581","_id":"i18n-element@3.0.0-pre.24-lit-html.11","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-mel6wSQaZqBRHgamxAcUQrcjdK13KDRJ6i+dTbWn3t6WjZt7UmioIttDbRad6lG+FsoAMbCzl4OPpzEXgQY8Hw==","shasum":"a57b151536284c2c01522dac7ed54f2a8bd118f7","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.24-lit-html.11.tgz","fileCount":1268,"unpackedSize":19890925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRuaCCRA9TVsSAnZWagAARikP/1PjxgbbbhLjGnRcgcpk\nvnKbCThPT03Kj7W4kGnmXozkfTiNAn6B7z4l8ZOgx58gZMe5uImsLN1Ez3hd\nKCg7FQG47TpGgBq/d6t18VmifXQv/XTuTAGPh+npyZNqi/YFwky2L0as93lE\nclRjnD+DCJsY2c+5dv8hUZm4/w4NgR77i1Ykh8IC+FpPH7Se6T8sDpx5V/7K\nfqol8u4HJSvwvWfu5JmZB6wLYwrhI+5Ijbh7DxfiMa6Vmc4E+H+8xW9koXXu\n4438sFXWxZA82lH7Wu84AgFMijkdmXHYAUb7TjBIN7qldJWQhci/Z+Ts15ez\neBDjeJu5ZL36UYmaXcYrAZzMvFL7LSrqoDkaHB9MkPE3jIxW+O6fLS08dzLq\nzOacrqYEBIVps5aDGAyROJEmNxeIvM1Cwse3UvOKfGYDXXGQTuPSETDOHlzi\nMz5Rnx5A9NsPgLj5m8+rv/7rhXPIIxSrxG2kypjhSt5fTnsYte/SELqEItlt\nCTGugHpaCZCVEd4KR9fbYudD9htVZA8iBHSa/sKmvK0uHiFVTXEgEDZFc1fd\n2Ar3REX0WvZkQsqc1QD9mVGhuuGajIO8lLe0TiELK3IgET7zHyPdC9b0oAV4\niu0lwXZuzZG2yuTsqRAQiGj7pLXpWBedsHJpVnnZR6Q1uL7U37h3GDUSKjcJ\nN3RH\r\n=iJJx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBYSYEwvg48D/Lzw+sOOxheXqGiMq/CsQxkWZ3SFkyZBAiBPjgN3oWkopEa6z33XKHtW9yHrXAcetvykdGkJqBkQeg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.24-lit-html.11_1548150401247_0.16621303784586017"},"_hasShrinkwrap":false},"3.0.0-pre.24-lit-html.12":{"description":"I18N Base Element for Polymer 2.x","keywords":["polymer","polymer2","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.24-lit-html.12","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.22","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"cdd59f68cb1113da16854d2a75dc57d9710bfacf","_id":"i18n-element@3.0.0-pre.24-lit-html.12","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-o6Hf6B457lujG6XLOqS978WeqfXQOYPC9g4AmfrsgKZJBRGubJr2gjUSPyaqM/QFaxYtFtkJITOyNYkq9BK6gA==","shasum":"98f72406d897ddf913b0aa1f0b7bac61e4080934","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.24-lit-html.12.tgz","fileCount":1268,"unpackedSize":19892286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSGTLCRA9TVsSAnZWagAAtbwP/0z0YAgr7iRL9XfgZpff\nlsxtlkgcGJ5HtF2CC6+Du4E+sMFZs84aWkb6s/Juz/Vjb5UI8yt+7abghMAY\nKlONNbBrUd2AEfGhRgaIbntJ/sD9hn78wX0V1czQv08XJ0XQu2VNit3DxBAu\nHWoDOBtGaxyKRp9D096b8+aURH8HOs4nNh3tKmdR1+42Rgz8jE4Z3q+EdN4l\n0dVf4DMhNTGcYyjKdl+9Vu/TS0LM8BN0WQLxCogNi5HHoUmaloPwH0v8AdnJ\nSQtBg6/EhvD+2JSceYZ3LYi4x4EksS5Jde7lkxi4bw4V5iDAVjFFoYjGp18U\nPVo7HWvyGhQaqMhvyNUTji5Dc243hMeE1wywznl86W0RCFe3DElSyrA/r1TC\nWm6DiWqOtpKbdEeEQqnPNhfjUyfKZJx6SUUisP3dgSgz1mcoaJpsRj5lRFQi\n/5FGhkVaP+PY/UvfKMVsogY6fFMnqcAisIm3GIIJ4azqr7DxS2y7IYJ4sTad\nyXbcPTAsShRYLMuG1xYy+1M5uV+BfxUyaWgKXrspBHe4JtWUHWAbmD/j+ahp\nBIn4aOVVrBbD2PV6WfMlbm1iBc39cAeI51IYwBBJMMZysb3d5AUzVwD2fJjg\nwomr3FvNwETK8UMukmSUeMA9lCkSXrPYapJsdt3urrIr5D/x/ZYss43AHmBa\n/nIJ\r\n=R1fy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBeB3zAKccFEiI4bTQS2Lb8IgP/HQPqKHpdcA160VD8AIgAQrMF4dtikIakIxg2wOJ9+keTx95G6BTJpXkIbI5Ep8="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.24-lit-html.12_1548248266622_0.7212875419311977"},"_hasShrinkwrap":false},"3.0.0-pre.25":{"description":"I18N Base Element for Polymer 3.x","keywords":["polymer","polymer3","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.25","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"test":"gulp test:local"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.23"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"fba73822e38b7e784b74b50683267a2fccfc5e24","_id":"i18n-element@3.0.0-pre.25","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-MnxXF/TkiI6H13O1bcPwNq91iazAWQWyMubkTPtXNmcshc7dnH5uVmhat8N50ll2n3+xElTzYrkUFDcJaDC8kg==","shasum":"f8b96989fe3cd01804ea469fcc68794634097df6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.25.tgz","fileCount":1231,"unpackedSize":19806106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVGVMCRA9TVsSAnZWagAA36gQAKNk+w21/9RbsNIQApca\nlade08MK+RG+/UuNwp699NYhrU+icBH7wqEXyTrf6jOrY7go6GG0PkKE5BCb\n8uIMWCDtsizX3LQAdjX4+oyom7aoDGrIceszI8id+qLzGxBoNTDgjnll7o46\nAAGlDQ3MtTyCe39biCIjSMyh7Fl3QqL0tykUa+ps0EApY9e3/vPmkmTH2wlg\npDyTfJ8GMrumxp7Vhc7DxEU+cDEXck8s1lI+0nkFnQQDNGCDBtdiZbhi8Fka\nvnc5ZBGTpCgXr2/0GUvejO3qXd3KPJB9a3LR8rKDcICfvXeL8PjjUCZsEjl3\n3aGvFFlQbSBjEjzdJDrR9YWrHhz1iDLvJjjXIpOs7xLBj+Xhq4o4KeqtGHuO\nBWR1RKiu5DehNj74PsjQ1YQ9WQL3L3+3IP1eeL66Mzm1eqhj+dN9Re5mMlyl\nsZkLkbuz0/oF2MuMenIrrZK81akKxLFG2SXcfSKHtXAn4+H83s+UXGj3pJ4W\nnlp5E9OlDTLdyuUHDW1bBq6B+Zr0S00kEWQjEC4z5/RUi9015URvTEYq/gly\nyixBNx8m7FbzRl14uJLUyqA9A6RtP+OQyDMe8xQv50lgYtdTFqcEPt5Ls8oy\nd/IhPg0GrUKXC3HdLm2eo7X9z88/wsGv47p3T6IgNwMndAMq2v5vh9S3ZZsG\nK7WX\r\n=v7n2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEfjy0NayBtBl6YeVDkVEhwzxLwv+9lsRqE3vO2Fr6+AIhAOzzZQs8bVCcVWlOk1c4E2FcpbZ8oYrmp642gk2ikZJo"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.25_1549034828064_0.46479361327466595"},"_hasShrinkwrap":false},"3.0.0-pre.25-lit-html.13":{"description":"I18N Base Element for Polymer 3.x","keywords":["polymer","polymer3","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.25-lit-html.13","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.23","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"72b06ea914e235f5d53ec62d78be354022ee0b05","_id":"i18n-element@3.0.0-pre.25-lit-html.13","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-yc/MR/Cl1dte8WGJFdDWHfWEdeUzirLF/8NqfLBzNgpgAcoB02D8ZSsVi7Jl1K3TAubE0F1sjMNlkIsCa9HBdg==","shasum":"1832af3a8ac04ffa393ace8fe6bdf7c79a52c30a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.25-lit-html.13.tgz","fileCount":1268,"unpackedSize":19892279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVGW2CRA9TVsSAnZWagAAnU0P/RDYybw654pDbnzyE/1C\nboUvrer7FZelCmgPb3Usz1JzaNADlcwYdZ7J7xUD5M+fUj17CA7Q8hXaPPcQ\n4W3rT+dS86Ef3bGiMosSWjg5bDP1F0bgqnWKQMBjYWuphXqtAsrU/sWxavh9\nnd79bgNmQTIszr4dubceJHUeJuTTZpEAXGBaBrEX5XYwXVCWaH3ayqOdEaEy\n5MRR7O7RrrEi3QxqOh+FIZ4U2XL/xYfY2hD0GyYwINoZcfDMTWlZmpIYSA7q\nljZ88wq/cTzKdYL3UsF7mL0C3UUwv3tYwsgUnkYvKI60SUtROECMC4HMm06S\nYIcac46u3kkjOdVVUhMMR+r4ctLv/rKVwObVTh/+yvXJDKMOYbQ1DHRYr3VY\niM3HQ0KR1CLYSZ4aPAsFp4tmxBMjObe1PsAG1rGu+iLcG0udozJd0cTs+DtS\nMc0SPR5aSxa3O3PxQN7xuGosBKU1XdGk9w2CsJAJU6WIR8a8+1IdrBYz7Ad5\nimToqOEbsrpkQRAHjuy0VapC9VrbkCWOrr8l8qV3SwEbXUX/DsLIvstU3uiK\nechh0+xNA8lzNksQ6YZlOK3OWdNx+ZKZdcICQNU7XE5rsoU/sdJGInOMgc+r\nzWw+rlDzeiNmMmPU+4HSXo8znVT4ctcs60fZ89FsXTfVmtBpMrepDwA2F442\nMCL1\r\n=Wko5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAslj+6WMV0h2Ln4JyjMwyfy4Ncf/k9cxxr2Tax4IGv9AiEAkVm3/nNcHEcZieXuU118OLGVoy1EFTICZo18zPWtyYo="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.25-lit-html.13_1549034933467_0.6619501993875583"},"_hasShrinkwrap":false},"3.0.0-pre.25-lit-html.14":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.25-lit-html.14","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.23","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"b99c2ba0696d4c19ed72d59a2cb286d6ef197b84","_id":"i18n-element@3.0.0-pre.25-lit-html.14","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-hyrV91Wjm9qkW+xeb0IQzJvoZUYrFOfrGuixjuwAi9SuQWDFiyl47uk7Ig3ZHC5ShuH0B5XrcrXhzNypToHZWg==","shasum":"ad151ff14a78b9103b6177785a999154180fa72b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.25-lit-html.14.tgz","fileCount":1268,"unpackedSize":19892164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVZ1nCRA9TVsSAnZWagAAFlUP/iD4A4YgDEG649Fuqf2b\nulXKdS6wVMQ+RLJFMdeVAWqYkAG/psKMPz9TJX8SNLmasEDaLUT+LsK5h1+C\n6zJF8UDwICjS49XIbxox6ozwpGnKjSVCsVcmhdWMW52to7aWn5F/Ald8j66Z\nC847NYIPidVgOSlTc2E3oHuB4+bRni0SEAdgRusgLyYupYZv2IjlECx0dhIK\nXr2mPvqXdpZJ3nrLbNPcLjLnVNrMe8RQ35uxSJj1vMdppEfZGoSusTlzgsYo\nJm44WGushDvVB3lEXdXRJNqrfrRo5CRopWVq7wRnPziRh4sQmJx+s8O6M83I\n6Sf+O5JhgaUn+8SlTaVi8WfkAwKDzNe9Dudrq31MRTkV02k3vzahT2/zyTMj\nER0m4w9lDSl5ABX9CUveyHWExl0p27newzisvzSSxS9bT9nbRQVj+9cUcr21\nsK0mThnDREqoMBMsVWfho5njaGSZeKC+n/JTJist7pVZOGoEkCgyY5wge4fb\nWVLU5S6cmXnb9NhwC3H06DjRxV/8BJeJf2hqCZW27bvNC+e3Um6QQCE0NLnv\nR6YHDd8O4WctKRb0C7C5FhpkHASBe/uX73Z+mdTevBcgKHNoRk1JsfEdOCT5\nQ7BS0OJFchyrTH7xs9km1oXQ9UI9ocOkOdSgwfkpOhxrAEyxUuHL7NrgILef\nkCT8\r\n=6FEk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNQqZnSksrd5QbUt0/68N7yGhVSyfE+U3jtB+DttaNKAiEA6zIJrqcRaDor0/71+s9OzkAa7zGt5qr0MN1hO9KGTCo="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.25-lit-html.14_1549114726478_0.03735513268961044"},"_hasShrinkwrap":false},"3.0.0-pre.25-lit-html.15":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.25-lit-html.15","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.23","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"85f7dcc4e62e020bd4b0a8d1ee92396bfa90435f","_id":"i18n-element@3.0.0-pre.25-lit-html.15","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-mcaG5rS8FIDewgH2YRyUUHzU3USLD/OC7maxJ1civy3e/cOSVwdJZdj48MTFUvQH3x/H69A5QtFj5Vypi8mcqg==","shasum":"83c646dfaf99770c06f8eb4e42f599aad6346988","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.25-lit-html.15.tgz","fileCount":1268,"unpackedSize":19892356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVmQ2CRA9TVsSAnZWagAAlgkQAIV+AHfD/d1ZM6qiygex\nEIVxDo58L22tH9Mf47/G0OENrGy4EPLFtFJT1BhpeHj5Ya83gRRc3U0pxqkC\nZpwRQXPOf/5U/IrYkVFBlnETyDztCZn6qtOOlBv8/fVR+g0vRsmrmIhImdgF\nOyR4XwlkmweVAGhtm8uHj9k9Uadq0H8u3yXVpOqfH71tsZtyQVxNdXJ/Tu1X\nd08LFMnrJ1n0A7qqBxi2a7d6eDCITq314q04+ZW0G9lfBYmKJNCtnVmiWWVY\n3n5FCqoP1YZdkGQCFXMRoOIOSk5w/WtA3m8fKfF/BjfWRZMYL2sgY02kxdZg\no0q8xxFft7BZcnPPPQG7IqISkFfXCNt/GtU0U1/o4djCFXQXvHnMiZ2FTsRg\nFnJK0RacALAMKFY0CpbtHNBKPvzSgv4UYHJ2+QM1FQsRd6bQmTkrlYd+xYsf\n2zjabayspv2Bq8PaEQsjEpJUUjwV52bJJjT5PCuhjcUsISsNgw8MMg9p5GNL\nkiqhAOuqOEJosxmeuCUvQLTA7MesIoaCzuZg58Rlo+yDAoSVQikTcxQoDK/k\ngzwvRkuCZrw1yVPddXaPNwLocboPkarA9fRzWH4ZmBOQ66AJOubKgXRIv3UF\nk4Obc/A8A6tevgtZfxECkwHuAVdsBHatH6Esn5FwTFLZ0tmuqBKEwuxT4uVE\nxlzr\r\n=P2Iu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPWevvA7AeIK32T0138tnYZvLBNqUXeUemb2oG6A7u2QIgSxAWgRrKh3Prt7bv4fRYE5trMxR/JnQjFXew7UTRlls="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.25-lit-html.15_1549165621686_0.30491230795935254"},"_hasShrinkwrap":false},"3.0.0-pre.26":{"description":"I18N Base Element for Polymer 3.x","keywords":["polymer","polymer3","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.26","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.24"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"151b6a26558fd6ff26ca752e33ba47a20fa3d756","_id":"i18n-element@3.0.0-pre.26","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-bAorZwqoa4sHvox9FJ3CR5X94iTNXYx6QCwsE6VREsV9I1F4EhhrxEc0fyvkgQ6AvQ9305WnerCHz4ZPzviE6w==","shasum":"fde8e52c03b13204a0f616a1aedadf9e93a3e55b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.26.tgz","fileCount":1231,"unpackedSize":19808397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVmplCRA9TVsSAnZWagAAkH8P/j0hu9JNFwTvJ1E8Orh5\n+TjjvEsF/9smCxshLGvEs7CHfN+vVpK6IJFJ8dS5W2gi9RPI/HrpdZsDxD3H\nppurtdTeHUu9BewAvucRHr82Sqmc3iRyto2ZoH18wh+OzzYeBvicj0Jt2v9M\n/ogCJ98OOyxavg8ZajRFSRMBTD4SlAAn8PWOwZcQtgYsEHPmmoQ4/ERLdq07\nesJs8fCsOGijbZzgQmKoGay/73SQmYec5DMHI4XzjTRUz3i7GYxAlMzGIvzv\nC3re9OqSErnH2yIgHFSRz/Gw++HEPlhyyGgtwXANUJQRA6p8+jqnWL9Igup7\nUC2pg28lKtYTsWqN7otajzfjtO/D6mo1oqIfCmvHw+mRYB7lnAuXRfOKIMEu\nSo9DMCHgj8Nq5uCCBrM80QX0jXgBHWKaIot4olVkDKO9KLpwP7CZodOdPYvO\n7vbppFDWOy5s8tk/8b/Bnd+CTNBjjeCpVSt4vAWR1KNpJjYpxA7Ragn5jsVK\n79gx2nVXWunjVCRNX7hHrjX2ty8KPr59VXY9z/zK7DtXJTQj3nsG+d6ENkq6\n+5KqAXguctPt6230YAycx/D04Rs8Ng15H7pViX/h9FYdEP1R3RgeKIJDKn8Y\nlMKtU+5R2vcA9ngIoEuJd7ZZXDY7umOVI1TrhBid/xfUbwVeVEVJ93AUhU3G\nwNtU\r\n=WB4a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHKl+xwNPBbI2YmNP/+wFiCGdpT/GdKRGnlfV8om3y2AiB+KGsL7kSxGx+cuNxKqVPPWwTqnX9nRDHYDmGXP6nM5Q=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.26_1549167204625_0.003634845941456799"},"_hasShrinkwrap":false},"3.0.0-pre.26-lit-html.15":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.26-lit-html.15","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.24","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"13629e8b05e616422912c0a81d5a14269de2e18d","_id":"i18n-element@3.0.0-pre.26-lit-html.15","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-uYtzyWRcEzoWtP9wNIlyf5kvcetqR0oomElqnPJ5OVt/CC+6YL9YX/TgZgZB1TrIhcPRmP+Mk+najQ4RYZkoow==","shasum":"858ae42b4ba351574ef195c1297a9e9ccb403b91","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.26-lit-html.15.tgz","fileCount":1268,"unpackedSize":19892392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVmuxCRA9TVsSAnZWagAAITwP/RP6xDwc64xCHDfw0EQx\ndlOGF3dKUW9hwxvTK3CkubRQ9CXI1Ye5UHOAzLtg2FPVz9Y8fPvpAOqU4Fm3\noe/UMJTGQLSWaKokE4tgbxRzILwNdabf5E4YnS9Bb9JWOTNeAXvuW7iCSgeS\nLdCtSyvNqCm3lnqbF7ZJGUUPcEMtUgjKGwyD6g+wEPAFImW85nK+gh0e63aU\n30MDiKF/6iXoA3ffm1AZxN6F4pykfN7VCv1cTMLmmc3qMCyDGzeShrLbEjiN\nR1UK5Ju9peufVg58ELecP1MmPUB98+YF6yuFyy4gReN2CzYfQ9Ky0/WQR/5l\nr8WD7pwVq+6UgxohJwcbMxExw64BjCXD5EO0dJ38VKf364eRZHx7vqIioq3E\nP7iTCIRUIuVzXwKThnIbxLiGpj2Nml4v1eUlGZRMtbpTcnN0nfuus1iXTw4k\njka30QjeRt95Xk0A8DU8vu6Gys7BzDnKD2+j3lPObd683X9mIsShG2ZeqSz1\nc+tzCr+r2EVHMA5qjHNipkpie3ZfrCcTpOHc3eQ3v4wVvUBjF5w9hu3rhfKw\nijEf1H9QS1T8OnTgRbNb+hOOwkj5GhKRErUcYlUUWZFYMPco8JGPZ+H0z4/f\n/GKnxhSG1vvDtVo3AMFSQ+nRMiiI+iPn7b7v/ua0nE2rdgBDBbQJ3A6nziU5\nabJ8\r\n=V8d8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoKjDbDCCMy0v3qWrfpAoTVd4MDgT9nFlrH5OKC1n9IQIgQ1VM6zjDm8bp5NbppewG0h3xUabkUH63SLy1T63GZko="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.26-lit-html.15_1549167537321_0.33953047562857397"},"_hasShrinkwrap":false},"3.0.0-pre.26-lit-html.16":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.26-lit-html.16","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.24","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"e764e963f378264275b5910e2daff2d6d0904f24","_id":"i18n-element@3.0.0-pre.26-lit-html.16","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-FO11wb/+LJh7iSp/W24ltE6wV4y5oSGt23h6hVe0NwruISPI/CIs+ca+c5C9YbS6Oty26WdRu4SoD4/ZNIhKog==","shasum":"588eea71f3e3e2990348979e9e8b2fe86baa63ba","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.26-lit-html.16.tgz","fileCount":1524,"unpackedSize":21500400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWP4nCRA9TVsSAnZWagAAT4oQAIEPrl0qJDHlRkdN/fOp\n+OCW17qtGe2T2Ub+/gQiv7Gfa0R2n5ExMOBtc8tCJzKOwBzESENyXIr2HCFV\nXRQaOvVZUAEJbl1vhjt55E67bYgDfdkjPYvUYY3ci7MGd6ld/jKYwm3Ks2+o\nToUI+tHOCCc3EmzbVqf7muNKttfnAVNtQByVKZTQaIQBnCWZeuZtTYHoFfnI\noNK+xbJ8TuM8ieWfTRWPtAX5XqIsyvPgrZhIvbEBEf+hgUDKMi+9eDG0sFrF\n0ngQCLUzLcLcJs0S6xQKJ6T9KE12bP3vFocR0LPCxwfuH7h6itcZYLxjQDWI\nddJOvaG674qJNNY7Ed5gdh5psTn341Tmf+SSu0GqGChfQV5mcoTjwEgdU0oC\nEFfuyHrUucgCF7XGk0CmT6Gc7AQCxx4eOuXk/je7wKo7l3v84MNPbrdkRJLy\nzcrjiFhBuEOOKTYm1DEEacACdYMywjlM26966WSP4Zoqv2mL+E2BX7wmcjkU\ng1HU05P1opxOsZxWtl1TwwG3NahYOZv0yLbXn90aH7tUk6uXkENVlkPAWTr/\nyzWfpMSr1gvMZcOxNGVoQWHHDT2R+ckzJh4MVcFMHfGY4qoOIKSYQ3cgxyoq\nkLs8YxZL2tPMXEAKQ2NUoRcqO/+A6T77bN0IKeKyUWRVekIBiHfs8H5F5l1o\nHDaK\r\n=yHd4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYaCzgiezNewNsPzrGOFaas0TH83/ZfttztMYSOXQelAiEAg7wDByraSTUg3tYR7ivKe1eTdwcIXxM0iYK15chsxzo="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.26-lit-html.16_1549336102787_0.833713105295701"},"_hasShrinkwrap":false},"3.0.0-pre.26-lit-html.17":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.26-lit-html.17","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.24","lit-html":"^1.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"2b4076d17d120a40556399f94da7c56d8c9e3838","_id":"i18n-element@3.0.0-pre.26-lit-html.17","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-qO67kOSokxdEHbC5OFsM4oJ1fwklFNi82nO0dLNkPNLIF844wB8p91lCU7w3lYkp+utYJoZR6hvD0l+QnKc8kQ==","shasum":"7b0e341e24b5dd02bcd4175a7b66a7c82b5e6b75","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.26-lit-html.17.tgz","fileCount":1529,"unpackedSize":21501440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWUdTCRA9TVsSAnZWagAAAsMP/1KnEwfba7fe4Jnbsvc0\nLfGrFom4ha9LVP7IwqWo5VlZOc2/APoXjlYMNueJr8GYhVRuk6ZF9mEKlD5h\nOrpkK5jdma3r1rkTwua/bF3RcPB1uibM1oYxIYp9S8u6Yy8L8Qtc20dg/gpa\nrCRk1m4A3BPZ7ogWYLsNs+GuqWlIcOwo35Hymb0diyNU2MNmvcIWaVC8dOMx\nHN5/hMK8leFouIW7Bt0txpNHbp+FEc+Ttn9h+yNPZBPDk026/Ln1vdP+xssI\nZL73B6hrhbJN5I5yl8HyyZ2VrWQ2QiQBEVImDpFRTMCqjAKB3PE4oW2eUn1X\nUz/IOflAQ5nC9kQyNcnxBggeTaoBj2NcOzWXIQ8/9k5SAwJXhHnw5uH8KMDm\nG83Q4WhWzCji1S9NrAqNTrbugZXjv32FgqOrbaEFv6cZmvq386Dt21mGy9LT\nRYabBaGsjkf3Nj4FRpT3Jq8YQrITkiw1KOqaxbYwvUaMIKYQXxdI24xyKxeD\nWcOcV6+CAaVaRulcDQIOjbawWDkWAzHAY74CbHOH4I4SMP1I9vGC/KvRK5Q2\n4yD2cxSBthPBMlUGxlzS59gtDPHsyY0+Pm9XPRMeUZLCcAsZarfhqQCP2mvG\nneGlsSOPUXl45AZ2SQE+diFeC3NiB9R4sp5K+Dh3xG0tjQFVa5YdQpuPamdL\nBgvW\r\n=52Ht\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGb26bHJcHfZ+SBxtUmtobKi26KOPruTArSBJWpac9xIAiBhYN5m5PU9a6FYIOrf+zI8RBbeEzAaKjG+fnPlnAABYg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.26-lit-html.17_1549354834498_0.4392347723999457"},"_hasShrinkwrap":false},"3.0.0-pre.26-lit-html.18":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.26-lit-html.18","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-pre.24","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"7b275db2aacf7149183e8d32d806101f7b695dee","_id":"i18n-element@3.0.0-pre.26-lit-html.18","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-yNIFni5xDilSTTxz4YXa1EvzR57cIqX7ywN1XeWtQygsFQkbXOf8dFqjQFrxOJj/Q70k1ElfNSxTAZsI7IoF6A==","shasum":"272b55fa4cac4b2b3b9356c05d7eee588ee1e9bf","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.26-lit-html.18.tgz","fileCount":1529,"unpackedSize":21501746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWjV6CRA9TVsSAnZWagAAIs4P/Rp2uHE+1EDy07KrFfZ8\nZSUw6Bszh3a+ki6J+ioEAH73LL7kRzEc/Xt59/AgX+BU1k5vEc6yaG7wq3O6\n63TIGOMCr98Dogqlw1QnzcdlXuGSd8vD6UmNomtKkXbin+gGyul6ihSurmtq\nCN7QBiH8hUxEM2QZNVzbShl0hC6aAX3/OT3RoG7D3KygBjIWz4X9DhbwZl65\nr6f/s40WSgP0VR9rGRUg2yr17Xt/1qQPFj9Ff3LaMcrH7CgoOfi0F6OgzJQO\nb1SIKJMxnBHb62zjzR9DQkV2u7IP9i2fe8XQx+wpQVDgnkTmbgWHX6MLK+zN\ntOoXop+BG6EdgY2CS8A+saIzEv+yaV7y4eWtuoa9YRta1hQq1I+4rQbBm9ui\nWZQBSVrK+mtjbr/8pacULwbllGdIUngN6Cy2ThV5SHcN456/l2qHPepnetes\nHvX7CfPNTwCAa1ApUiq+rBRl+O3hgkO7fvzu85S9TeD2OiARELyskObHHpi1\n+Da9IDuLtxn8SRr8KA4rkRr5AStG6sPnz2hX9Z6FIiVDYMEaJ3J8j0OMOFcb\nQ1iN/fcywVODfDCxxdLw4S5tWHs1xsUBdzmoRPJSjhyYCUpEU6Hhi+1w1RWn\nRt4d+xlB4kbEgH6FhZ+RMOHTi+KQtfeqBDfTlSiKnBPVJ00LIR2c/fWk5CoT\nc94T\r\n=5Bgb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICyoy5IJK8Rt67T8ncm6vjuAhirC0YGC+hAKxE5nICNMAiAAl3JgMjTMVHe4N58EXdeP9xJFQ7kTFzQqRlYYHKJecg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.26-lit-html.18_1549415801392_0.5086785965663898"},"_hasShrinkwrap":false},"3.0.0-pre.27":{"description":"I18N Base Element for Polymer 3.x","keywords":["polymer","polymer3","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.27","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.1"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f1ebf06eba6ea20421de822b94d8f03e9d5a19a4","_id":"i18n-element@3.0.0-pre.27","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-ZX9a3Hn1tsLFm2lF3N90xpStbnCgIg8J6ySs/hY1ba36ZBIw2uJZunLDUuuAQBQVsYuk60k03DMq/y0eWHgBrQ==","shasum":"71955cafbc32b4d01c571c0d43a8a550900d5c04","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.27.tgz","fileCount":1231,"unpackedSize":19807261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXRhACRA9TVsSAnZWagAA+CgQAIPRqJMMstGRQY9Jcu4y\ngzdnO7y2flW6wYC2C+ZBltrhyK8m51x092TZK0wOw/deEbS8Nopq8Ibrvqu2\nWQ2pPzGAoOfGAlMS6hCyVxAw7g4Xz0sJE4X4+AgP8oxlVbj7o+W/DUNUOz56\n9yAAmQOPG5YMNAtukSkvIu0Oh2eaA7KzaGcaLIBGOsJzVYmgus0z59oPQb40\njKkZd7OcPU23LH07G6Izm5XIIg0p8Jgs1lBjtxyeDObrPAsb8b9jKHEdauoh\nBDFg2+Gwxl6UsLQ5JFCWhgQcx7djpMMzgwCD1y09nE5dE/loV3mKaKVKv2DK\nYfMDKaWXPG4FHL5JHxjsDyjSj4HHzMFepDMJjB+pdJNls4IIKNAqiV6gY9w9\nnmtH00ocTlvzQnavLGlTjMy43RJgcpOxzaVaKPJqjLhj7ZjSN+CLMcKrgcdS\nHCrjSkM7y1bq3Fuyiv/RDg1WzBh35t8FEapfk5j/++9Vpd0fX8osSryJv4Il\ntsaHnrNelV9CmpwEZ9LbsLNLRYm4ZKDmG5Zmag7kUnx093DvZ8X2USVaGLIy\nYc8wR0xxhCj8BcSPpg9uwx15hReTLAHF05JylK6LaCKDWMvLYkpO9QXxNeey\nWDzsQq9tlKAeVXz/Pr3RUcmpcohKKHruOOx8GZXObBz6mbOUnqZrE5/8AUDs\n9S+H\r\n=GhWM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNckJiIRATvmlniyNJ1NphuhVQq41J8cY9UrBQWKkrJAIhAPHPbuvrwl53VhvWfgqRfGAJ4AC4xN+9h9viiZO1QweM"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.27_1549604926439_0.1663925456151243"},"_hasShrinkwrap":false},"3.0.0-pre.27-lit-html.18":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.27-lit-html.18","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.1","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f77664b7d774fb2a02140d1276a812721b0b159d","_id":"i18n-element@3.0.0-pre.27-lit-html.18","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-/bgJThmTelqXZaYaw+NxK6WXQC4Wh64pElwI5r6iYrbyH9f/Ti3k5gdWeVqolup6l6JmIdUMvCTlQq1VrsC5Dg==","shasum":"9b6570f9d11a333a0eab0c2cf410e06b9d27db1a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.27-lit-html.18.tgz","fileCount":1533,"unpackedSize":21509964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXRocCRA9TVsSAnZWagAAHA4P/ikg5p/H9px98rQnVO0N\ncUaTDn71ajKCFB6R4qmqpdwwm5HTK1pER4w3+4mXPC/suX+b1F577PbuxA83\n31h7xNYgxHt9vuAXupIxJpvN/sauy4Kr8vlTA5opiXTwGXU7nSfX1B4Wr4TT\ny5rFtd8sIf93cukRGfLFtTMLtoGYDgGiZ4CbwiObfefRfK8c2ziX9O3SZj1V\nVryZVwgKzburWjpTv5DVKypu0lre2k6h03VtAyibbx4vL+rYHizSuxxCMWhP\nzEUFIqNzajATGY7ZWNoGFtK7Ge1fX7Iw3oMMUBaM0ManZzOfIgItiytVE6yn\nWvVRljTr8bGRIIKthVIuR1EMk5MYKyIh2ZHU5qlMqzfDH3I/S14rsTirhsZE\n9SyWLoxb651oMsZkL7Y/77OITO3Wt1+dK8JDeH2WZF1LY8enwodNuf1ZNIfz\n5P49cGkSy+K6De8Qh7WeNAMwbTb+UcLrcaLiUUlmiOu3a8sdO8v8o/zIDjxG\nonkhO+Pz6CLFQi6FB/hqYrQ2mZhsQadVOvo4M9yyD+pHAF4DKHCNtQoH7/nR\nVSOEQL0lbcgWf5xivQIxCuHbs6r8146XXSi6T+Ww8lg2s078jAzl2zUZroNt\n1L3JO3COz022pNTc9qWsT/7KPaNznSfjbyYzo8IbuQEj/ClpwZFt89CVNdGO\nnPUs\r\n=eU/k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqgEzC2Xntbzu30nX/ItF8ErQWOTbNPWUTG9QitX/8qAiEA0gzAv5GzjNJ8Wplm4Q9aUsFEy1rIpOzrvuucn/SRgUA="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.27-lit-html.18_1549605404093_0.47486739428101354"},"_hasShrinkwrap":false},"3.0.0-pre.27-lit-html.19":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.27-lit-html.19","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.1","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"965656e88230ba5e354616b0c16dfca83268bb79","_id":"i18n-element@3.0.0-pre.27-lit-html.19","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-9ysayFI33UMgYcUWjTVyArF/+mu7LfxTZO1eryXtjUuRMvlQG8Vx60DRUhtQ6lTaiVjnZG9JLJekk6W8Z7GtoA==","shasum":"2d3b47caa968150b9ef7e6bd210d75953072e8d0","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.27-lit-html.19.tgz","fileCount":1535,"unpackedSize":21568913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXoJzCRA9TVsSAnZWagAA96QP/1vV344nkPadJ8cs9JyQ\nsmO5jRsQxob5JOcwEgcz1IiUC/C8vx/KFu/MxDRJS0VlT2Qxaorz/aqearzX\n8ZgAc1rSHWz1+YR9fYme86YUeZimLaWoSL1lVupeybJDY6I87DddJe6E5Z0n\nNOgqKy5O3SvEJqjj1SUqQ6tQAhsA/2WXhL20KSn5BNeCNixPPCvwz7cCwHMD\ns7We2v3G6wb1d+v4dKaoYTHN7y4ynC3HoMqRhSCBOgjQ4y58pmhdouX3OBtS\nlVX1CAAIJfb78Lfxcj9OBiWggZpINF4EsPPfAC+5mXGrJVdUzVJvKycHfBWq\nzOLSF19CjJR2ai4J14avmYqw86sxoHXbcQwDlgI4XhV7abLwiTOMrDdk1QLi\nxnx+c1UGVzpUEdoj0eA3B/yaOZN9EG1exL+6IULrbB3kRY2rMSZGs+yDsviz\nKNn+X5kWvWNh/0ieFw59Al0CRjcSp0dhZaAmZ4vMsgJUwsm7Yl5u3GTkhk1b\nwJFc+BI90QT08KKDmhdwNPG3LRjNXa2rZlrgLzvRdHo0Jy+BtXvO2C5BPQmO\nMj31FZ6SENPL2MgVgjv148QOGaqVcZMpUKBc0wMJA+jZTPgjBdCe1FY/gV1Z\njAMn+9Y2lkucTYv02g7pBIO1dvOW1iKPP/DIu0zL2xI9L79Sd4DhOFdWZpof\ndVXG\r\n=VL5h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZUKkfoEaD+Z9JG/q4bXt2q0hHFygV0kN4WHS6AsqMEAiBAGGr1m2yoRdqxDBm97fpTEPu4muovt09C5eq8gQ9f3A=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.27-lit-html.19_1549697650026_0.12266657778941248"},"_hasShrinkwrap":false},"3.0.0-pre.27-lit-html.20":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.27-lit-html.20","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.1","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f66e0e990a7d90697b48749688b5ec8e721efdc0","_id":"i18n-element@3.0.0-pre.27-lit-html.20","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-vvEWEZHeRErN/pn0wbeqQ/HCOVXzQUpgJDR8428Lj4q5cac4H18V0Bke2ZGwEshSzcQHANhRvzpjvax7wD/PSw==","shasum":"9f5b4533dcae15c76669d173796794ee2c092ea2","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.27-lit-html.20.tgz","fileCount":1740,"unpackedSize":25054877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYQe0CRA9TVsSAnZWagAAktMP/28FwbFzxDxLteC10b/H\nWtjToQSCJUWA2OjSZEWSdMyeIpRhgjTSTWMF23TmvAqTYDnDGrah/I1U+peW\n54BDzjwS2ZrSCFr9rRVoXyijOCKmk7EWDifEGyzse5BpIBagaw8/25uhsxM5\nRaz8ruhNU+OoHRz3OfTaO1I94awrPQSe6xTrbzs9U2JCcvrqqToEsReJiZPh\nqH6CL9KNtxQyiIrBd05GJ8G9Sl0bFuBpa5LyCr2fdV7TVuVHE8XkThe1zyfH\nD1J5Q9gVak4YWmONoHh6zywjbQR7atv2b0PPNmCq7ZFN+52rN1usMEuCGI2U\naOZQxaOVtnBjTOcsFpaang0kAuF+DaG+/ZKm5FmFihufrhfVLN0D97CGK7U+\nbesbhK+JwNV6FzCxDTQOyl/iwxe6JF8VzF68EJfLaoikWJkUbp1aLThGrZ1S\n5DFtgU+VRfdR8IPezPM2y5EsJp4LyOzrGM6tTHWPVU2Ss9xxzE0D6jaS4BfR\nuIhjA49mzXnFNtwgEft4USKaBod0yiM/z3PPZIzmrFMwgHwpKBg228KQjizC\nEkJu+ZSCiGNM2CPv+7NZv8wIvWgWNL3P36/MZUhJZb3AA386BINJsdQgV3bZ\nFli1ferWWkbZsI1r0OswIc8veIMl9OefCgM/VqcQqf/g4U5brMou9Eo07O2o\n47aG\r\n=KKmz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyrFDHqEq9xpEbRyPkvFBRtrStgrVPBkBAqRjBLP6ZDAiAgLPs3Xjb6Fi2GxvApfFdicBesg9XizgKNuhgA3WfbDg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.27-lit-html.20_1549862835268_0.5684402443243599"},"_hasShrinkwrap":false},"3.0.0-pre.28":{"description":"I18N Base Element for Polymer 3.x","keywords":["polymer","polymer3","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28","main":"i18n-element.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.10"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![Bower](https://img.shields.io/bower/v/i18n-element.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n\n# i18n-element\n\nI18N Base Element for Polymer 2.x with [i18n-behavior](https://www.webcomponents.org/element/t2ym/i18n-behavior)\n\n## Conceptual Workflow\n\n<img src=\"https://raw.githubusercontent.com/wiki/t2ym/i18n-behavior/PolymerI18nFlow.gif\" width=\"768px\">\n\nfrom i18n-behavior.\n\n## Browser Compatibility\n\nPolyfilled by [`webcomponents-lite.js`](https://github.com/webcomponents/webcomponentsjs)\n\n| Browser   | Chrome* | Firefox* | Edge 13+  | IE 11  | Safari 9+ | Chrome Android* | Mobile Safari* | Opera* |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n__ES5 transpilation is required for non-ES6-ready browsers.__\n\n## Demo on GitHub Pages\n\n### [Demo](https://t2ym.github.io/i18n-element/components/i18n-element/demo/poc/index.html) for ES6-ready browsers\n\n[Demo Source index.html](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n## Install\n\n```shell\nbower install i18n-element\n```\n\n## Import\n\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-element.html\">\n```\n\n## Syntax\n\n### `Mixins.Localizable` [Class Expressions Mixin](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)\n\n- Extend Polymer.LegacyElementMixin(HTMLElement) for now\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.html)\n\n```html\n<dom-module id=\"localizable-element\">\n  <template>\n    <span id=\"label1\">Localizable UI label 1</span><br>\n    <span id=\"label2\">Localizable UI label 2</span><br>\n    <span id=\"label3\">Localizable UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass LocalizableElement extends Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement)) {\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n</script>\n```\n\n### `BaseElements.I18nElement` I18N Base Element Class\n\n- Equivalent to `Mixins.Localizable(Polymer.LegacyElementMixin(HTMLElement))`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-subclass-element.html)\n\n```html\n<dom-module id=\"i18n-subclass-element\">\n  <template>\n    <span id=\"label1\">Subclass UI label 1</span><br>\n    <span id=\"label2\">Subclass UI label 2</span><br>\n    <span id=\"label3\">Subclass UI label 3</span>\n  </template>\n</dom-module>\n<script>\nclass I18nSubclassElement extends BaseElements.I18nElement {\n  static get is() { return 'i18n-subclass-element'; }\n}\ncustomElements.define(I18nSubclassElement.is, I18nSubclassElement);\n</script>\n```\n\n### `Define = class` Thin Definition Syntax derived from [Thin Polymer](https://github.com/t2ym/thin-polymer) for Polymer 1.x\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/define-element.html\">\n```\n\n- `is` static property is generated by un-camel-casing class name\n- `<template id=\"element-name\">` is used instead of `<dom-module id=\"element-name\">`\n- `customElements.define(ElementClass.is, ElementClass)` is called\n- Element class is registered as `Define.ElementClass`\n- Applicable to both Class Expressions Mixin and I18N Base Element Class\n- Applicable to non-I18N element classes as well\n- Either template id or class name can be omitted if the template and the class are in a dedicated HTML without other custom element definitions\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-thin-element.html)\n\n```html\n<template id=\"i18n-thin-element\">\n  <span id=\"label1\">Thin UI label 1</span><br>\n  <span id=\"label2\">Thin UI label 2</span><br>\n  <span id=\"label3\">Thin UI label 3</span>\n</template>\n<script>\nDefine = class I18nThinElement extends BaseElements.I18nElement {\n}\n</script>\n```\n\n### `Polymer({ is, behaviors })` Legacy Syntax for Polymer 1.x Compatibility\n\nImport:\n```html\n<!-- DO NOT IMPORT i18n-element.html -->\n<link rel=\"import\" href=\"bower_components/i18n-behavior/i18n-behavior.html\">\n```\n\n- Polymer 1.x Compatible Legacy Syntax\n- Import [`i18n-behavior.html`](https://www.webcomponents.org/element/t2ym/i18n-behavior), and not `i18n-element.html`\n- [`gulp-i18n-preprocess`](https://github.com/t2ym/gulp-i18n-preprocess) 1.2.3 or later is required for vulcanized applications\n- `targetVersion: 2` option is required for `gulp-i18n-preprocess`\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/i18n-legacy-element.html)\n\n```html\n<dom-module id=\"i18n-legacy-element\">\n  <template>\n    <span id=\"label1\">Legacy UI label 1</span><br>\n    <span id=\"label2\">Legacy UI label 2</span><br>\n    <span id=\"label3\">Legacy UI label 3</span>\n  </template>\n</dom-module>\n<script>\nPolymer({\n  is: 'i18n-legacy-element',\n  behaviors: [ BehaviorsStore.I18nBehavior ]\n});\n</script>\n```\n\n### I18N-ready Bound Element `i18n-dom-bind`\n\nAdditional Import:\n```html\n<link rel=\"import\" href=\"bower_components/i18n-element/i18n-dom-bind.html\">\n```\n\n- Based on `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span><br>\n    <span id=\"label2\">Bound UI label 2</span><br>\n    <span id=\"label3\">Bound UI label 3</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## [Tests](https://t2ym.github.io/i18n-element/components/i18n-element/test/index2.html) on GitHub Pages\n\n### Test Suites\n\n| Test Suites (`*-test.html`) | Description                 |\n|:----------------------------|:----------------------------|\n| basic                       | Basic functionalities       |\n| edge-case                   | Edge cases                  |\n| multiple-case               | Multiple element cases      |\n| template-default-lang       | `templateDefaultLang` tests |\n| preference                  | `i18n-preference` tests     |\n| no-persist                  | `i18n-preference` tests     |\n| define-element              | `Define = class` tests      |\n\n### Test on Build Phases\n\n| Build Phases      | UI Strings | L10N JSON            | HTML                    | JavaScript                   |\n|:------------------|:-----------|:---------------------|:------------------------|:-----------------------------|\n| src2              | Hard-coded | Modular              | Modular                 | HTML Embedded                |\n| preprocess2       | Extracted  | Modular              | Modular                 | HTML Embedded                |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"1ca3ed940061492b72464e46ea2eb14e72988766","_id":"i18n-element@3.0.0-pre.28","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-LtkTOKZilx7dwTENaHwk1cSBh25eGyZI2HNdz3dh+vt+AesS7ldjCtajTXpuBbLL/tfaJ8yrci2ue7HlV5cteQ==","shasum":"40169e3b51af11db8526430c1c75c4f9e725f552","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28.tgz","fileCount":1231,"unpackedSize":19807261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYTNCCRA9TVsSAnZWagAAiJEP/AjActhel10Ya65/0kF3\n5+nnPeH5uYagbq6E7H2ot/Vh7Xnp6ldlWy8X8PGii1JW3pQXIrOf8F53fvWO\nLjYHkqJWcvndfqH1omKcnGu/lAL6/8qkt5m2oL2Ru9f6jHXe+jvLGJ6W11O7\nxLOJQX1Mh267Fkjb9FDMR4W5PWjaVhsn9pWqAQ3wHGzCcBPIBOlSohfJvwnj\nGSnHtle8zRmUSboKCspZBZ4t1kyOnDTOBXWAFY1Eq5H0hYi0uScFSbuARQHN\nuOjrbPuEq7RDFmGI9yq58tGtye+B3WOcnSSbjBTj4zHEaNPEuU43NeQUJJE3\nfzKher4GQPAG58nUK+UF3MjCr9bFBJ4UvnHejgqDrSiH3Rqkie0HJgt3VpJR\nmTXfqUxrikjw/io3ipPlvkRSThO7bWzZMe9Z3Ita2jB5PJM8A3ofx2lTmOZ2\nvcOX+NjEbQ/CGcA4hihJ8w6yvzZ3ehTjdBAVohflmVBbS3fGMCp05jJ3aSHV\nOc2okg4amyVdo4ZBb1pqfLx6gdbRh1/2wtRWxKsCX4CcxDMsZ+wZWLBTGTt3\noPPdbYo5W1MvPinWhAIoKXikV7jZFDIBcOAZSrE/Sx+AvEwgX/DMX8Es7bem\n+hdHZPeAiGpjCcNY7sBW8h+tPjV1Osx5OvDQcb3oZATNxjUEF2ICZ9QaMIOH\n4YXY\r\n=golT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMPPxz1bP+D7YHWdOgk7h+DGAAbcuq0g7aeVcWM/qEGAiAw7ZziVORBR8YbF1yiAHnFNcnSYrRqogUWp8DWdzJ6TA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28_1549873986082_0.44420926518101256"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.21":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.21","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"28d9630d7ba61210525de4e63a451fad0fdfba2e","_id":"i18n-element@3.0.0-pre.28-lit-html.21","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-TLJPkUcE80HAHJcOXrEOK1sO+N1K/yO8bHZ3bv2T5FVr00oINxOLFBBD5werw4uNGTO7tJygNo3rfiS3Pcsk0g==","shasum":"40e9fa276998b3e3914243479a748b9717fc7406","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.21.tgz","fileCount":1740,"unpackedSize":25055389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYTepCRA9TVsSAnZWagAADpgQAJLeKrB8PAkYFOBAHn7F\nd3ClSklZp5ZVyN16MWbNjd/GIzx5473L3gvhAIKxceEz/HDVt7vfCZDXlWLB\ngLdTWynB5GK9/4fodM3Rynm5UX12p7vJyFmRg0lDVlh9dan5cGHD6sxevmmp\n5pDe7tXbmOJzM7m3m6uhCBS3yVhGWxvxRW9P/4FQvKXl9SHU/UE3VIG+C0Kn\ntlBehMGa3+WkxHRxNrGQiELKoy4CrShGKddUKkQW4+spX3rFEV6GgMdSZcrP\ndY/Jxq5ehnDw8p/LmHo4XEpK5p0u7tN0bJ/7Nl+DMbiVJl841uHw3GpFix1C\nFIbFH7QEgkKYs3yl2kCVV65MgNqIPmeA1SG8XCCHY1IV04KeqhYPcIJZQUY3\n1GwbZ4o7tGt0jx4RZblYKTJp2FeUyrK5B8MfJVhXrK3ngBWIm0eIPbrDAZi5\no/4wHJAPuQz8KE8uYMrtBiJ6REnmv+7PWDPKKTGIJk5jyysXrc1blFMg70Tz\nB5ER8Wj28pMHXQ9lFZtuV7mese4o4CfC629dZSJtUe2gdXMs+kz1BZPvh8wj\nMVdH848RsiiwoYCZLja+Ezb6F90iCRljxAtZ5dP1dKek6WbHHvmaB4EQ2Cxl\n0LfKbgxbVco0mAiV81NdPDLGsfRe639mTOGDWVvoI0a9/p1zXlzcHNzlr84S\nBquI\r\n=iIQ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEz+cmPN2ju2NFidsMKUv7BUw9IFYKqUm6bAH7v9JwpgAiARvhQtIOqAWIVBzfNLjj/izLNkyP6DM2nqq81tG4OFAg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.21_1549875112810_0.1803174399985994"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.22":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.22","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"61e3323db0ac23ed100dde6f438ded9848487d0c","_id":"i18n-element@3.0.0-pre.28-lit-html.22","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-qTtSRQRkgEzwFIjVFePAYkzwI6EpUAX0HN/t6QVXtBX+h+7GIjQNwoZdboeUGTUFP+DTkfFjbQPbCwuHvik8jQ==","shasum":"4771eb37980cdcf6f6f24fd3640551e736b5085b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.22.tgz","fileCount":1740,"unpackedSize":25095662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYt0sCRA9TVsSAnZWagAAqbQP/37oX/AcYhgY2YEjIH1R\ncYDJ9mpWEPULCAbuTLXlFdYVdHJQVO1zTNomByq73YLa1BR3jmBvwprB+Beb\n/opLNrQeskAnr8llKj9jfbWx5+2D493GMNgjmR8utxOAA7zBfU65NIu84ULz\npzPX2e77kJKndJ7I5iL+sxLzQLZIX78xJxysM4MACwRcz7HDx78kKzYui5Xd\nXbux5adXSVKz/uyy5GsZUTOGTs9xiQOANz94wLd9fVYoLxpoOaCP02Qyol4m\nTLMW3WeTKjhYkzMi0i5HB98vAYPMakp4loE+NVbISr5OpUBlbdJw+6/44sJo\n1AFSYEsCNGFMVCJayHR+1ekRxl5yPpIjGsJ7qKRq9O5me5mCrk/Bp7PXNi4t\noJ2nGcZQ4hlWZ5jKcPIaNxxh76M4CU96V7VVwd7i1p1rsXWRELZVhDB6WeSg\nPquWZPPUHmyx6bg6ghv2yqVs/CImeSI72fpyqa+gTYjU5BCYCckHxUnNEHRQ\n1DpTLDSXomDzsukOUbPdirYU543kBDenoX3YzhwEC+A34SKfqNYBpNciqM2I\nhEsj3P7VvcPAtVGHrTcCECHqDiW+JpltBvjqwnqVfcrjrEdlMh/eG7SxKMHs\nHtTtVPsSJHUJeT5sCxrRa9Qzs5w0zRFEiw+TnNxoqF7z+XXJNm9+9nL/4d4y\nHE3A\r\n=qrf9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhJ2zIKM6fnqo1Mzk2Ew1cO9Kz2Cne44MjdvPWDYyJBAiEA6UHhlQAsDVkGKeVOpJgwm2vc8PrWvxBVfKde7KHvgUk="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.22_1549983019386_0.7852563785955529"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.23":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.23","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"d70a0856bcc030a6fb475b074b5bbdf274393a04","_id":"i18n-element@3.0.0-pre.28-lit-html.23","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-QC6xfyfua1pXCUlDumm+ojNfo552FH1XqNos4Znh4qJICYHMjTmSdSroPaM9CNuEHQ+1osZBszPNSn6vFS6/9w==","shasum":"64aa527f9ef8fa8b0fc14c815fbcccfe960ea28e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.23.tgz","fileCount":1740,"unpackedSize":25131051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcY5r7CRA9TVsSAnZWagAAfkUP/2N0Pb8+PAQmFwqAoe12\n8H59IDB5CTS0P3+M3zCNaM+BtQhSVHgqEagCkdMQlKJAxmAyRRW5qhjs83gG\nRIyuhqI3r9rn+6AmsHufsC0NwGb+GT1cWjV84ACnrC1IPUo3IT0FXfyoNfJH\nheIydVxZ3COZZQjSmZCJsN/Ka5bvb+ZNNtI3SB6GBKC4EBI+EEwHYGpWUMML\nFYOciOSDfIq5eKF9eKn3rBgbcLb9aKzmImDeNoTeAj3WnQ+sJrgdOiSq7Li1\nA4gYysJuH+kgi2Bw1hioqtDjLnUE6Io2Mraq9F5w3EGgm534H3GbYracnZNU\nP76kWA0liHxbl7E31chgk3DziKofrb3JgK4QyeaxKrZxv6wsFpVzp74EfAsh\nMr11Kp6RthsA9wiPJftrGx6lmmv/nDo9iq7lUgzhLoDDQg/2BQ37m6T/1md7\nXBtxuupKt3LQNGoHXOYIy4QBt10nsi8jAfL6FwbBop5nBlmItNsprDpXwHXS\nIdS3s5FzK+VIyKuR5mwq0ed8W/sgkUyOyXfRHSoX7obHUQFE1gapdv9Ro5CB\niCiPYMyLx18yIkvcqOuXrrBrJHUwhAsh9kLm74WAZ4+Zi7QmjAU8fNLE/a/0\nFi3npeWJIvdl1Z+0p2mzQVM2QH/BDoJIINzGPpWaBM7BX/KUP4MVn9sqhF0m\nRMP9\r\n=8EVo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFg76wcBwIrmPVFkn65mtr9BmooVW6KyhxM+jKQQ5kAdAiA9xmJ7FOv5I7BNbre7xTocqbO1rCSQO31+cWyByzeSHA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.23_1550031611070_0.2707779110413957"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.24":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.24","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"737ebecbb6db72aff70707c654556104f95e1a60","_id":"i18n-element@3.0.0-pre.28-lit-html.24","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-uZCHCu/eArFAjDVkScrhveRxZW78Rd4hgW7J/2mSKyv4K280nJ+v5H6wRmWOHdaLm1BlxxWly5vcBk0dX+G6kw==","shasum":"50d4dec924bad1b8f35b24ae5cf761b102d33227","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.24.tgz","fileCount":1741,"unpackedSize":25131154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZVa4CRA9TVsSAnZWagAANOsQAJ/jwv1GHzl7JUaC8vse\nQNeYH3pPItvuJ+Mi5wCIMyYsYHg9VLHmYfZcX2GwNoSzSeD8I86fPNmD/u5w\nDjcltsyccUMsm5/DrRHZNRaj/LmLpPTYJskjzcBK3bW13YNl/kAajZhiW3AI\nKdcNqojlEWqeIR856VrW9Ki+6TRZ11LxpqFVKJ9lIqgVxhtPLEY6FRITg8nU\nKngizhwzpxIWqCLinje+vm0mlyqVKEUyJmlQsR8m0uDk+4dME2yqORw2jkDG\nEldGFG83SwxWhBEZG7G8Z4SZ3djIFR8WPq1tpaDD2YXvkAFn1fE6X2k5t1yc\nOXV0oW9UMrRPd4zxYz1yMI2hxZr/KXRWkAnAUTltw0IJjAf6rIXbf3AD08A/\ndYG0fN9/xg/jBgzUacQ/yHUhytLrE5C5Kk0Fzv1Vs1SpAU3pMcLmSB9qXta8\n0MLBnt1DgnKYw4VbEA+s5L8hiZnVcTPzqGpzdwasBvPUNH77yzZShOwlC3Qn\nTmRZ3gDRGKEBGlCK6h3cGI5mlyxl/pyptFrRy7OVAlFKjaDP3R8K3GTvr7W0\nIgK1MZaqiUbGyLz5WOiethirM0FTyc4V3dasng9ZmfSB59ap664LJhwBPnQO\ngYqiIemIorbRP8NkYMbOoBQjyIszvL5ULUcRZqYxXax+s9AeUUsb8f+x1D56\nVQO3\r\n=McgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9C/LuG6PVDBIqvltu129Pzq5viLNE2ytTaT6ofMp+ZQIhAOCFbpsWxouMXQUBassIitAWWSwuvBg2E0sEGfJXDSrR"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.24_1550145208027_0.9636727304845218"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.25":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.25","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"d14fe2a65340d41e8bf484dd527f2c66d97035a7","_id":"i18n-element@3.0.0-pre.28-lit-html.25","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-QTpXIKq76TTv0uS1IZZ1v/KbWbJrOrSfWNhroGBl1q0g6Y8Ur15339KXS4LaMlWbHKLb4fzXMx9ky8v/hzLDIw==","shasum":"d80d805d16c6516023f746b3c8bc3829ac4a53d6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.25.tgz","fileCount":1741,"unpackedSize":24947242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZnZACRA9TVsSAnZWagAAa84P/3B5u1EvQK3EeDBYRQaw\nQW+gPNjSEB1CRm+JvUuLwEoWnm/0KFsj+RbjpwrF4mhgkBc3reC4Z78Eev9g\n4JSmUIPVnKjDjH+ZXsxTFfeJwsNSidTFMeH3AGrj97BWL9uNQSsu3mvzOLEb\nATfoCho9o0Od7V7ZPsbBrvKZzDY2+ChfRr8XBxpqpmJx7XCTR9o3o149B3q6\n+6zTWSSZoAxjUE74Qpui5oOeQo40NDyhPwUnznSv2Q/fAuNAqFSufAxvdDHN\nnQk+iUO+9NTSQpy/DEYUOMLKbgV8M4cNS7zJun2hi1EeXGmSPH6mLx186RkD\nzMaLh9xdPABXkEYUfw1cghqrquGqHNSpp2HYjJXZDUbOmhvIYx/7iq3C0YiW\nEH6mTVIqIwQqFspwG9q724eAex3cGIw/4GnQkGhCNR021uOy3d4QxqhdLtJQ\nZ0KFdRPd0VDeLIAYiS2gsg4b8q3xR/XtV01jur9sOyiD6Mea44/tr134e1ee\nk/dm6PLBdlSr1WZAiE0649IbwzF8jS0f/98DSTVC4pVZd97P55i7TJG2Gk4G\noEwSFQTdK5ynxTwvyfTlQ9DK4+vW6x3uqW2NDn3TBbBtjlZFSBr+Ru+wc17B\ncrBzkWKkCpptfoJqN9m5ccQJk16gXi5XenTy07YUoZbYEL2Y0Xfj6cHkCx61\nP0wa\r\n=ab6h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9N04y2uIZOrqKvlRuIEcc42IhKbpSNkyvMTfvXHrHLAiBwa3oj1vsA+qzW2f+mCalTbkolnCcDhnVYuN8NNSkUiw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.25_1550218816148_0.1553298440324966"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.26":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.26","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"46e3c47bf1af7ae4e949872a4dffce84af7be10a","_id":"i18n-element@3.0.0-pre.28-lit-html.26","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-ckheuV/2IBoEWBigwxzgEU9a+14g6AK7aK8ntcfxOOuzzO2DyhlIOO1zv7xlymRrGRnL+AGlCVxQSVr07uqziQ==","shasum":"4c52a621885364ecbc36db3370838305bdafdb65","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.26.tgz","fileCount":1735,"unpackedSize":24986854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZ/rTCRA9TVsSAnZWagAApGEP/jODt4NZyyFjE282v04z\nvkSCRWdmPvuhHgz5b97jKVN/Xy2EP3sJEBebvCyTn29YfKNuQI3JrbPHIet8\n/LRqVNzdwztEyo/VgupTkPRBnpVZkV3mlnBkImS5Lhxo2bP3QPmIBaT8TQ/T\n6m0X1OROOjsrPdXnY3pgneRycdKipzRF8vLHVg7DkdF4ryyIHI+pFXb7n/bi\ns3dwGCkA0H9j64CjB420hnRMdx8Mwxo6w0yjfps45XQWen+kp1lUmOT3EGWr\nzUwcGVxccmsOHpcBA1Cp+SI8TNDoU1sm77ccIhSPpZ03okbLdN17eMF9vBwL\nWmKWXQ/cESz4v8QKZuYVyXLxgIHM3e11CQx1sU18w3W0mE0zgo6zt97DKaLH\n/SBOpWLJxoyVJanmtRgmyQ42TjMHicH7tof1JuZsy7tlXD+b7z5gHCaIhqiU\nE4sB5Gb2qlWVbj7K71MClzevSunrf6c/JGorwD30fmEREstZKvnfXSvMKGe4\nD0g8jacgyQC+tdzvYn9K8/+X9usQB1p/aSkxHaElVw7fz+UuFhnk6ALM1sqA\nvUI387JbDS13yjBeSRD2qs6zJIRwDaiAne0trIoIYazQkc3d/JpK2kjLr6HG\ncrNC5X/P5PH+AJES9GjObbaEmelBOcZ/HoV0zrZPThnGswEjTAwth4TACfRN\n0UHY\r\n=Leyp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtLceJnJrGARz93nU07GlfTsdX59HZSA2DssDrBPJV3gIgeTrb2PdDlkJmejcHbgJ7mFoa+kTnLMi9FZLxdwROP/g="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.26_1550318290457_0.7905187302763792"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.27":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.27","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"493dda43a4567d0b313888e1f083e28787f8f7a4","_id":"i18n-element@3.0.0-pre.28-lit-html.27","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-0ybWDBPTIzN7sLeKkBmudIjY/++DgXOqDNlEgRN9Ll77I4lqpNZIUr6Z5vDs3jT2a7UjeQNUFvKzmHPCis2Nfw==","shasum":"42599d136d3d3d6124dd3eef6e0cf010c2b10126","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.27.tgz","fileCount":1735,"unpackedSize":24986500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaJ0qCRA9TVsSAnZWagAA5n0P/2ib9kF5w90HZX4+9H1b\nm85Z1Tk9O6eErb6WJ+I9O5X5G4lrpgW/pbESXHKduLa8m1wNbZ+6lKBWeDdL\nJtO+a0jwzzv/hZcySxFJiRBXSZzE1aART5SqncNPXNsNL0+cHqgbMO8iBJTa\nGlClY0dG3J2E+DynwnXbWo/mC9ovO5Q9PDg+crMl2QqVPHTU2DKyfERi6+tE\neqPeXUJPJ+/TmJc8kojiCaw96sAR7Qp1IzAW0rqebxz/HriOPHIUugOOLund\nS6uSv213+ip++YCMMw8jmyQsPNPt2aDkhsmZ+3zOyFn6UZZoufc91MnhPmX7\nxSHsOVtkbAN7r5JGQDS7CKKtX8iSVjAiEwIWu8WVPJTYEztpyjL7l0lv7oYp\nFwDv1ro660ePf/dtOQ0fGA3WDgP4NZTNQlHERD96nEWGmNtif9RBLF65oYIq\niACtLtExX532a3b8M4mI+f/x/Umz22AImTd0tZIft06b2iDH41NQ2i4qnBT5\ndJGgsyztGPZsHCp0XAg15ZnmDUy+fs9GsOBDvf/MhBBprhzwKtlR0yl89zNi\ns+pWTa8CUAWKlt3cryTMtYc3HR8CvO74YWbadsSWODCnhs/cCCbv9yeTEz7x\nn+ELv7er54VdCnthkxyQMm+gmb2505uy8MS5t0RbzDwumAw7d+DtIZ32JES3\nOkbZ\r\n=X+ao\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSP2g66wVh8FuGTlGob8Z2qAawNzJudIppyaPw7e7d1AiAp0WfraOeDEtSrszZAV2c9saiZwFQS/M2llq3qGy5LVA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.27_1550359849498_0.7264356926828137"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.28":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.28","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"9ed60206dd98a6e6064f874db66b0393727e2cea","_id":"i18n-element@3.0.0-pre.28-lit-html.28","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-uzvCs31z8G5kY0T1XmHD4YvtpSFyAfkB1uhZthxDlBE+ambbLaYGbYk1EFEy9BV7jtQOYGyM8rDT/gbMCl9DsA==","shasum":"7f05b6b8254f5d798766fa9eac97bba943333bc6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.28.tgz","fileCount":1735,"unpackedSize":28272990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaMjfCRA9TVsSAnZWagAAnW0P/R6c77JVcN9VUfwwi6ET\nDZYQWcK3dG/uckV6PvTa4jzN/Db9Mf3cil7n0vp+tS6TGaA2UcCgZaDi7Eh/\nhTRNvsjr5rb6ZT4DM7VzJnmh0HXhP1ASnivi755QdFVrKY99wRLbWBlZ4sLz\nDwuLmnJArhdRLsMiuVT1oMAlCYMo/MMnz34biNlw5x60pSEdWwXtDwD5HPZq\nvNIyskXIXwOi31pVnejWe+pb5UJysF3X2zHrHyDM7fuLjP1n/sDjk5rGYJlX\nW4nY3wqbseaffVWVqnWAKjbd7QVYcROky3keeZpll611LIr9EaxrQR3YWWHM\nnwaUAyYdHILV/++wD35vnrvJZxt39j3L+fv17GsUxZ88QtPy3f6TT3MHukB5\n5WHlZ5/UxX8BA7QXUUaoyalWwMAXZT6BxDS+b7YFt/WPoSOIk9NFLmdTEqGv\nSBaX53x2Pk+zz4tXq9eKhpXEAdk8H3d2mMf8eWXnRG53i/69R3WxKoUtq1km\nL3pek8ujc4kD6XuJNRMEclwtZLQN+nzh9QWtJZpioStusQhJYPjWvGHTIdhH\nmejFvC37u1j5nPonbChUDLrYz3SXw0nv219i31giBOnaK9R8KR7vfMNf10Ab\nQIPjxKLD0zJ7fZ4MDkY8mzc+VXe7gvo3zP3BhYc9P9xkZbDg/mrWqBZKMWwE\n9yTJ\r\n=6/mb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+5IOL4bzeueuQS8GUQAMFUsaLmsfjRiMG7OtjuLiFWgIgRIan/YfzlKlnvGAAyeO9rS8u4iFzCZZIucMqGgfoNg8="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.28_1550371037608_0.7275603244168234"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.29":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.29","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"96f172cd15b7c9d5a2a79f06bdb6af5887facfd8","_id":"i18n-element@3.0.0-pre.28-lit-html.29","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-HYinHxuSkI3yFlhfnCpTrnHHnCb/uvwDOWfEDceyjGw56SlCqgQCRFpYCJlYkc8MLsmUqmuSnJikQjiGkhbWeA==","shasum":"ba8d6ce130c5c4a6282b0bd9f02af61164d79033","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.29.tgz","fileCount":1735,"unpackedSize":28262983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcaiRdCRA9TVsSAnZWagAA0qQP/1qb+2s11FePj5RXY5Si\niSgVBkugz+jTDGS9TiAMPL/C2gyB8zXuSwrpuQRus6XLlA25Yx+VdAnWJF0P\nKUP5H7O2yb5ljjLu8RkPaaSjB965glHAt0MJhMVlZmF60LUr3qRtNXAF2z6T\nG04dcdUvhbtv6TOhtAwPjMFntw8R0fa25LAQ1iy5VC7l3q6J0mCCoBH9q9VJ\nv8hDcTBU8IL5JDfnZsdgz6V6hQtukDWP2FH7xspv6XvrO718ZpmfLLAWPFMN\n0EpsqQ14idnwbs2uD8EVfxGHUaJZjBuC9NbmrjHUtviBCKi+noidhf+8kv5V\nGPAAUz5mjVwXXFCBOG277VuN0qbtUac8JpT1MOb3UuoduSuITJ72kM4rws3A\n62xJQr6JDgjXnxldRzJPdSU9Sn11elcyf3rMFvocOEe4pfYfi8Ey+CGP2xXl\nZ1baKnrckvW9P1FbloYKwKBS0BHlVsqlIHYBed6RSKgDnbf29/Zr7y/G9eUl\nATGqCuhAHICZGXYYSGowLn7H9vroePaNCuvrt7Rvyec8gA5PoyeyHXd7YmDK\ngSHeW/mHQynnDbdPAQC05c6psi83Rx5niIJxSXD1XUUazWVq72zbf9AVOKts\nOW61tQA+Q3GAqB5bssB/GeRKu/bq+xDdyOy06W+cfoYM9KKPeGZd7ZGXfj4r\ngW4w\r\n=2Zc3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDoPJoDZmKtBwgqaS6fkVOQf8lqlsSzuLz0LYyIHYuCiAiEA0BbX+NCXnn8ZYoh3BEWpp1rhuMOo1G1gJQPn+cVrIQ4="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.29_1550459992114_0.8500322068383621"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.30":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.30","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"440811fe91184d97307f6b9d00d56119906b779f","_id":"i18n-element@3.0.0-pre.28-lit-html.30","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-jtfT9PTX0fhawWRL6DnL1iwAFclkwMqlBRbBV/5tAeeIXoMVP3p/nnoVeFkGFDE6jDVYW9CV7nEeVwdYYQYaUg==","shasum":"a20acd6e55389e860573f557b40c39a154f01c41","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.30.tgz","fileCount":1735,"unpackedSize":28306368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJca7KtCRA9TVsSAnZWagAAiyIP/jhxQ9F24zE4MOR9WmpV\nBBkk8H2rxYpE/+GRcSKuqL6z16EYqqkklyUuzRkXrkOA7EFo+t+b4iEy5Rr/\nxk//u/hezGwXdTZ/hM476hiu4Ym9M8MD9VakZJev7c8JAbmgcsWLaGGwvEMp\nenp6nv3VBOb4ZPRhV7UpYHk209wHz/WsCF0QE6zZIurWRBJJLUXyCU/irwVx\nXdDO2q3KSdCzEmuTx7VpjtE/OpL+c8KrfCST0hN9m8NfW0VDUU+iSTNrOWNR\nn0WVh+xBQfUfU91/9VhhINqgzVgBBO8BOrLkxM83WfMc8rdVcEDSIUiO5G+5\nqVIRdewVvcMdcYO01/GOMb4Z+kX8mDM+M9isf3GmgFm3HPEdvhI1Dnx0axF4\nX2VHB2nTFb9vDeBzVVWK/1iAscWNfOs7z+FIDkZS0vuYahOxwiQQyFtWYN17\nnI1U5Yn+NdetIryyvPHZ8Gz2q/LVF/Kmig+z9HogFWHeOAz4NCFRL0CbRh62\nxvgsTpitlofP59jK0CjUKBHqIbG59b8TbeqF93PEx85ocKJOJHqUoKrOQJAD\n3OFKrCezF+X4lR/XcoKyn1XQxpavMpo2vc2i3KCEQMRFTDtaxH0+fLExhcKQ\ndbZdQeFRSHryflNb/FS8FrUTYFuWSp94z9iYYwacwJrlg1xfS9BrLTgxqlaF\nG7k7\r\n=Rl8a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBGYZde3ITPJMZ1xUm2FTm9sQ4yjNn7WVC3FmB5Q9OxMAiAfLT1ZckpUG7nW20ZCHaeh+w94QGh7iC+5nd0lVff/Rg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.30_1550561964739_0.608979725483473"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.31":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.31","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"faaf6c956f515323426dd5fdbe049b69fbe15e62","_id":"i18n-element@3.0.0-pre.28-lit-html.31","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-xgW912/lsGvtMMpNR3mYLR41zotXVR1bc1OdW5qTCuirLQJk1F3eMYkENc/b98yLmrGAmxntGPfgxD3RNeHh1A==","shasum":"d8c4ed95e2834ea7bea57fc3bd065f1d26b48285","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.31.tgz","fileCount":1736,"unpackedSize":28336150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbBl6CRA9TVsSAnZWagAA7uUQAIBEZ4dQz5a8/TjR20Hv\n/sz3WC95qoDVapQvgmrCamDuMPVb5lSRDzLG/iCqrvljJdfdMjAjmUo5WLFd\n6OINduDdC2p9I7Zhy727TNtAKxatOzi7NZlqfgwkvxTgCZB+WeDpItqkObqn\n7cOrspHxBiajQR5gjwDmiudkA5LMtyVI6HCARVtH+/mZ0K0hJFbwUZBiz7Yv\nM8vtdXG2zAo0IWdtwWh0plc87Ey8DS2564eGXpUh5vzgDgVP/2dyNcNN5kJM\nSISKluzlkV86ivoPOh3Qvc+0CW3uktBiRUx10wPYr/Zo0TadZn+T3/qVbqNL\nNHglYA4k1kGc33f9FAUwT3CLST4F3hnuc5Ct6l8WuJONQm7rNuzRpRyCoTDU\nKR4jhN8mlmsX+vM26MqYBHdT9pblq8/+fM1VYEG1pPRIVNJpcCZUPoIDbKp8\npUleFR9n3FWfTXL65NAKcvIWfeRvyMaRgoLwhZsiYWtyFQ7VfwztzTTcmdgI\nBbzNSA64HIXT5oigBPXQqq/9yoqXmaw7WWJgykiHKn2Scq5RmytABkN12FRQ\nsyEmrSm6k9t6cXeTkCKCXE9cQFWFnECc+Jk5vI9blMyO79y46vWByLEddkmE\nReVL6v40y2ubO/5ndSL64v2c9qjKTYJKjRyIwvuuasxWabqh0/4vNnldV9FA\ngj5w\r\n=2ejD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8vvN9whq5gyT0XOp4WT0Am89qG4rL8qRVdTy8J8enlAiEAvTbzzxs73UqYBlfycFtIZzopRNgs+Vc6AaYW6uzuEEk="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.31_1550588281536_0.9082146743198682"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.32":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.32","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"4979fe3c57519d5569a104f2f9cb693be6f6d169","_id":"i18n-element@3.0.0-pre.28-lit-html.32","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-q5MpNzTdyFX6DFzXaC7COhxU2b/f3wCJ2CrybX7xtOCOddPEM9Zx8nK2zXi3SDGwLieHgMlO2OpvBTX5wegjeA==","shasum":"7f75350966d883af549deafa3782fb872f950a9e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.32.tgz","fileCount":1736,"unpackedSize":28338351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbOvPCRA9TVsSAnZWagAAjm8P/3on/rVFR+QeOVed1N7m\nhDC5yk2ZfZStTpu4MU5z493RJvW9lx8Znm9N6f4AwvXBAlUOjeG4S3mt9Gxm\nXaEYPz3Uw+2ccGh0ulsAmbVUIQ4Wpm/8ESpjo6285DtM9y/6oLQfkv29MdWN\nA5di9LNzQWgUieE9BFpmrh4Msi8VCf9IFiKp4QDXlsBbRJxdyCNNSWmxbCJq\nEscefIgeAvukfApI6VXjtLwYbDfh2QAKBZzhhOX7bByUdAmCUflFZQeqd1cE\ndmcZyWGvflL7YkqOWt4oMixCNA3+OynqtJm98hDZ1a58qMPimXGHKouo3xHM\nmaMN9TzE/OLu2nPHdNNcXxmHnXx+x0DNECayDkWLTCpeIgDMNMAhH+OH7ldq\nSQtr2JENb0kPEI8GAi46pMtqHZ4TVx1f0i83RJ+knsd0jwEo2qXTP2iYgeKn\nrX8+nVPxdC9mgKGEcWXwMQ1MiapFSma6PNiKEcyaC1iErSp2cGc4nz9vR1s8\nAwgvpj0aBsDRQ1pSaoyJJ6LgvcjUDX4nMuuxtEtWDD7wwQu/IAIr/sdFh/AD\nfUMesNHybe3bdaGtFI9VARy46o/kkiRlcef3kuNdiLpX8xoo7V1OvloX4VKJ\nfhpv3cPEiqosbKC+c9zw2vhAJbhGIG+v50aH8jQkWRLnc65TYa7/iou2NBqj\nX0cO\r\n=UHG6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE22wEtgTlssu2bYz6dRn8HsVGWkmbNy9LAfpKsOhUMFAiEAq3wPWYAI3k6FoXMtAp4KWK43M4bCPF5s26yIEu4xSxs="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.32_1550642126014_0.5372533745990793"},"_hasShrinkwrap":false},"3.0.0-pre.28-lit-html.33":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-pre.28-lit-html.33","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"7b1f6107159851ed31376f1b8e9e34b38f0dc999","_id":"i18n-element@3.0.0-pre.28-lit-html.33","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-TqpT5bFJ0FDJ8Z36ilimbyfek8IVQuz4gGSiwoAskckda6t2IUCIkL7g9h9sdGMO1ppuEUAaAmLmAVt9j7QZ0A==","shasum":"0b8e3bc2bbf0556122908e6203b6e42e4db4497d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-pre.28-lit-html.33.tgz","fileCount":1736,"unpackedSize":28357381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbUD7CRA9TVsSAnZWagAA47AP/jwzXIRlEJkvue9c5kUs\n3vTvy+Zbwg0RFgQRJ7zzdLcdIiz5Lmc27023OF9PLoH5hst15EUeNX0yUiCI\nx9aJL+WlwVfNu26rud2BVZ77jMQmiejVstAoH2v55YHOSR96dbqJ+X10pOw1\nSroNrS9qGKm/skt5OMwIo1Y6J4Pp6Hu7Hu6KQ2si5Ri58ut4BMvdDbG2pX9J\nOI0ZMGlyGGNuDmAXl5R7JSkf83m37uWCfXJ3AxgajyWLCdG92RQodVqJKjDb\nYKLQVbDL6JDRCNubs4Nc2ezzM8tOWSJbDTTAMPdin8t9//WNsu/n68cZ2TQT\n7oZtRKKlznNdLv9xumsK7TZO2tJJBMtcLoqelV+U+if6uBjrOllRcQNU7quw\njl3yRzt+tJNYCEUpoLmYhbqEJxK+nDdRqDiLx8jHZ0OTP3/gIcCwjWF75lHe\nC3rm2uYkMjLCJ2weed7Qcyrla6fskRrQAVgOBonN3bk2sEqqy43mEbdbrEDd\njtbpjtWbQD7NzCMss2RtDSMftEAz2gu4mUftVr9dOiUyTk+BhfPmtU/X8Xu/\n1U3CXU9Te2UlBjLS1UVirosr2dh5fhovsZ6/ZU1MF2UvUqw1GBWcCkGZh96K\nNH1frZ7G3YX+3y/+DH1buQBGR7sGfHP/EZjXy7Ql7x3G15IlDoIdtgvA+yJ7\ndWe8\r\n=jBrj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID5M2qbisX8u4zjUCtn9ynHIlvpe/cVwxBlL0hnVAxFwAiA0M2TwOxWXxVY8Y1tyK4VwJDMn+Kl0F/eYPhfe2SpK2A=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-pre.28-lit-html.33_1550663930963_0.775084325953685"},"_hasShrinkwrap":false},"3.0.0-rc.1":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-rc.1","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f4c472611a00e029285f9df63412a17c0fdb2c27","_id":"i18n-element@3.0.0-rc.1","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-InRsRopjClLZp9yCFiHfSIpzolT2Y5fTdUJDhUjuIdJnAY/5PIVBADPW09OuBXDtp8koPkx02JZt7NggquZ+Bg==","shasum":"3d8201067e03a7d3f5598561c970f33747cdaede","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-rc.1.tgz","fileCount":1736,"unpackedSize":28357367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcblzvCRA9TVsSAnZWagAAEOAP/R3PHUNWSh38DlWMfVoY\n5oI+m/Foqv0TSVxfWfuGIHaCihvxKWfDSLKQSSG1jdYnSRk9qLshv2oPBeCE\nzPGhXRfA07wVA1lZHEJTrHP/R9yLeW+4Wq6w0KetVUviL/XYuHTnp78koVs/\njRvbVIy65Z2y1bScs1BBQce2B069yS7iDbuMiC38rax7HyyLH7UY0v5204Qp\nES3GuVrGNjGfXfj1DMZJZGPdRdtwW9gXqo8v5LrcLFxkpdGHL5U1XbkLVZ79\nAg04deG28TbEAKRaFG+vZ3GTqey2WZCCspAf2dKy8TS/lsAS3anbygQUYQEM\nj73wx4Po7huFulQLWdZE33K/lC/s5waa+Rgy1ko2WMYXWaYHuKn5HXAZCNSr\n009Y1ReS1Xh0gd/kgD1LP3OSjuUdzvX/NJTCGw3QwVP9gtdzxXVWN9rr3W9Y\nZe3LxFecjY24jx9HgYWhRKkbf57t0H7nVQvkjmoKxaU1jChNa8pl8m+3zmPN\ne/wwogRab9BGWaFIWcyCS53W5chMQyEpf5Jl17XHiKG4J8TefkBPEQD9DfyX\ngLwrk8YW9v0Q2xqZq0TaXhldPthTRdfE1JfTPmPaSJgtQog7W3oO46/nLRK4\ndbuwHI/dJO6cdBk/tH5XaWeS6SphmkcSUhUuJJalrku6kEl3l27fgFWzFf6i\n1Jz1\r\n=F6Eq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBr5GaV3HyLe7/Son2NjoxIIFmEmujJuibeV0XKGKLD9AiEAv3R/56yv0vT1varVQozqvX0lJw08rT6LNXj/ZNFmJJE="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-rc.1_1550736623000_0.044950281699073"},"_hasShrinkwrap":false},"3.0.0-rc.2":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0-rc.2","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0-rc.2","lit-html":"^1.0.0"},"gitHead":"6f2ca933dd9e0653954d2071e0a3158fc93fbfc7","_id":"i18n-element@3.0.0-rc.2","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-lHtgObPJtWdtgAgUU4ewhhognADKpHYExQI43GgbDcCc4GNGegTSgG/HVuJwFW+a4Oky9oeE51DbmdhQnVTyqw==","shasum":"33a115cdb9c98386ed8ca5fae0824f4f5c0b5746","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0-rc.2.tgz","fileCount":1738,"unpackedSize":29398511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJccVkACRA9TVsSAnZWagAAC30P/3qiioh+4NKK9/cvwQUA\n2JIoYHfSH/uQe2Qpr5ZbDo+a1eQyc9bh05z4gFcmux1dcHLOtBEwWckxiz4M\nMI2RbvGtoU8BtIwKb27Wm7z2L5oa/H4HQOUUqKie/QxfXQ0zbqJZ9vj7EPjD\n0QBXeES0xwJqb8ISHrg9GdXFlrAMYhTpnuopO3LK96WeBOCUaTG6DEZzWi6V\nk8WXEFYL5SMlMq8tjNcH8JXAOw+T3WHTfAjoQfQHa0SAJrXyE2EVkBJ9XlPJ\nGTXLGYGIVNruFlPTODMoRkt0IvgZwVe46fpbHL7n//ERyZzKeKuhMg7jjr8V\n73uQHBMqsvYYflgA/EFxwS4mhfBTcrkTKykxgpDW4qOky5ITXJe4yqM1tylr\nB8vKlRxE0BO7cvHL7foZUbpMu2XfAEm0bb7Ccfynw5+YJl+cNT/t2gm2MHcN\npWTzvRQSjK/+yluTOiBvBdxFjzOJib5J6Gvg+7dWd2fe1RWj4CdkIXHRanFl\nNpvrIO/A1mUasGSXlEyU0lDFPPHMczAnpZb1FSdbr9fKATvNggvxSF+yIJhQ\niyy2LYhG5rwWNiBrAY1nL39Xi7ss6pHYI6VmjD5n+pjpWh6XhrFHqwJm83wP\nYOaU+5sD8ElFXGlxqWRCBlHo1xtB+mDNeY9Za9pzqUPtJId4YSLdAGu50Oht\ndA8Y\r\n=5Z3O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCga5vXJxDPiqfSVoWnwXkJm7FkPbjcz6ghyQzYXoBK/gIhAJaXo4xzBPeAIMte7QotUaDvgC2m7fMuadV7E39QmzxL"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0-rc.2_1550932224168_0.2485978916191962"},"_hasShrinkwrap":false},"3.0.0":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"3.0.0","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^3.0.0","lit-html":"^1.0.0"},"gitHead":"1599ceddd77b8b47913a0653e3bc93f19019cab9","_id":"i18n-element@3.0.0","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-qBLspUajUQO0m6P/cnU6Gv5Tsd9xBNs62PMFbQKdW9woZk+qo096+07CfmstXnZzzpK8bvjFUMGtZgkWFTUFYw==","shasum":"2062787986220660c47d570f22d40057297dbfbd","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-3.0.0.tgz","fileCount":1740,"unpackedSize":29398990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJccpX2CRA9TVsSAnZWagAAQ34P/AmgfWv46ZNDtz/EmTL5\nEyrkZzOHWfq6wb25bhXpYbyScXltwV+M8OcJVyVliOGQzd0qc1IfukdjzPZR\nnvQ1q2+hYVCNAmuwNbXjaIRE+MZM11NBqcAZ/W/SNQTh/RpXBWadoMHgSwlm\n+ggnlBoxhmwsXxT0yTo4EEjfzOuiiVXF+BM1ynFwC8Z6bXsDexbQOQCNh9Y4\nLTJSEh8L+wRJC74bcBwzzCbnzzALZcuvKGxiS+ZMzQV/217jT63nP3WeHEKt\nUiz7ixh6w9T5r1VtYAezpdBUGcQjmO3GDj8hvFapqwa/CeIXVz+78zeaqbaz\nT5Sjeo2dyV169sn5CM/MLkQiS42WDlICui4fuaW1TK7J70hC7f0uXU33FEzQ\nynknwKz+Ranmi6jeTmB4iKBG81y92M7s51lvh8C8RUj7GfJevrR66voJCAaz\nUJCiWqCp99+D5+LVsBnr2IIA6jCiz7LsOOtXatwh6ZHxtLrPHKrj9fnHtxZo\ngVkvUfPb1kmygubb5YLqY3gkftU4ydG8LFzEKSU/lZX5mNWc4J9jMYB0rWhB\nLlCndDJVbnHmttlM66ukY/GY6aR9q8v7Vz6RX39wKysXCwJK1oZ6Ct9n+5E2\nLNBGhm8GWiVcQjPZumi2x+j29/sVWuYZ0b8PV84+MQZfuIGX8fvI3xhZrcSi\nF6Kj\r\n=xHwp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlSOoispfQRQasKJom2dj1QJuGVx3cVJZMkLjXnldmLwIgZg/T7RSghIH/BefRk14g+qvOI2A6J+7TaMifloQgeQc="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_3.0.0_1551013365725_0.0030996539167931214"},"_hasShrinkwrap":false},"4.0.0-pre.1":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.1","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^4.0.0-pre.2","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"819cc660616b8a628883886c7e1fef72f46aa33f","_id":"i18n-element@4.0.0-pre.1","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-kdePy3mgaJiiWssKlsLXeFoUFYlXEvM+Rh3VFmDZb9fP9rt2NcSEq2N1/W1u5PCTAdmr3y7RrSnc6gHmRiWFPw==","shasum":"f0a89c070430568f677385fc30de47d2353edf8e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.1.tgz","fileCount":1739,"unpackedSize":29388886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfPdECRA9TVsSAnZWagAAaNgP/2KIrSzKzM3J8pqQtl1v\nwAyDKMGJNXnPfGoF0GdYsyw339ZuciXtImgT4ycYhs6i32ydhVSJz7sl/gT6\n9AIQ5qrdINB5O0ALG79hb0AD2y++Yv/Ai+VAFPSiLyQ9++zyxKLsVWxvBC3n\nesEleLd7xNmEzKBZvYiREOd4FLAuJAZtpFni7d8CHbvBoy4Ag6/eeS5uoiVx\n7i2I1PSYxc+CPYwXyTEyKLYf/AOUM90+F0R/6y78NMj0NTkXr3yDl1DtQX8P\nPWVZiBDmEjGMzDPhwrUDKB5AsNDHjp4rTw1/KocIp6wpIga5Pb3gNPVTtyjl\nTG+1yG48UOE9F7VFY6npjS0eDSdqJtL4g1eNO1dnx6XjvC5RbCRyGGr9ufPE\nF3QRVpT+wogjkrQ0u6WEjytoN6wMbnTmgM++ttq6kF6LeaZji6SsXUL/yIrq\nwDSiN4xqHdTUw35XT2XZRLKPF1cZYttiZq8+HlQB1OXeZOPEkGZ6wRysW241\nOSWuwxjysJP1ObRVMpPMyZWWoroKe3rQ1qL1PiQjj7yI8t6VPPrrg5hhS06q\nkEdOCczVjZeDafagKpyZWSub9V5dRUjOGxFanXyAr5TAvORgSwA6rS4L3DQ9\nJoxmiBZM7a0ar2SPAyMZZzC3eV8ob0OlG1u4wjOxLn5i8ChqiDqftSPUXl+C\nsLaN\r\n=Wx3C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEKpyqKTFQk8XwEY8WYr4sAjY61nKSuQZYyUv+dGNbT4AiAFv94xr81DTZirkgnCOTi/4uuHdgD+oLHeTxV4xiTJqw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.1_1551693635447_0.5815414575396802"},"_hasShrinkwrap":false},"4.0.0-pre.2":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.2","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^4.0.0-pre.3","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"74ff561b9d5ba8815578d8e5fdfbe6533c82734c","_id":"i18n-element@4.0.0-pre.2","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-ANr0+Uf4eYOJdkFPX1gbRKBYrZuVHpX22Vpbywn4LeCcnpyJIYb5qY8ySzQCgxf2A2mkYh7av4ukTvfoqeJZlw==","shasum":"e0048df003690a55a97960eb689650a383db9380","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.2.tgz","fileCount":1740,"unpackedSize":29393846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfTmUCRA9TVsSAnZWagAAROcP+wRfBhH88T2o8me99DHM\nsKiuHCZDFDElAmdt1xPW2CQiqAXBqk2iSvCUKipc6o0ia4EJGwHchYQlwg5B\nLPak6i1hsILl8rlep4o4YjRyJ3xt+mbUuMljvcUCwmSG9dxPXx9duDmy3B2a\nmQjuLpVuOLqyE/Agzo+WkxNS+b1BLJk98sM8Hmv7Fi4t48PS8ijtSJfadSVA\nyYUWxXvGK86GxXsiO4xpOv39KY9zSO+X81cbUmuC3osnNzDzLAiHp0TlFzOz\nc+krLgWQ7+3Gb4BSBv5/Ey8QUXa600L+oJztnuiKKyfSzGt0mM9J9EV5wut5\nTWRMbRF+S1eUKOUjDUxk+FI2PES0FO+RFBIIES0N/gQl1/gA8TfZk8g1ugkr\nE93RpFrZcjaTd7c9UyzhkJ3WAblPNUPTAqUbK9vzQrEl8NVC667DbLFnJ2Vx\n/L1/YSITyDYyISFKIl4Mgw0Mx2s0zWqxVjDBZyiEbuXJCW27rY+NgmOkSQLG\nr7ZAV1SHm0zhsl+nlgtJXF5QXS/y00i+IOMl0DdQESzXhCPcCeJA1Bq739dG\nN+oUK4y3yC7n4hLa06rBh7mDtHOjESscXu8HQ3Ji/TDaeyHeY/13dZzHFUsM\nAPW/s3nq+FIiCy7r0I1aNxOWRwI0KLmokZefLLSIsPvpsGWePoIOQZDCSxG2\n0zAS\r\n=GDQv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAas0RCaKw5GG5YZ3ibxH7i/V9fGFEKWOVztNk0rJVReAiEA+rGMMvE3zX9gVf7uMUeqU0py7Fn4qntc4ayUUqYE+Ks="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.2_1551710612027_0.24309461533112753"},"_hasShrinkwrap":false},"4.0.0-pre.3":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.3","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^4.0.0-pre.4","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"f9bace34fafc82b5e6be5a9582c441bad9e32894","_id":"i18n-element@4.0.0-pre.3","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-CsTtCPMroLMzm0Uo2ugPYrRNOZrP/fiXXT9Umwpz12QpUce3MqYwh8MOh5ZyTBLBC/UMIpxSCMsFEpouEc2PxA==","shasum":"9675adf91aa035c3648a2c24e9b0f8799c4942e6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.3.tgz","fileCount":1740,"unpackedSize":29393846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfm2NCRA9TVsSAnZWagAAAkYP/inLaArkGFmlKeaF2KuX\nE4u9xM6W8zaR84UMf64uXRhYZ9yLrZI9xoG25w3uBh8wHrigzkLY9S8Wu9ly\ncrWfjm+lkL26RmyKn0wokrs/rDR7P651arm2QP0+EFoP35SUmNVL3ZCbHQBP\ns2XSwdJmNS7qlALS7deTyy5I9iVCRlTF8obWzC7QcI/JK0Ek6sP/omUWm5Nu\nPUGMOk19SoCeGT+IbGiSEYtsDDw3IBbNKOpuuZddPYkqs2ahK7mzKsZU8pTl\n0hqodbirLGyJOYiNrrpbhyFuyFoYw4X/vHFXiXkQcRwMRwYABFFCzoFUhvfW\nqtP/ldsbMwR0COLK7FgLttr4NVVGB1P6QBGSaYHKpSf56Ek0CGA4ZevWlXSG\nhoFhYv9IM+mRiYZjKMm6vrmQDV4zDV6lkuBLhhd8lbBtG5POj3wB6LvGOjY6\nJfvfyJAbmGl6KtLcjgJVT/mEmOfSmhGigsN8ixjtBL9c90LrxZyv1A4X+w6M\n1p+v1Edr9UCyh04IyLrBXN591vdHp+P/1HUe5oZ0YTYOjxM0xYAeBar6YPW8\ntzwYFw8cX9wFIN2oCL5QUMGz4pzSlG6ASVGg3xAV0v4caMgNd4vDqSWix1wz\nct0aYnqD0L4FWkZJTgZRuFWLLtEQcUiRhR0Bdz5AHPw6ZdmPz482uZDvstnP\n90UM\r\n=lICP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJDLfhiXIZUUVjY3bfFlOSXFby4o/lT4EgLNXmbIZdvQIgBAYtCRKINybIoD8RXEv54vgONN5WY48P/TGz8oWPOco="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.3_1551789452417_0.07734585793276216"},"_hasShrinkwrap":false},"4.0.0-pre.4":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.4","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^4.0.0-pre.6","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"5256e8b16917f5d538e6197c93abaa26395aa0ac","_id":"i18n-element@4.0.0-pre.4","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-GOoiKSlsWuKN1wQ8brCZJyo4jqxlBb5wuHtjRijJlWijtk4Y+pDAu+JEcm4SkPKNDbRKw9hVdo5iYwUA+nYuAA==","shasum":"6d1a7b5cbca030b51b5334bccc3150ea772baa10","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.4.tgz","fileCount":1740,"unpackedSize":29396805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf9GzCRA9TVsSAnZWagAALO0QAI8Xa93Vo1pZlLYtCysW\nIAbAZfAof8T4xQ5UsmEGpaVyRQs/jfdsf3sfJZwVd4khlUuJOxq++siqt+UH\nIyPAppVp6Jv+Qx679rrx1dNcx8SQbmtHld5wOJGMWfp0kaBx/iZRC/RYksrW\nPVjSD0C1DMztyUdR/B9cIaThDqhPRKxJovouHrWQzuGOA8A/iDz+pPmUeHDa\nT9i0wBl6xYEcnkFMy1mWaWqoawiXHh1WG5cPIXDRcjUcC2rK2Nz3zZRJl4dR\n06L8AyV+SS19ZD5sR41hhuwTwS4Bl6nC0m4bPyLopgXJsCy9ukJwAJLK35/b\nambh8sWQS9O4ZciLB0NcM/6n7A7yu6pZZPITCRFv8xWyyBOaTwUUUrcnTHoL\ncN30L7I5CSrNFZI7iNpP99YyIS10pn8/zwL7IIBaqHLDckssqiEyFMyzTNGA\njEEZZyy7lfRLsYjWelCXWjNDQNUllrUbkELz3HlHtTCj3tQOGlGAe9M9V5GF\nvf+KupMloQqbWGzoTMGModgKgqWl5xiGP7ITl7iVrFFloOf8vEBgV2oAu9gH\n36q+5UVaPP3vRQM7OrJy5VhYH5L4eY5YhYhUX1pLFXiGCRWJfAnChDlWj3C8\nbwlK1kOGqaAD9DXSWpEHMJPY63N0Mrw1li4D44Q4XfgyL/Xf0QGXVeTkpbJg\nPnsZ\r\n=/SyI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYEaSzhV6OHRMP7XHTjliWlpFVqNMT/JZiZ0ni9guZIAiEAwnyAtb+HO8ZAD59r6SlD0N0sCxTTHYA2Gmb2AQ/nEyA="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.4_1551880626353_0.845781649972075"},"_hasShrinkwrap":false},"4.0.0-pre.5":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.5","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^4.0.0-pre.7","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"839515e02e3e3c003b46bc35e0dc0a1f29aa950d","_id":"i18n-element@4.0.0-pre.5","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-6nGGoowJYc94eXszcMvKDZAJV5w1WKzm8F+dglG9mF97mxV6SU2iYPj7K6+rxnNniUX+fWqnrhUj9sADgwYmeQ==","shasum":"a1611fa1b05355a5f9561c9d14d1adc4b55cb293","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.5.tgz","fileCount":1741,"unpackedSize":29403801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgMq2CRA9TVsSAnZWagAAwb4P/1acRDTO9vUnOxPZEp7I\nkZAHD9766W5poRuqd+MVhTbyA9PsXsPbYF7FA6xBE81Z+OcCID3MnnJvV/3E\nvzEoarsoDFxq2XIoRDv6HE8sZDTXMYVPjrl4/qD0yB4IyN2cQqt1Ye076wIf\naQyJy032SWmQ9yJqf5eT+TiFgqUB5PsO7wp9n/uM65YkYn2s31MyPcdG9kVJ\nJZFJaT8CEnmUiAC1Vk/GhmdzQVp7IrjdHV2WUUXgUyf/1vT5PKPcA/lmOHFe\nhuVREPddYLA2nEUkeg3YTKMnqgvleVKY/S3qWt0O5mryWZKijsAgny4IrqAy\nzyz3jY3Lo7wNL6YMo4IMS797K6r1GqXU08uLhv276FiJ2ifEZurq4xhwzmah\nWzrItmT/FddOHVjYm48nnxiRQ14o/Mxhyof7jK91mQ2/zZ8iLZ9iyvAtycYR\nwutVDvEAXt1sRs8mSjAjLcDMABoxxiPuBZeJecTPgJ4NVBsgVHcEbqOvV47z\nhMJyxwOqCRiQupPJhCDIZ4ZpS1Yl8r/V9cz4iaKcGPOzsF6YAXNALUtKR2kB\n7WT41tlZzd+XU0VJeIo6utq/DkrFpXNQKmD6iHb1V44bY838vHCdls7Ub03o\n1I+qA9R0HRCCel7NGOaihDS5nxjyybpSdwMamL8pzBV4y0/fESuozztzH97X\nrFwm\r\n=k0H8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW2ezPEwYeI0WO7/gYasuTAO2NzR2lss/J/72u7WrbjAIgUmy5qvMbHwOvP9kZ7Xkj+jCEMojiZ79+PpPlOIGRs+o="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.5_1551944373403_0.18010297613486226"},"_hasShrinkwrap":false},"4.0.0-pre.6":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.6","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo; gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"@polymer/polymer":"^3.0.0","i18n-behavior":"^4.0.0-pre.8","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"d6dfe794241cc3529052753016e75e1235cb1efb","_id":"i18n-element@4.0.0-pre.6","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-db3JkN8S7tK2i5NTrrHa/vzdWJDggMDF4Kld7uPc8LWlhFC/cMHIC02hswURM2B1VdbxBNd/jKT61Z3jtkIzqw==","shasum":"0340ae91a9562c3a8f11d9d73b0294bae8dfb90e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.6.tgz","fileCount":1741,"unpackedSize":29404717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcglCGCRA9TVsSAnZWagAAyYQP/RxQ9mqtbEhMwnif5aTs\nrx/95V9BivdhF3ZUrIB5e39DUmPX+CiphXgn6uaxmaVHX46SdBpmBa0Cvo5G\ntdTldsYOjbvg39KolimSLbtu1SNwdLzxyqvuxrr6DytQ+aaue3valHzKDwpO\nfKXPle4AybrHXcWphCimdcJEHIdpuGVpf7cnfGSh7Y/s4lM3Vg2dJzGpulPC\n1IV5Ly4k6+xMGFGsrNfN3ctBC1nnOiQ5VEScbsJ+r0xteAJcQx+OxNJUsBj0\nFkUPb94AGEDp8FlR4Dq6YaWLedw58LBr8uCdgIdAABeIXoMBdjY+q1s0G2Ik\nnBYaq8NRbX2D7SznrM0Vk+3/YavsRVNUjpKgYa7daGAme+MuWD5wF+TvZfJy\nQcezOFlxHcCNJtu0Hd6UZmC5m5AZBaBvfAn+A01WKY22x685S++K80J1li9t\n3VyIOPfgnRet+exkmIqMkDemdiNjLOEVKSef9UnCJEKETJ1eSwk7Ib0hmrye\nP72OKU/hHq9He1tcaG/IWkTUj8erhun4WB1make0Vh2UwJ356O7wXiysn/xT\nG3Cr/hiO9Ob49rhuMORQZ23iUke5odXdMGu/wXmqc8LXY/UjAywKkJ6Bqx3A\ncy9QoinCgyNxKJFeATs/uOooGjyFYibj0FTMXzCV0IBsGFZwx3m15gAjsCzx\ngXQP\r\n=ah8i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/pAGo1hsdGgOcxfExt+9ZaZZdb4FZgnMsJekVYi8e3AIhAM9+jVotPaLBogjLMI+fwvutSjtSrFQihyl8anRhodM2"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.6_1552044165563_0.6902534976923131"},"_hasShrinkwrap":false},"4.0.0-pre.7":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.7","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","size-polymer-build":"cd test && polymer build --root ..","size-rollup":"rollup -c","size-gulp":"gulp size","size":"run-s size-polymer-build size-rollup size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@google-web-components/google-chart":"^3.0.1","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.9","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"5eec653a7df0bfd177b1eaf87171bffe408b26d9","_id":"i18n-element@4.0.0-pre.7","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-ujufzmqDzix3Y5JpweCk1mHenJp0ZDsls4hJi0oV3ZZzg/8YOBxFPGZzhRBTzeN1Mk7rKNd+l4N55MJovRDArQ==","shasum":"246f867454cfa99f45cc65e96b86b8c85cd9da72","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.7.tgz","fileCount":1744,"unpackedSize":29404752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcg35QCRA9TVsSAnZWagAAPlEP/1qLgrvgrfWCAgLhhGZH\n7ikgnsrUYf2msxDTafqLnv67K6co/dIlFrN7uwfQM5+yk7jSw2BcI2phFCBC\nzlLhyFkhbsUM6Lc4q7h1SHTiSq2FUDzUqD+ZGDqnLI6ovi3x3vfF+f2Adrn+\nUVvg4/9LWqOwmCG2DMEyTgPMdwPMwE6BC+j8Gwj6iiUJR5ZT+183giBVF3Jk\nlXDDyIjoHoPmEh8kDIut/PHNURvt0KoTXCNGa8BgobHYYiqk4wchfhGkgDif\nKcx0pA6yxkLb4FgT3x/oCLhAn2OMbCdjJprQGb+rMSscsvlhbErswesTC5Cx\n4CiLYhbb+4lY1DSPIP2BLqphRXPE+ML+nb5Ec3pDqqe3aRcGMOiaYNl47Rzi\nImDXClHNt4BX0fIeYxwz03Z9uR37MIheG0dbQ/F6SYbxmv9nmNyn87v5/njv\n8FWjUwyF+0zOcn5iRBFF2dCdJ1q2NrZiM4uwy3tBoppDfkmLCeM4zzTbEfQV\nKmuy2W9JnrtoaNuEcZluwY0Z37lT7gmJA9RqFAoOP5Y0CXH9xwJRPgjjmaeW\nW3tsfFatM8ax2QG4OHc6/pRXNiZtnoXCDjBoJxvyOKH23MnbdcZA27NmIPoA\n6xQdmn5bnaTprxUzdujDslUviwYZ+8kqjLtz0+9nnddsIvfKTIqjrcyTmiGh\n9fYl\r\n=3Z0E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGtGV5vGrovUaq73CYhFLXBdoAXvVTJ7jWIaYDuoYz8LAiEA8tjZw6G6MmjRXgf/YPA7sqF1YoVpCwB/fJYWoEh967Q="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.7_1552121423631_0.2961315885299216"},"_hasShrinkwrap":false},"4.0.0-pre.8":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.8","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.10","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"7f1cff22bc991d00c35ecbb97b43e273653abc91","_id":"i18n-element@4.0.0-pre.8","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-eTj+SrgzvXVDwGjtfODNCWBp5FtKqRsFZF3K5FV82lAFZbnk50dDXTFx0pwp6nCo5a23616oCk9cSC9kNl09MQ==","shasum":"0563e89e5df693445a7d7e2baef9023bbac245d6","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.8.tgz","fileCount":1760,"unpackedSize":29258676,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJci0KfCRA9TVsSAnZWagAAJBQP/3TYkyNf/cQFfndgD2dR\nd/OjeU/KWzzGqe3TB1wwGvWZa6pe0idWiJAy73CS1qLVzlrwGA8P3Z8WBN4Z\nuw5sbrtPQcvWBhLNYBr7fv2gLtXuADMlLeQZQxgoLtJlwxP9FzG2CyTo7GFJ\naVOK5PSi0lWfSaigPZIzjUHMBMA4YeWm9a1z7/qBE47zRx7YHVSpVEqBAdl1\nMn++uyf03us+DLsy7Lsq+7wvODgHeLnGqwD5ZA5nYBur31bGFIDfHj1EhtA6\nOit8T5jIo13aY8Yr0FRM/kWa/GslfE6RXEZcL+rhU2qMDY5qKFZeMKswndQw\nKSmcCRpaONeLJsq7z1t8LohP6b86/6cIqG4Pku00QR91GesJl0tUsqZSH06d\nCz1zwOZ/KC5Guf3/Yu295jbNWJb+twV2MTqIYfIrSiID632XZGb4DEIJpEKm\nIrbrY7zGJPBhsSFAgj89HOxWMP/m9dUdGOc7Pje+fDxW2ib24NMclCQotoTs\nq0zerJzj2VeVsyT9srrW6T0fbiCmgyKIdRMSejmtyhm9oimGM8+Ws5xgR8x3\nA101dLqOjoTBmRxhM+/OPR5dlIUW456mKXAwATO2k/rqNM8FlWx/6RxaqUcU\nDlSMw8v2gLNdqUDfKbHd2jjLiD/3O1dWbxC8Rl7gvsXSFR/Am8O9cxfO0iHr\nbn/k\r\n=HLfA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHpt9SLNOqgXDBjmsXnHy+6VgK7gnRXv4ck6DZ/MreeAiEAmNunbPFcL4Z6ISPrfc/pUgQl15P+bwxi8PIHRCCwN7k="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.8_1552630430745_0.8207595295371637"},"_hasShrinkwrap":false},"4.0.0-pre.9":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.9","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.10","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"798759751664be2a212dbf75cdba4941cc417503","_id":"i18n-element@4.0.0-pre.9","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-sDIH6BfMrr1lcAq+eDmvI6nkhtWrQGsWf4Eb+Ho0HICSZfkCFOT9XUqkg8CKnfoczs931xCfzGSqsOK5vf+B3w==","shasum":"b4d8dbb7cb819ae98f69c293c379a69afb27058c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.9.tgz","fileCount":1760,"unpackedSize":29258673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJci0XLCRA9TVsSAnZWagAA4fEQAJ0ttjL0/8EEPI/pU6wE\nqbyeFAkFcnTuPeddO2rzlasWWmebf82gJSM+FqddqYe1VPpyv4kvnah+Ipbs\n767h9bBi0KXYSCqC4s4ELHFY2p5pGLPMyiUlpPm/wDFGRgjywnMvcgbW+n6w\n8EAwdtXajmXgqLH9ZvZICnMKB2p+7lvcKYdzZyjcibwtJBu9sC2y9Owk8xUH\nLpFqojV+0dTFNheyryQyEZUXwDCUQ9bINpB+IS3MJzJ/yqqS8sswJV8zCje8\nQUyTJSZ5zoqcBy3NktOxxKT90AB2c/6GmHoy3ZiGo6O8qEN03uMe/4LXn/8T\njGy15KD7lyBBFl81LO58ArR45Y7LlcQDKQ3Jo/y9WO/vFx4hs+cr6rr6I6cz\nYQ37qmLy/gE+DmT6kAXDfRVtkCs3jblQ4uoS6XpSHdWhcknG0samO0HOJ4+E\nnPBlH1b40ORlxR9Ut/oSuouEX99tpAtgrr0GkCqRAl9zROX5qRgzxZ/lnhLN\nJpKfnWiRvAKga0qJMGJhP/jwrpLoc76VdUx9EtzlfmCVpptXpoR0ZE8cMe1Y\nEHYlt+kwfxgBPlu06L8LC+7fbAT7g3LnMLHVsA4RoA6Ji+I6t3fz3gTb/DZ4\nlKi/nMdd29R2zv73x+/2kfwbWG/WzK9oel0Ao+AdNAIejJt5YfuTWLCPCtEV\nJwH/\r\n=vDi9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVAUo34B79CbATKQpqlQSJtR1dLYuesmw8Lp/Js6CztAiAFfbaoMlsDxvRs6JiSxKkupKqhCY5YgvvsW3zr9pMAmg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.9_1552631242738_0.6929251334910846"},"_hasShrinkwrap":false},"4.0.0-pre.10":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.10","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.12","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"2df3239d2e22f762a8ff5041164e955ae3cf9d02","_id":"i18n-element@4.0.0-pre.10","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-WatuO9vDgG80Xrh0KYGoHgBKTMI2tVsuE5mFd60nlVFAPPNPMIohXnjGCFJOYlvqmaaJy9W5IzFOt5cL/mlr9g==","shasum":"8c68262b7b42e53cdcbc93cdebbc435e6ddd1d19","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.10.tgz","fileCount":1760,"unpackedSize":29258621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJci6lZCRA9TVsSAnZWagAAMWIP+wf8uHrqMomAwdeThIPn\nAXV8IGthtlxG9UqLL3e349hady6AFfKds2d5RzKCp6CBVYXY5PCTMQjPWZlO\n9Lkf4Zvzi0xktF6vrezspbxYhXYt6UGQnpf0mlzOT7SQAtZJW/tAQrN2OXKE\njEj1b7qqW5WysZBUoNPZwkKQvf0/uYnf82sSD5FrSx+p+qPr319ESIWsNMhR\n+kloq+LRjJ+LgeGesgrhYoSnrsgo8Dj0UihOJr3hzaf9620HVWB+urY747Pw\naVvcyIXB+IuYS9hcYwicg/wMbLt3AEvXOYXuBDOaMkgIQ1wpcmLu5ye6/4QH\nF0enqkOZIMxcIBWU7cTFHywNS6H5fm/0Dgnni6nhJ2njIFlpo3VV30tdNkDb\nzYLIvtYcm5U1WruBlb7Z760giG8jy1+KwX+hr+KiHTOW6rZjU+idOZZj+EKj\nEn8V7zdjQ04xWPlHfxB9a6tSJ2isTqzqCAjonPG2wgEo+GkTxczfBWvjIio6\nSSz+lg/Mv8SAwmTsy+daNhskwPzvj1H+CoGmCv8BVeMY94KlDHSCCWOkThyh\nVB9l8pthHwM75isymPdzqijP2fugIEwOhIzrwgDD1g+blVpzvIF+tFozb1Ij\n7K097Kp/8bXyM7dGity4dBj5lJA+amVjle0S/uTRS5RsWeakdGmkQHwWslOF\n+1LK\r\n=tzrP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5bidmWCC0AbxVCpU2IvywXcSefO077K3wnQGdEXxi+QIgQKg7CDVTd/UBvnpCVmMX0YuG5L5HN/GVlBK5alD3drg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.10_1552656729101_0.30538534095257464"},"_hasShrinkwrap":false},"4.0.0-pre.10-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.10-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.12","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"2df3239d2e22f762a8ff5041164e955ae3cf9d02","_id":"i18n-element@4.0.0-pre.10-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-rJOLB44ZNXDb+J2kmgjsFtD0AY8WxkmF+D9m+Sxen8G7OqYoEhc2mc1GHVZXC1FacMEj+6ExO8NSo85KCM4o0g==","shasum":"3758816d773de66d81a95962fc38dd9d33b85207","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.10-core.tgz","fileCount":1760,"unpackedSize":29258631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJci6v5CRA9TVsSAnZWagAAa20P/R7IYNgWkHJ18gmzY/Tt\nhyWmmN91pg5E4eKrgtB04x6SN54MXHWBmb6cvbMMfnaQmVN9VZbvMwok6LWc\nPkCOP9cz//9n6wowvhwQSTl6rMXfq3jGKOr4PTUvss9dmJxVbcoxlhnwOjIr\nFD8aXBIygKLVRaVx6mp7vagFcj19MZCf//MNZe6VnMnW+/vnY5p3/vdh43qW\njS5hGE3oNwySCGMwDGFwHgw11bTKwkL90dG6l/01HdwQVAWLPRGirsne2Y9o\nrw95sC2oVJMB5gbx0pH/xCShQmDC2jyDfXLEjcCq9FEevagOa45QAy05iuMS\nQYnbNQ8T0NDcuddazXZ+ziJvB0EEezY5SiXVJcUduMQB835zWt9bYuBiTjPx\n4DEZAsv8Uivgii0ppPOUOIfNdknV9QomP57CScOAbUOfQqD/kGlu/WWHgPS7\nZgflkjcIMkjagjc6dIG3uJRUa8WQ4hDs9qFxKIyK2tvlIgqc/XWraYIS2u14\nRNBzzoazf9kfgTwjfl9dUycwgSq8HIFrGsQ5IdipRY6S4ZIbJa4c03CJled0\nPNFBNa0Tj4iE0sl8T/hUiN+pl28tNHCbtGLlM2bFfaiG1dNSjlp6L3QdCoYz\nGgWLMCdfQKHARWeZg84aPjaaU04yrg/YrTWF1USrcC0t0aXeVt7Ph3uRATsX\n87Sc\r\n=SbFP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDst7fvPCmmz/9BsUMKjIL6tN4wU9RvYRBMjBO/j/3C3gIhAPl8A7IlRJJ6D2tn2VW7iBNd8ck6yiusz4+F1i0gYB0b"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.10-core_1552657400472_0.2427277458338859"},"_hasShrinkwrap":false},"4.0.0-pre.11":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.11","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.13","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"ba671dd0d992a61fcfe8fb6d5e13a63ceb0459d8","_id":"i18n-element@4.0.0-pre.11","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-uYwlS4dgdHGwb7YqrxcT/MkMsvoQiNeTeX6UMmDEtpAkI7bDxwkKy5SZJU+7m9rrNBLVVn3LgcSk1zaELWetJw==","shasum":"6a3becf45fe95d451a337a2e9e8de7efddbb043b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.11.tgz","fileCount":1760,"unpackedSize":29258621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjCPJCRA9TVsSAnZWagAAr4kP+QEEm3zM0vTvEWPjNLGk\n9E6+7JpK6GEHwWCU0VbqWlxOEtA1HPFxQ4Klvep/W7CGbgAjIU04lEsi8/Qc\nmXf+QOZBSR3+ce/tv6b3SXoyeOD0ZCSkLJjmOUajdaIUmC2wf1NIHNHkgGoI\nWIJfMhIBfNRZ66zU0mEDbuqMbPDLaWxkquTngRfMDaXHvg0gxMCmoGKbOvBp\nIslEiyTYetMLs088ML/mnr3cNamNRTJMRJAL5EL3O8vJ6w+/V/TSClpHOkR5\ngAmcdWA0raFQlsOmGu15iwoyRk8PkjnQwgs32l/Hqkb2NFCSq2duVqcu1cPy\n+xEQ9h+Tt4w6T5kib6JYN8TiNX8KyNgP35/BajzdJVGdQZhKV+SAxCSAghGD\nrJwb8loHtqe0izt5ruVE5TmZj/TUfDN4dev5WXO9ewjduNq7gzr/K2kNn97e\neJ81P1u8hX0WIP3dZrl0aR5GSB8uT3NDE6p1Sd6UCECkfc8vaiawYaUVArhg\nyt9vMspQquC/1cE0d9fuCT6hYkH1WSx9R33VkmLOLklrPP3ma52m23muPjP9\n9cwu0FO9v8WiIi4gzXS7qAOqNw8J2BQxb5d+X1bJ0jJBhrlvEPeNIYQH/Yh6\nnPxJ3TE/iEgp4sLLHSqVP+vwN2QgAuYNnei+WtI/mjGP4DdwPOVpzb4M23v9\nHdgv\r\n=VIQy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFI0c+s8uB1lcTnV/PWqC/qUk9a0DWMGB2UH9yaj5uzUAiB9x8Zx7q81yMlpgd8p62wu+EoqAEm46rilIr1k6XFdVw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.11_1552688072998_0.7160897485954092"},"_hasShrinkwrap":false},"4.0.0-pre.11-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.11-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.13","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"ba671dd0d992a61fcfe8fb6d5e13a63ceb0459d8","_id":"i18n-element@4.0.0-pre.11-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-08nOJ5p9S5nCr3Avj/8FSda7sGFbDr4XhaQzEDGcKaYcs60nKMVgYnKh8rqtEhIeKqwwqqfMZBhYXtnoHPGlvA==","shasum":"d0bb7cabe3d9f635fb7949bdbb272e8cea09f545","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.11-core.tgz","fileCount":1760,"unpackedSize":29258631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjCQICRA9TVsSAnZWagAA5ogP/jPzytc1auFUCIRGhzot\nwu0svlaSpGq4qXFI2xjx4w/wzXcl7RylzRcyYFWNwkkPE2R0v1nizlNqOCOI\nZJjfw6BZt429YfZnN0wCa+3LRRk75lbz3GF39Kw2I5fstQkcaUKaMix6bifF\nTI8KQhGUAsJ/Y4J2tYJDmU9KSYwfVqv/caggt6cttI4CTsYIRL9yIyiR89a5\nXtn3NOf5wPeynSHHrnJZJx2bjJG7xfOBCZw34xSOCBM86Q9yPGze1HAQd+Pj\nS1BGUBvBWqXZb8THntHwsX5hrAL+MbAp/0Q1v7n0dtZ+qeP83dqz/oaS9rRw\nPVdgIXEKudR6sN8Fe8QyCCyz1e0O3xbKykVeplJzhNP1m6dFAP229qst3OmP\nt1AQ99ke10NdMIsZdQXmcBfUXx+osZTmffvFCmn1XEY9epNuQMVPsKUxraVw\n5gR210fZQM/QHbgT9ucHobDqevaxN/eVHJ+t4ATbCh1wkNgAjRIZkKrTJXOU\nhTyx5yN65BYh6Y3s7XdwgSVJEQppojlOoBdSn65orK362wLnFmdJ8wER+hsT\nHMFuJnvzl6omBaIVR3S/O5L1ZlXci6VI50igudMtmb0IZzgbnRVLOTx3wu6l\nducrKBLn10Z1SgxCbP309ZJFe9CIVrypTIzlNGum4/eQufzqjpdywroKmyj5\ndEMK\r\n=tDTw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyC4gMCcprPK5DU6t4uLHc4/Uz9lrYWmAh8J7EhkT2swIhAP1+DDDcsIj90VNg0tY22kNtwEhEPSHE9q9Xvg/1oyFa"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.11-core_1552688135419_0.6602288167538743"},"_hasShrinkwrap":false},"4.0.0-pre.12":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.12","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.14","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"154bbf4e6118adb8e9602239ed824a8de32cadec","_id":"i18n-element@4.0.0-pre.12","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-gYwnvGtohx9Q0dbTSGwjf2UsZHIEI1AOhztDpOIG35mQKVgP23ZkzwplPiagm7djkTL2O61taTCqIce9Z69t8Q==","shasum":"3838019d2061e517272c28ec1d0f1a4bf4aa6115","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.12.tgz","fileCount":1760,"unpackedSize":29258621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjEaCCRA9TVsSAnZWagAAC34QAJidIGj3VBSJrPRx8XU+\nqoEC6MHO2eeFIDXyXrBAAkUKHlpW+7fIoYTmrtPpXBvcIWhXqBaJcJRM/w/y\nRAheBk622xZDxg2tPIE0D5oaxEBPGSeeH8kEYfV4FzT8/bHoWAGD/7N58rzl\nPy5EIQyqlyvOx1RPOl7qQi46+xXDSfUKyBi4Cdws14IURuoVnWaolWHvCrGq\ndnHFtUit39d1lNAwPJf3aqqHp1/nZnc/ZYHnpn3n7k+5rJpDy1eeksrtfro3\nbvMx4X71vx376peQj3OUKoLLFTx0cVfNKeqsGbZcKynfLVbIzWhSFKfLJGyD\nMUZY0Fa1iW7KmzhrMafzEqyhqozs7d3UfHvpqa74bLq8IUtigtCSSbMH/tgh\nWYT88UGduzIF2fi1/zEAt+SvegDv8hccHw+fM8Z408pzqDIYoW2mSj3QeEU0\nlvn1uxDqQXPCq3ouI7EYRY57MLrd1gm195BDPCTwXPYAzSUsU4+TV7JOO4T0\no3S7o+aTCmqgEte9XVWpNqKQi3e/BFuV0oALt1PDMXbxCs8zwfn+D44pNkRq\nxWIi38/su4S48QwKQyiHy+3epaDn9Mh3ReMcVzxk8Qdz5WuGKLY6aKW2mWiE\nFUpbFcpUKkuFDuvqhCmZROO+h0BMpPct+dqgFSPLYmpvpe98IUVtpZpZMuVm\nqatT\r\n=UOWL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVbxYHiI86zaJJmoC84yTF+YWgMq18yTkvqUioZ988LwIhAPosAwyHymSaHNpjsHTO2yMZT+ulxiGXHb3OkvM1EGdt"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.12_1552696961639_0.9150286102926364"},"_hasShrinkwrap":false},"4.0.0-pre.12-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.12-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.14","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"154bbf4e6118adb8e9602239ed824a8de32cadec","_id":"i18n-element@4.0.0-pre.12-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-5FRDeLHC29pvzzAlKTwkRcFND26kysNfSoVyiDWTBn2jaqC/JZ7qAVOD7xnKvWzm/emWQeIcV+w3jjsD5wKUgQ==","shasum":"24b8ff127c5c0b8abdfbdcda556aaa8c1c2aaa8c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.12-core.tgz","fileCount":1760,"unpackedSize":29258631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjEapCRA9TVsSAnZWagAAX5EP/ivUXf5lgSwuperdo8vV\nGyRe3MLTaWZEIfrFUnaLrSk1YLZv4hohy8g0r9bRpatAfeVwyk+p5YiBL4/0\ny9a7Uhd+Sb38FIeRwhHOg6wHxoAF1I8KG4WYgx+Z4XqfwelriR2Ke6n5smny\n5W/bzrlXmgUHuc3AEBu0NhNCpdURVGQo7wSM4Qbxr8qPUm4BURTic6s9uUc2\nxdFdr/qdiIQGv+caf77hZmrNxqVfF1Ia+bNEYnuRblT+Dvb57Jly8yPYrDOE\ncvOff+BYi34ZVuUYWN6NTfceeXLn5aqjCQ6le0hrTnTgv1xxZ0LSZzBd37GK\n5PjW2IBnaYGbqlXj+A46g4C8teSesNhgV2JAUr7EWAQycf7QalkNGt1hiy6t\nwZpj5/SCyFS2NLnHpx1brf6+Zkky0HbKABi20yaBj10tRUwDZVCKiXfD5IMn\nQFqGIINX5OpRrszeo0QcERhUXdCAMRcimOisvvdbrji42oo+PsCou6LjuWmF\neQeJ79wjCBRM3eZGn8xIqEHgAQB5T1zvbpAJWsrGv7sp/+izaonuGp4Zm0JQ\nP2EBy2KGVUyX8KRCZKr2I/3DL7PsLNt/RGMMJv9VyxMFMp+EbnkGLVhsuBwi\n6NTQivUkBiG0fS/zDhFrL6jeUPyd20JKUawu9uaWojjErm0VLPNc1xB3kPbv\nqIpR\r\n=Ea2P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICv+IkXZcTM6wGf+Z9wtNI1Kjw7yiVuOvp8uoTh8CdEpAiAOVFUI8b9ZSv1wJY44oijMnLqnD1WAkQiPu4ZQ5oPYwQ=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.12-core_1552697001066_0.11000827005096103"},"_hasShrinkwrap":false},"4.0.0-pre.13":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.13","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.15","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"743d6d1fb79c85f32038df78e3e70e1599970c67","_id":"i18n-element@4.0.0-pre.13","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-0sOHfOigXDtCxxH9PkW15dEXG6CkIvNb1eCgYZ8Z2BKA3WG1YEgKZjVNTzDAgBTvWqhW8ct7WuACTugNXWnmJw==","shasum":"0fb4673ba1ac13368aa78d49e9392d547b4a9f7d","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.13.tgz","fileCount":1760,"unpackedSize":29264285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjhPHCRA9TVsSAnZWagAA/LkP/RmxkxhMzuVgcu+THjAE\nhSeak8CLYfy3uHB3PrY/59D+/YHnnTTiIhKNZrSEpKWeKQhOgqbSKWH62cGq\nd55sSE+nZlTzJslbrO79UMFrKY5s7omaxyYkrxHV4wqwJYKzJVYkLNeIgU5Y\nxVE2GEmOJbDIgA1Ro9twEnumcWK+LKHURgprK6rhBWdAwYcu58zy51mzOxD4\n/wZANoMldCBTkgcIsZgGPUdu2B2grX4FAnk7rUwBWIJYpC7vfBDs6GimBl7l\nxB5EPJV9+YItV7v87Dg75Ye0ZuEHRcvmu5Q3yfj+IMLCBjSPZxM8wQjh5Ahi\nZkxUVRZer+Z+pcPbYsoYCi3jr7JHDLtgnODkyNz9qmoqL7/nNr6JQiNGNR96\nHWFQfIwCBQtkuJ4oEMtAbuQPgZ8ArlBpmKW9QkL3gW/Puge1JxJx2HtKKQL/\nGaHSgzHqUk/qoCsvOoUpnePaxB8knH1xJVvyeC21jaAc+fdk69qNs6rHcAEE\n+dpkBdBXwgrSs6MiI5GXp0MO0H+/qQODx+Rd8IBMPU0pX0IXRXZGxhEm07D8\n0JvLFLUziaGU5znhDhqj7Lyxgxlq27LnV1Pcje2d9iVG/i4pDbUGgyCVB3cZ\nmlfyjaZekyF78OODaDl62SEh5jMEyl8oO8tyVGOS9AA7rLlX3WuHGZ3mJNT4\noR4H\r\n=513P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYDamS7Q+7GwDzG1CxlyzJLS/tTgkaotDOZt+932DmmQIgFTCmvjjho11jQZ22hbA1SNoBwQPdMnduhpihadfCR14="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.13_1552815046262_0.8630286902071576"},"_hasShrinkwrap":false},"4.0.0-pre.13-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.13-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.15","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"743d6d1fb79c85f32038df78e3e70e1599970c67","_id":"i18n-element@4.0.0-pre.13-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-q7r+7xUF3TbPjC0xjCqF5rGCIjC2YESI1Jqvz2tBIhjVfs4o9nwz7OuFQpEHwSER+30zGdM39RVXHotg6VsKRw==","shasum":"9890e2aa1acd03fe8e963e3621bd43e9554b642e","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.13-core.tgz","fileCount":1760,"unpackedSize":29264295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjhPtCRA9TVsSAnZWagAAYxgP/1OB2zsedkz112uWojKc\n7qmTYRvwmXateMmutW7jFrAlFLr8pkgt9ZfvB+sc0SF/r9JrP7rwD6OAWpDf\nvU+N3Wyiql3jiO2QWE3bNYcMeX9I+7jdW+SpCBFaCbpbt16rbogY2Rer94Vd\nrOzDJv5ZbIHmIWBixDzghBY7sLFXVtxGg1E9yLdeWq49lePWZqwQqD7lc4bO\n/TgeSQFCzu2jZjqYfXa+8O3fSehLDX2suNElfmjYYc9QefpLEaOsMoqEbji0\nhCPVdwEvnD9gnOnlbX4QapCyBS3cV7nNEJF1/GKUfA5aTjemkbILEzSagAS3\nSbK9IxXcqoeoAQyQCS3MaKr97efiXOTieVDXztmtYocnD5UMb/r+R4p1mbvf\n8Tq8FDLecr5qK93BuFT7nKKKLBoVmHIDS/l+IDLj6aVjBnwrT/3uRGkagnu/\nENHDevmmavSr+wZuRWaTrdki67cF+BalzNGSFO2mQtRFq+wJ4nvN/VT9iVQn\nN1kwecZW/CfdGowUJUyx5s5eE0JGAB9s4V3C2ALckSAlJiOSnEfwrCYjBYSd\nI4RH32DjBOCW22ZPK44fYPRP/YsC+mSbvicFCt0++GiN4eJLVU3El61jUKM1\nZiYX31+On34gQ4OOvN6apX8KiwqcZdy93ZaUUzfoUBTkI76sg1ZpDmbBncSK\nI2of\r\n=7rEs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtXn1axC1zVM/A0LaaMmNOspQbG1xkdJsVLnqecytxYAiEApw+Y4ubBQ/6tQjqIgjwuqoJPD0spvSch/U3gpF1vLV0="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.13-core_1552815084547_0.7171311513044385"},"_hasShrinkwrap":false},"4.0.0-pre.14":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.14","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.16","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"0d56bdbe44ee7d477935d719c51031a796ca708d","_id":"i18n-element@4.0.0-pre.14","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-G0Phh/yaf3CfRkMTEbia+7jwtPJhfR/q5pQM8D8cf/KN0iPMUDW/b7S4zDUzq9svSqUivqzfZOwhjpqSq+tiCQ==","shasum":"45b1ebc3988f50fd025b74119cf40520e07fcf3c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.14.tgz","fileCount":1760,"unpackedSize":29264285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcj1JdCRA9TVsSAnZWagAAWP8P/31RKupfhF0FbOR+hT5m\nC4RZUC4qOmc6DznJxZStOoORxQaCxkMisrBKDl41acMlY5h3+TFisLm/GT2t\nQAOX1+tYj983QBDc9cA5NwncZkmAFTBxOdW/TWw5dImYcWsFR8USzQRaGta/\nDmCyyIgjPdoAuNl/ZyTnDHXFhHXi4ankbm/zh27vSA9vgW2ZSK+tgOZBtkr2\n4wydlWWOL7bdSGg00gCUrTlTK6Wo2IH0rwegKkqKuwjfkeuB7gzgG9GdngTd\nyLVyv+kiujU61h0Y0VXt4QMdJ6/5Py4nSHHVpeRZihNpuGzAvd4ArVdIMuwC\nZ/QwLESUUJvj1WGqzFIs7yoFtmVafJQ+h82Aon8ZGCqfVL7XWMqePr6caAt6\nLWBu1JMVGE/1xoUG2xlL+RsN2WO6mqHM8IKmr7iM7EuTA0Sk3ZCVW14s5cl/\npa+hcR/OsYFtFYETkMbUarRhDeJZxADbUQDUaFr9jVujNNjqBIU0aYAv0JCI\nixXl6lTcKVWXzDQh/vO3QpLPARxHTr4tq72UfBuNqlDwYWZF2SlBOo5Qkv57\ngJqzwipvXceFQDSPXHgO9v46/FptbOOUCQkn7oAGIgmaEiPYNDgVW4Q4dQ/U\nrqXYmpn78uosviiqVbnbbRLlkzIIUOY/wkUaJ9Ahnqk4aVdoNiYxIpJfHwN2\nkN/N\r\n=2KqQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIASW5SUep3ybXuW6mTWqg95UfMKrLPJVX1wJwxdfFGChAiEAjURUYACWYygffpzauKyIg5BCtEe1V8MLWKGL4AOxXKg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.14_1552896604402_0.01701736028552392"},"_hasShrinkwrap":false},"4.0.0-pre.14-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.14-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.16","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"0d56bdbe44ee7d477935d719c51031a796ca708d","_id":"i18n-element@4.0.0-pre.14-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-vu5+lzZ7skhoE1c1BogbQoPDZhsOrpS7HMompaLPkeFe/C5t0p+MQUB6NqCrNwQ9k9F4LeZ31AzO3kdkJX+J8A==","shasum":"7cbbbac0f400c25d2e51769e1df15c7e215c743c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.14-core.tgz","fileCount":1760,"unpackedSize":29264295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcj1KKCRA9TVsSAnZWagAAxcwP/0SlvozcsdZF9rxpNyg8\nNGKfiBAAB9uSfuxhV9Cwu1LLHsmoMCi8K/SiOGhojBzxqXwGfkgfHDjyRHAk\nNQy4gx5SjDKASzJ0Gf4KTNDLAqMNsg+VjLMfKA6nWoJkNHeUkw3cwBrpQwui\nLkA8yyECOn4LRs7FUUhGptedZTaVapaau1BSPfYaQH9JWKc+4nW4cjNVuHl/\nxGvqazIBIXW5qCobyIno1b39gHR1HWQG1tthh9jO8Lr9xeHek08Ud+337UKU\n98zeAZroTJ74zoKyDMJPGApXQZ5GAZu6LDQUC89237kHTRbe9WMAVgpFiU7o\nRJCy8orUYFrbHd0jOru5lWhHhu0dJDFox9dLq6k4cK4T0nWTmKLVmxLqelMz\n/LgEP71PohnrIPYhtCkEeQJqj/bl6/dE8Y0KbVettodjXmhIV/qCvgo4YDbD\nFHzo6emlQ2XugNqKk/PLN8sTmNt+6lfrDzVed4uOqYr64ImCaoa+VdDLqSLn\n4+qHYrl/woIwhBKL+f7BgbcK5rcrUGtV8qpPb3Jgjadk7ZkYfToJW/4vZQPD\nV9uEiKMCnH3uU8LqacGQZpmRpnZ3HIT9sczvxRjAraBQ3jq4nAzNMT3WR2B1\np+3KOPANGcA00wGkkyb9WIqdqG4g2Zn1eTSq43HFMyh0/C4cr1AYypKgdn4p\nWWgK\r\n=6F0Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApfn2j7AFWFZW1VwlTlXrbY3AtSEwq2iFyRbCoBtAC8AiEAvPBjupLuS52UcNqnc7wToRLbuvTH/Dy1GIugIMdPUG0="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.14-core_1552896649927_0.8590142861777086"},"_hasShrinkwrap":false},"4.0.0-pre.15":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.15","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.17","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"595b5f1e6e5a7341de341be03240630a70b95352","_id":"i18n-element@4.0.0-pre.15","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-cXfj16RMZ323EMPRV7icAK8vS4ltCWmcFT235h1UeCupRV0dhOQOeMBsdBcgtbU8vaLeqwJLpYK5lLHsAhikhw==","shasum":"347e0c9cdca74ab18e2a3f92db0416b8ec4bbc7b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.15.tgz","fileCount":1760,"unpackedSize":29264924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcj5/2CRA9TVsSAnZWagAAawUQAIiDNtXVe5c7dVCugrRV\nmfYyCyCJC4ufNbZ/kiW6u+UyRc5mxSnFHGrQeu3S3b3g8KMbJj8OkKvZyLcZ\niblgRxWR75Sty4Yo2bso/7rLRduYlbUGR1FOMoAAGLtAYPUgUCphG24IHLzv\nSBI52zSl9uSB1pELHEIVX4nVF+peQKaW3qPP8pzbbT4F+NcwzDic3rRlSbW3\nn43Ig0lJklng/CgoD6bZezhx1aDw1eqCZSfRX3UPnurhGODed99x6hSJ2iqN\n+vmPLy6e7moRWulkW993oQ+rsxYpjRyxb2AqybrwQtYj4QRRG1bEGdk5Dznl\nSh3gjPfjt0GrifS1IjpRamrCw9tIjG/5osDfFV3kVX6XBU4XHSvNm/BAndEH\nspgxgC7JSSd2ABObMA/EJZFov6a4JiPYq4AayotOC3lRIMNdtJgcF7dSqxll\nbJoMMFmp/r8t5BrIKNPGHSycccM83cDl8ubjk6d/qzCrGNcA9TpY8VWTCNNw\nndUzf7L1z/b6HgR+JCmc3R4qyyTdRXGvMy6KQna5svmcUmPAdPZbbFzpa/Yu\n5YP7TPpb0Opa/tQrqly6eY2xQWsKL4bzfuLH+7fB8ZVYXR/xMEDMpzsQ6j+5\nchva1kCcSiPeqW0qZ+h69B4JU/0H0w2a3cV231fKjnGwJn5XRtu9LLJpYlfi\nXq2R\r\n=zsM8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3J/NbQjOb72tpXtYTagA+v/Ffb6HAGnW9E3LTwT/5YAiEA/UBSiVoiCfXNlM71nUvs/QQlYJRNSuprF0ZlKGTbyvc="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.15_1552916469235_0.5855886824429668"},"_hasShrinkwrap":false},"4.0.0-pre.15-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.15-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.17","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"595b5f1e6e5a7341de341be03240630a70b95352","_id":"i18n-element@4.0.0-pre.15-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-yew2n/guX64H4ywSqt29Fcrq19AXuRVLNLw3IPus6LIMh7TlztCzsUCzno97iyMyKh6oFb23LEEwg4pFT12hFA==","shasum":"9712aa39580df8827131d5e8b2633fd94e3ece21","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.15-core.tgz","fileCount":1760,"unpackedSize":29264295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcj6CCCRA9TVsSAnZWagAA21EQAI3LbsUWFJSvzJqnHM6c\nngaWpyQaVEsjRk6Wu8jd2ZixbXGZg+MjDTWOekogoeNsu3Ig5zfXrYAZjZrj\nlJaqlc/+7IB0ikDc6rEc5r2lIfAUnM/jbIK/FreL9yO2uHqcX83z1QYVimWL\n+8ngRWw6NIyykmCKP3hFCLntkhJM8WKMIQVN0VToo3LXtjr0dWUH3gWoA04+\nxNvE9GuRpPM/7zhPwCx4TRsXDoXlw2SaQta5r7tz0r6vjrngCe6FO8U7pcQ1\n25DHKLa3/opqnVhQX9CE8Y1KDRudnyN1TDsN8m9bcRKkydjVZO0a+32OWE7Q\nvj9S5V04ZKUYQORyvAVB+UjKZq5f6LiLibAZ9yNungAtDqYFaxa2aYJ2CfiQ\nJ9rRkGCC/HWCbH9a1kMWMnwxFEE9bVcG4qmkwiH5HpNyCHfch4UcRD7Epex9\nKllGCD/9NPhEprorXH5rGd751Qxio+XTIl330z9nzCMWyqMGYrjz6m/kCP1Y\n6tDRPmXO6uH/qwIJfa2Z08IBr/D5FMkKWs0DyiULf4AIyjZY/Ns9ezOtqWKe\nQZSO0p7fOT6VEX95+Jrez8rblSVCKSR86CmY7OgQ/q+kcCc+iXgnR9RUOoaH\nYOM4EKP04pNBCoVzwn0reUUDHiyuZSLYp+WwuywFB5gF5faWuchKjGamlVpQ\nndjx\r\n=hRki\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICgXF1KOHO8yUV8fL9EM4k3hYNjzSbMpzuM4OzfLH30qAiEAqGY3e93vP+H+p1XZjgnJW5/ytPMmec6wcVnR7/nVC2s="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.15-core_1552916609119_0.1585078305486527"},"_hasShrinkwrap":false},"4.0.0-pre.16":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.16","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.18","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"bccaf29fe065731c88726d12c26a6159e584eee4","_id":"i18n-element@4.0.0-pre.16","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-2rbwQXaTUn4HOHgI7h02ucAfLTAIAIjjqnoiCbijuSZCSMyIP7LvqjKdkIJQ5kRJlT3qSZuKtACf5mB2+YKgeg==","shasum":"08ca3546428b4b85d4689afb562112ec2fbde9ac","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.16.tgz","fileCount":1760,"unpackedSize":29264285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckHeoCRA9TVsSAnZWagAAXYsP/31kXjUzn8iJ1mdb+u5F\nl1DX/1FbfLXPxj3zVNFJjlHht2lGLK1iyMN4OSu6JQguVWahMoK1uZWg9WNh\nTq+qAWJyVcdHgnFQzEVKmkLcX2OOfr/N9zUogD1A0dENEZ7ptE5j8BO6ztkM\nkiXwnsI/embl/ubBK3anfrpCRp7LkLHJL/59yzzGHwMDRWW1AyHRDj3HNzwV\ncbWaVa+p1P0c9Ze/wL+Kq/kRHOLKRIvlbGdpL4hAFNnRzTIdKFlLYa/lcWd0\n6yrA0Sq8tsahJHxJCjuAUHoh0ocT0u4Lp+5kL7r9eVjjqyZVnFyIJ1WB5F/N\n8FEObdXpWvTmiv3ETGjdMWJn5k4nbI6RaqBRnQm/Y9Xt1mPc1QVylJ+qRe5S\ndGduNUXtWRl2jfIbMwqc6njPWQeXkTQMVvAnk4GYo0P5XxVGt/sC8u31SZ+/\n0oUSCgR4Raso5EiX4lSQPKbp/9g3M1ecX8IVjWagQpExSvjhaBeuIjawtjZ0\nzkCxyILb4DH3ea+TW45MUO5fJWil8zv8+lncnLEFw4c2M3bMWk9mbzGV1vz4\n+cVnMYdV4erCJA5Msn7nG2JSIvBPv9qIXFrLM72Bc78Y6f4eDG/CiUt++nmc\nxtUWW6QaRYnZB52Gk+LiwZetN9MptCJCybdZdya5tpO+Cezp4P1jpnm/apLS\nKz7A\r\n=qi94\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0K8ENv9gnNQpabMeMLx2yLLynVs9C2jFnyUosNwn7LQIgBKUnPadFVrqKmh5Z3+zrUmcOCIUuG/mlRGMOpJDH3bI="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.16_1552971687356_0.1001204069662962"},"_hasShrinkwrap":false},"4.0.0-pre.16-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.16-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.18","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"bccaf29fe065731c88726d12c26a6159e584eee4","_id":"i18n-element@4.0.0-pre.16-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-nG4uVyq+5jXLsM6bum1H0UvTHaW5NSgi9BCc3AKQY3bQxY6mahHanPmJW03OguGQKwZcKWiGyvJl/85oOwmjCQ==","shasum":"bbaf7509ae1e4fc36c54c678aaeafd9dbbe763bc","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.16-core.tgz","fileCount":1760,"unpackedSize":29264295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckHgACRA9TVsSAnZWagAA3aAP/jRw5VBJGungZgMv0xuG\naDh7WAAlxDyHcc9REP8rkaAkAxTudDP+vCMh6/7tsWQe3cudjvn5tvkHri+D\ntnbwrPZBj9XxB4M2hwv6s41BhhiF90nD/nUp1ZHGm6Ay/+KBNeea8b5UI7HY\nqcIi6fpes2qcbE1m3GOc/Q6jXBbTgCI9MIa1KoBmNfexBNTryS6PEc9T6ic9\nlf7FT++tKUmUo3hGmwPTmcNsEhtvmOUj7n0mOtWiZypug07izKlrI5k8Z9Qy\nAS0sZIfm/xHfG+PULpB0XjKF/q/nJDeIbqolhK6t6HlyJvsvLi1koWF27x2t\n+/EUdywNNJHLbIQETNgeBho2LAXdU5aTtA0siZledepk5SOByM4wOzYWUE+t\nBgxva0jX0viFhRj5bZzLfvzXNWQ55fx/bVFAr1h4u0721IKszUIyyxcLZ/i0\nxjXO7GA/PBmJe+hLO3XjTEHmV8zTkfgjFz4Ih4lu3gGIj+5rw3vrbQ5cqSeZ\nkBOh3FREk3xEmdMa4iuwmzYSkYSFIQoVMbVUYAFI938YshmesZ95fa+ZtU1F\n1nHQ58EB0KBIZ5IBoF3C107+rtBLJjvs/9FTZ3ponyemTF7ARyGuMxgaElNK\n5ouhHDJW6l1h74rOk8Xz/omNwmZBK1XWlrzkd56gIHrq+3cp3ng86bW5+Jlj\nzIWL\r\n=xoZ3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICTCvIHHlBikt9paRq2aGXv3OePHOOXBEP/a+BABEkNjAiAdKqAkbaZ9wU/7O9yelI74eCNpJHlYfS69C+VExkHzeg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.16-core_1552971775582_0.41243993337160045"},"_hasShrinkwrap":false},"4.0.0-pre.17":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.17","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.19","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"5d7fcf05f0ae44587e541b892d23d0aed1b410d8","_id":"i18n-element@4.0.0-pre.17","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-FXoIL6xfaJGl0tNpVnvJfS06TVYjKc0xdI0Hwd5iVgC8RYwjJMVMTGLOiPnhsD3jjWWw85iuBepuS7aD9UiMZQ==","shasum":"780a7ba9792f3c069f19a3460952306a3d06ec6a","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.17.tgz","fileCount":1760,"unpackedSize":29263826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckflNCRA9TVsSAnZWagAAzCQP/2cgrnb0GNic6UAWGjjY\nF8QW8Qf3GZ1j88LeK5I7v6xhio2h9X6mugLXu0FqvQspoH8F+DXvufwIAyRd\nycHcQ6rdgnKgEkxPK+GJSHlM7DN91OwwJos5SrjxpF8D73KFh7i10cxjNJoO\nATQB6+uJRrSeruNYKP6WYYCSIs1ILVkvCp2Cv1+uI521WfB1DVStyDwFtkUT\nWtEpN8v2F3/KnCI3WVITmUAgJV5m/wB0bGzLa29KmOMmSRKRl05V+MhpONoB\nid1Cl0knrUgvMgfGk44ArFhBBNQpUQKtrrTZIHKAeG2ciN1AjukWofqf05VP\nkY0m6rDoZ2bw17Z0X1Gys2/qzE02RtGwUK9CZG4zZyhhyN8Iz6Xsw2dZKf36\nh/ExMZUNq3x7wOj2fgvvL4SxYXjUwx9AgyBHtbxnJAww44N+ZBLTpaBMvbUR\nZ+bEW0jINeMX1V1f7twFbx1ueiKEyKbJz4/RKSG6BFUXcaR/IngkTHHzqEWt\nJ7EHoM8MoN3+rL6LthkLKe50ZImOk4SmrpfkaS2fmC1pee1FFAcJIwnWZs23\nEhyFwEHJ15infKWDk+1q1u9N6G41+mn60CW/rL2Za3DWoBt9tAVEJLUSN1b7\nqo2wFlrVM/Fq/uaHgtxfMUhSTOy3KU8q6juV6C34xmF1FfNovLyi4I5A99X7\njx8I\r\n=YDmz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIArexM6W9SGZsIUJ6xziWUzRJ+tG/Rh6XKAw2PnYddCqAiAuhmhS519U4RyjCyn/aFhLd/uuU+P+T20/1v3s9Gq4Ew=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.17_1553070412135_0.19356463362024257"},"_hasShrinkwrap":false},"4.0.0-pre.17-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","polymer3","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-pre.17-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0-pre.19","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n\n## Compatible Versions\n\n| i18n-behavior  | i18n-element   | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 3.x            | 3.x            | 3.x     | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| 1.x            | -              | 1.x     | -        |\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 9+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"5d7fcf05f0ae44587e541b892d23d0aed1b410d8","_id":"i18n-element@4.0.0-pre.17-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-s1Shyg0nMfMj54WyOVLWm9oSy9Dd44pZuch+DzUGTC4q0N8KrTn9t92rYRUvxvMQLjegiL8yaBp+Gc6gmHRU1w==","shasum":"eefa9e2c3a51cd0cda7555de23df51ec76506b90","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-pre.17-core.tgz","fileCount":1760,"unpackedSize":29263836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckflxCRA9TVsSAnZWagAAkdwP/A9k2R+EltyMg6HStERE\ndb4yHwmm6eHsen9qcW9a6Hbx02Dq9fPjgivMPjZ5eT+GGNhpSUyU566Zay1s\ndsSNGJGhaXEhbQoqkUR8P+Tls9CtAW0vcUg7Kh8EtZ/BPSZR+zNRWWrYpm6M\nHzfGAV4qf6m95ZBYcIzqpAtsCJFecUeSTNezbLbbz02FmcHI2pBjEj64zOXh\nuIlbPtPBWMmR9bFZHSVGFXVaLJLf6TlvMBBST3gCGxgJLd6kySS3MaeP4QYR\nSBlwGt8GrH4ioExRSE3Ydm885iy/bzRxoVg1FLuiE6HYuyGovBb0aSj809ZI\ngLwHvoHvUIRS8hLb8/g9XNo702AmvIv0Tz/f6R7ID4sf73+njs8fIlcIjvze\nZYNlpGnNd18s3URh7G6Bw/vvIwD8F4u8AT/WGUSnEruRxMVhvLxLkIKzV+8b\n+v8IaFtQzXnFai/02woFzVsT+yeYtHQs1W107pAfQ3jqMjsP+YyyDys7LrK8\n7KrWnPL22Mc2ktDBRgY1/N39/Vs57pBmC3HvMOcS1C/Ao4DolCwA9Me3EmGK\nS0+I0ssuX65nvlWay5MQS4pMZWKcr9GCrgcABpilXxqZTSd1cFwWpJ07z3rq\ndz9jyzs+BALhWUXXVwyQQVc6vEB6pPAWi3ULvCC7Y/NFnRjMeW8yJfX/kOT0\nIkZg\r\n=a7PG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAJqahvMCSJKKWm+LsZmKtxoFn7z88UIZOucL+Jj3US/AiA8DVlXO8/KOjqJX+im6ffZFaEacldUzlnGiPhG/tFZDA=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-pre.17-core_1553070448657_0.8923872506155814"},"_hasShrinkwrap":false},"4.0.0":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"dc110ec91c83f7705ce79ece616c9659d08b238b","_id":"i18n-element@4.0.0","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-tW+kbI090OthqsvF8F8NmBGpUwbQ7ZPLVuA6KjxYLwruTpt/e3NQDKekQrmZwndkwUzLv2Li745bdN6+kwypyA==","shasum":"fe5090d7882af841ba1d3f4acf94744ce3c0930c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0.tgz","fileCount":1761,"unpackedSize":29270660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckjyPCRA9TVsSAnZWagAAFYsP/3JZJt2VUxB8REITwewy\nx7Jf4iB9TPxTFQZ272u+WAf4F89WScaRbsOM/9oRljaQmOTkd0esAcjU74Fd\nfG/A5TQdMxI+a42mgtNUbR9T/2/2CUE6bJVDOO5v2oxMI3R/HmcpQXc+K6fV\n8qY47GvX50bI4qSSW2TTeYBT3f0FbUPNZc+8lhJOM+NdgSmKpSLBomgumA13\nLmDw/rbg0tyxEbMOH/hjr8fgDWqeGNXrHVONMAjIUQjHsYR2ayconvjDT/5w\nH0e4lMvRkojqXSyCGVEWZdsWkBX+6SCQKPF5hCoHXgt/NnZRRXGu+dKnQQIL\nXAjdc/TSOiHlm8LO7w/GUdB+xrNjimVnXL0zCSf5TYWtSsuVh8kLN/3NP7zE\nBzlcFL4ZqSvtZwk9Mn6G3i5RAliCF90lpF4wZHRLsNHp6Com8wZIlIZaS3W6\noG5Bf+CNU+nxfOB8YDL+IKeOqg0/FSm9y9txQ6f5FkJUw3fiUuLgtCUxeE3h\n+aw57cvXFb+udHfyOWmHw7gI0PdcAxJK7uYw+ZRjJikaxzj5MsLkayDvl5qS\nhEFlZEQRX18uNkVgXt2FExb4wAG7DDST6OSGx8rzUVix7j6ADj2gVR87Kgg7\nuAEnGEFXqAUJNariSlCO80P5prF8B66knrVg1XkmoCfuQEFpgR7pDxX5ML7q\n+Pel\r\n=GAgy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGud58CfSxJAwNZtmnqNsXveN1NgDqAJq/sBg4vy5aMAIgDENFcY3VOiViB8lQWCYgdG1Efdm6pwTSg4EzHlHbsKw="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0_1553087630262_0.6800356703947512"},"_hasShrinkwrap":false},"4.0.0-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.0-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n  - This version is equipped with Firebase configuration and synchronization for `<live-localizer>`\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n  - This is the latest version\n\n### Configurations in `demo/gulpfile.js` - `npm run demo` to trigger I18N automation\n```javascript\n    const useI18nCoreJs = true; // true to use i18n-core.js for preprocessed scripts\n    const useI18nFormatDataProperty = true; // true to proprocess to <i18n-format .data=${data}><json-data preprocessed>\n    // Diretories are relative to the current directory\n    var srcDir = 'clock'; // source files directory before preprocessing; should be changed to 'src' or whatever the target project is configured with\n    var tmpDir = 'tmp'; // temporary directory for I18N preprocessing\n    var destDir = 'preprocess'; // directory for preprocessed files\n    const minifyHtmlTemplates = false; // true to minify HTML template literals (experimental)\n    const htmlMinifierOptions = { // options for minification of HTML template literals\n      // Same options as polymer build minify: true\n      collapseWhitespace: true,\n      removeComments: true,\n    };\n    const extractAnonymousTemplates = false; // true For Polymer 3.0 templates\n```\n\n## Compatible Versions\n\n| i18n-element   | i18n-behavior  | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 4.x            | 4.x            | 3.x (optional) | 1.x      |\n| 3.x            | 3.x            | 3.x (mandatory) | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| -              | 1.x            | 1.x     | -        |\n\n- Polymer elements using `i18n-element.js` must depend on `@polymer/polymer` NPM package themselves\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 10+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"dc110ec91c83f7705ce79ece616c9659d08b238b","_id":"i18n-element@4.0.0-core","_nodeVersion":"10.13.0","_npmVersion":"6.6.0","dist":{"integrity":"sha512-fSOs+BRBcvUI4d1Svx/pCCTbz6jfQuN/YCjTx7rhBj0oWqtMFX4u5eWLTV19C92hsh57VRtfxOXWAGyDCbxKBQ==","shasum":"0a994fb143f84088c67551e47dccd50f1a32aec0","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.0-core.tgz","fileCount":1761,"unpackedSize":29270670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckjzPCRA9TVsSAnZWagAAQ3wQAIlfWkJL0Lt/X+jHcL2F\nrjGCjswKyEhq9OA2b9IBoKN4dOCGOxP6i/4+z0id0duOv8edYos5/UpVuKmY\nzTQ1z/FjmCT/P2zBu2XqypEFtZcNc7ufnGKcoBpWxuu16V7gcVuO0LPecGiR\nBjdeW6Vl42uB5rOFMMpb0g4jiinG4q5QgSFUc4L3He9ZjwXbTJz0L+8L/ahY\nJYjO+sZO/8xJu8uecMuMM2aWVKF3tTatsoY+sBcRKjuNmGbdmopkjrp3kWDw\nADYPzInltq4q+JsMoREXKKNhAHP0nH9tFKMurYg2zt4AubtQsWgdqdyKXPcA\n4x5C2pFak3xfnc2tLBDPSXhXqlMcxwzAaa6CC89eXWsOBYotwos15p++NtxZ\nUriMxxyLr+KcY9muGGIqDcHZVJGP5xGHJWwzhcGZeQUaEnPRtpAmlIxRTGrG\nTaS7cbhFYu+DVMwpstn3Xcmp08kWYXVLcLwBWmYbHe5na2sC1dXdb7eBO8pp\nzxaY9Q+sWd0qaXxuWhfLtRkX66hl1pcxQR4X43zSJ8o8P3dI3aKO2i/iDrQT\nbo8DkdT6kCIk7I68jChNkF5dxvz2FImH4DPyORm0+6N9ylFnbofHERVmlb8/\nHYvVE20XqgM6tJJOVrndR6VTti0yAU9xbaoJOztNhNt8VCv7YP2TI8V0NCLQ\nWoS8\r\n=Hxp9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ1oqVOrvnGLgclcY9QDSwb4IPYGTUaA7Gc6LESIx4cQIgZ3h7vjKGoHFuoJWmpRXd56YaKeCiKPv/NDOBaipSnnc="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.0-core_1553087694391_0.11176401187449425"},"_hasShrinkwrap":false},"4.0.1":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.1","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"26fdbb5ce06871d8d8291b5ae3ce3d261c3b10e4","_id":"i18n-element@4.0.1","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nQQ//w97RvuWyN4w0I9pI1jNR7w7b0usBRvnM09QH3wy9iyDF/2mbew0V56LEXOqzTiOHdQOZ/0dI6N9P1szzQ==","shasum":"a07ab14840b8e0c18317ed99dedd749164586c0b","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.1.tgz","fileCount":1763,"unpackedSize":29276051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmlWDCRA9TVsSAnZWagAAPOcP/1BDNAwQxtgPnFIhxKiB\n+pj4ZWVhsXKdr3MxGcI/wQGkWcIBzBw6E7zI0zveyNC1SzzMX/qgYDaIYp0P\notUknymQ9CaCbWa439iGXxKc+2eUJ1abQJtwjgCyut2s6BDqeIa71GVsMxQl\nKYfJR2NQsAdGM1EZtiGALIIxcd2iEQRz4rW/Y7LITNNd3xjl5P4WX6y+qfgA\nk2+nBvjrhE8jZqtvz6LDcQ7M1BLIH9lrS5EDd7ICCmbyWQQ+mq5INM9GLXe/\nANp37OnNPyWuWf71X8S8jNUQZOj03Oe6cqAo9zhiaA/QcIL0v5RGhqK+GDr2\n0QDa0S5ptiItN2seTb8kidwPjgxK/ie5sdWitCseF49stxyeWeidlLh4Usq/\nD932/Zp9yaBv7CcICt2D7z2EIZ8oOLOI9L1S6mdy3uoFgJ5P5GLOuBZtDnL4\nrXzM0NRlwWslA2VzbiXEojcWjA5T5Ba2h08NQiNI4VO32ISVJO+0vqCPps0+\n/GlSniAZrftGVHliDbC8TMVOqStKlY15DQds2PYzZTc+qy1peCI6xu/aSm5m\noBB6Uz8B5hnuK8HHyQn6yNvSJSuLw3a+uqIDlGDjb61bub9PHvjLo7oARjOO\ndcha5il1bRJbPOkzXeVn35GTfs2MIBLJuQbvsaGz6F6d3EndyEpTkhi4Iqf9\nmGt7\r\n=dmhg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwuRkg6Z/i7jlOPruTTnIi3EJ7/7utPhfu8JMZs175HAiEAufDohm2+LpQphPfRVJoctZrnEIcU0uuC+KZpsKCMbSY="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.1_1553618306448_0.07696694614271227"},"_hasShrinkwrap":false},"4.0.1-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.1-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n  - This version is equipped with Firebase configuration and synchronization for `<live-localizer>`\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n  - This is the latest version\n\n### Configurations in `demo/gulpfile.js` - `npm run demo` to trigger I18N automation\n```javascript\n    const useI18nCoreJs = true; // true to use i18n-core.js for preprocessed scripts\n    const useI18nFormatDataProperty = true; // true to proprocess to <i18n-format .data=${data}><json-data preprocessed>\n    // Diretories are relative to the current directory\n    var srcDir = 'clock'; // source files directory before preprocessing; should be changed to 'src' or whatever the target project is configured with\n    var tmpDir = 'tmp'; // temporary directory for I18N preprocessing\n    var destDir = 'preprocess'; // directory for preprocessed files\n    const minifyHtmlTemplates = false; // true to minify HTML template literals (experimental)\n    const htmlMinifierOptions = { // options for minification of HTML template literals\n      // Same options as polymer build minify: true\n      collapseWhitespace: true,\n      removeComments: true,\n    };\n    const extractAnonymousTemplates = false; // true For Polymer 3.0 templates\n```\n\n## Compatible Versions\n\n| i18n-element   | i18n-behavior  | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 4.x            | 4.x            | 3.x (optional) | 1.x      |\n| 3.x            | 3.x            | 3.x (mandatory) | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| -              | 1.x            | 1.x     | -        |\n\n- Polymer elements using `i18n-element.js` must depend on `@polymer/polymer` NPM package themselves\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 10+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"26fdbb5ce06871d8d8291b5ae3ce3d261c3b10e4","_id":"i18n-element@4.0.1-core","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nn0f841vIX7VUczdixdDKXxgivmGsoZ2Piq/xd5DCKg+7h6KIBo5I2PAwzXtg/9om9eDaPgGNiDR4B63W2REpw==","shasum":"37d2ad6bb996a5c413b8099573cd1e2f6f670ffe","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.1-core.tgz","fileCount":1763,"unpackedSize":29276061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmlW4CRA9TVsSAnZWagAArnIP/jePsYn+9RqsKIvnz8op\nfsBfDCh9TIWrmaZ7hTTDfDxi+Vo9fWh0uRt6FAYPx5uLqAptymnSj+NFeSbi\nkC6d8uC/eoO/D9PPBwmx+G3tGVyZ9r91N+g6bCPA7wn29C3YNz5WqUlmC/dq\n31/AYD5oYLGAVG6ixsMbCV8p7ItK9FOE2WKR66YHo7GrwXqu6xMDo09pHWHm\n6ZggcTjNF1bBJriEK70YeS9/ssS7tZZQn+XH4bkFWg7VFIFHFpXPr3mnI767\ndTUlPEIZ0kKAUyKRKoas4+/TNpXTRHMubPmeFHUBXIRNblGLlsHyscZTyYs/\ndwlo+bDixHE1uDkASPHAkX6vW0jUnZoxhVL7TAl4JI5UfFHYktmS+ejd1COr\ntErgc2zmP5vjKRc1iLtsx4B1YbREG11p1EINBM/7g7/1sDbszxQ6si2i0ZyG\n8pMK9JWqoza5deJH4hKgu+cZuLDPeH0SwgWSUAqFBGiyJCopmFL+O9OU14iI\nePh9CCMwjIXd+fwEHtLaqql3GqKXuwcW2TY7v2hcPrtHUCPBE4NH6mh3uonP\nyGfAWSyDr0oWASWTXlBlrWjVfmrtOrpLXmXIKp6vH854W8ZUu+m9emChLwbo\nuCDGaJpSqntPRVArNAopouQ57nqNG4M4aLpQDrD0m3PZYw+49h0x12aNRDW4\nqxQm\r\n=bn9D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiGcPt+w/yx8e/HFmrJzuvjp1uF6Q9nj5vMASpHYLLhAiBVlMOaYdJALcrsx7OeuMNoZ2hGuKpYRpqnfhS9H7OzUw=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.1-core_1553618359503_0.4662561962986127"},"_hasShrinkwrap":false},"4.0.2":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.2","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"2bf531fdca759920859595868c7efcbd06da953c","_id":"i18n-element@4.0.2","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-TIUNVMIveKhKsIs9FmWvybYOqXXBn6mO9JVlIArZMSPMEdeFUeFm5S/oepXG2EkCgzf+NnjDnrDUf7A1DQUWnA==","shasum":"0db677743105e12c150379211fa65950e4036ccf","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.2.tgz","fileCount":1763,"unpackedSize":29279456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmykzCRA9TVsSAnZWagAA6eYP/2xegFyv9g72OXue7ZQh\n4QqsugMgsMdIdod+U3vla1/9I4b0ZyPw7CSzeXt1iE9/02Q1YQGAmVPxwdoo\nhOGFHiRvECymGBNkRkSY7tfl+EZATUrLAPwT/VXIFDAgwTo5K8yWR9JrN5uL\nGFOWIruKaI14QneNNrCibizhQy58oF78bZAgebJrc6vHdvaeq6F1WMDgj9rB\nIUSQ/7ZUQgVMLtWC3sBSM7PRDTPdx1Dx/I8A2iMG3CDQTCKvwC2MPQYVWHM/\nQ8R4rkAoZlK3yXYkw2TjkulH0xqz6X7GDxQI/6tPDBhVYUgR3Sgg+ZfVqSEs\nEh6Lo6hy7Fx1UfZRq1mLn2PxmQ9iIUmFddbCzCZtV5h0Ctr7zFLHOqZ4Oq2N\nroUXhrMyfEf2hev9UrEHFriDyAjoXgCDtHBTRPNeBVAdDagLs4DpVDLADiLF\nV9/aTEqUSYi4uENcTkaKVUhVkdTwEMPifMXQKzLNivnPhLnlt7wWavUqAVzX\n3YSTq4cv1ycvMnwTb+s7DqVoK1/psraSj82tuRTktxSrn6Yp5VCkjJu+RDR4\nL1dzPRdYvABm+uZqEqDEcPmvoFRM5Pg5eprhxQolfL3IeFiGNj13MtOQeiGT\nNvkBzELZVkKWNzXZh8cnAxmHYG3MA1/XwGqu0LQQcKDlLbWffNRD4V3+h/Vg\n6Fmi\r\n=TUka\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEtUprohg8J62RCziRO5rbgGBvQy4jdQjLQm5D3J7klgIhANDauajy0AovlXwbvVfcNkj8rsijSaKreLVvGHkAkTaB"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.2_1553672498302_0.06085079182111386"},"_hasShrinkwrap":false},"4.0.2-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.0.2-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n  - This version is equipped with Firebase configuration and synchronization for `<live-localizer>`\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n  - This is the latest version\n\n### Configurations in `demo/gulpfile.js` - `npm run demo` to trigger I18N automation\n```javascript\n    const useI18nCoreJs = true; // true to use i18n-core.js for preprocessed scripts\n    const useI18nFormatDataProperty = true; // true to proprocess to <i18n-format .data=${data}><json-data preprocessed>\n    // Diretories are relative to the current directory\n    var srcDir = 'clock'; // source files directory before preprocessing; should be changed to 'src' or whatever the target project is configured with\n    var tmpDir = 'tmp'; // temporary directory for I18N preprocessing\n    var destDir = 'preprocess'; // directory for preprocessed files\n    const minifyHtmlTemplates = false; // true to minify HTML template literals (experimental)\n    const htmlMinifierOptions = { // options for minification of HTML template literals\n      // Same options as polymer build minify: true\n      collapseWhitespace: true,\n      removeComments: true,\n    };\n    const extractAnonymousTemplates = false; // true For Polymer 3.0 templates\n```\n\n## Compatible Versions\n\n| i18n-element   | i18n-behavior  | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 4.x            | 4.x            | 3.x (optional) | 1.x      |\n| 3.x            | 3.x            | 3.x (mandatory) | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| -              | 1.x            | 1.x     | -        |\n\n- Polymer elements using `i18n-element.js` must depend on `@polymer/polymer` NPM package themselves\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 10+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"2bf531fdca759920859595868c7efcbd06da953c","_id":"i18n-element@4.0.2-core","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-OmzDprN9YcBNVNIFNgobQGODDZs/s/vXNUAdQ7hRHjYo1pYg95TJCorjaoAESkdLrtyOemhdCbyN3iFvY1WzGw==","shasum":"fb368dacb64d05c2ced25cbc49469141584b4700","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.0.2-core.tgz","fileCount":1763,"unpackedSize":29279466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmylxCRA9TVsSAnZWagAAYgwP/0QageyiFJYXgfm356Np\nUWzYngNVOEHN97bElQN1Wfa3Y4DtOujq33mxeUMtoCUPDRwcQ4Q3CIKnEdQ6\nWB5PbfVT2MZCYIlkO02/snHGjwrwMrnFjdNXRq7QR1pFTylPQZ+Fc+1Y9GAV\nO0SgKsDmgylJwqg/e7GGQYWNl7bNI7wgk+hs1j0Rdvh8LwRnqZx2a9vNisAp\nngLC8fKvKHjAYGGNBRH11MwV+sbW9RQP1yBC+fCzKSsYQvUAbt1QEQMcKIdp\n3S15B3AFXHnJbjWJ+V0xQ5u5FQxCRAq3PN1CTToOpHfkE2E4G4nEBpquy4zg\ndnxz7DBu6ffbJU5k0ZG2D8MiHH08Tnpic5NXchfYwqqZvthTU7czHfgGTuLO\nGslRGRfysRSyIu4hozqF9oO4xHcp7y0vEZSScWMF5b/h11YSK95UGG51N2dp\n2NRWhCli7ku1tnCWRn1eKn42l1nqrjnb2fx4N10El4OfXA4RB0N4E6sdoU/4\nxjPUEFQ0K1g5AnotDjNMRzzAHisOtUJvGtW161diFkjDjyAY1o1LPP8uCeF2\nfVbVRmw7JcH4UaukRZwImgFnbl2/DqP1kh/7wH3kBIvZHJ9b/YqT/z42hEnz\nor82Ub7CYeCzXPjDTdO8OvmWNVNvW32YKJFPAO/dG9EmEJ0nxeBXVrqv9qvl\n6GI6\r\n=TM8F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEGXQNmAlNwZXJEc0NV1BwjUEISQZLqLFTwPZOGZpwkhAiABXyNRb0R4aioYw6mgxemGwAxMwEFvHIpg58NbbwN1/A=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.0.2-core_1553672560749_0.3907932855229306"},"_hasShrinkwrap":false},"4.1.0":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.0","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"6ff25835a26866fa1d2b3754a2d6dadecf4b4ba6","_id":"i18n-element@4.1.0","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mDYz3V7zcX/Dvp9dK3fzgqdkMQs221OapKBd5HoXOChnU68A/jh9JHz/LwcgQRP5pLQDmZQFcNwhq4epLM+O3g==","shasum":"f6ba395f81f5dd832a1346a7469d61260cb0ede8","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.0.tgz","fileCount":1766,"unpackedSize":29302741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnItICRA9TVsSAnZWagAAtSQP/2xBYHRQVHVvLoMc5wpf\nL/mblWZrBFkTuhJGVsCGw4Rh+jTimCUFN3Q9ZJ1ROqBEWFhV3E5ujvD+mnav\nbaBJ/R1WFDQMh1EHLTEcGARgKNe62DxZqn4i0OLW3QgzoDQIWnJMDWs3n82A\nEgYO1WJjC7OwpVZVLj7n44q2a3rUzdwMROagn91QontI0zkDInH6lhhsVNTl\noZZppiP34GzNPBl+ASE/GvKLNdYiPeDJOBQicnWNm03qlFwcW3nxqv5PctP/\n06nO8h0fHaBnkJNTMTU+WZja2mFbtyDidCxTixVSDDMfUZoLqKYo/S2UVTYa\nDt7jyf3KJ3ISSCwHJtSEDT91xgvUx1bZlw4D5rcFBO236Rr71J0vx2FAK4Hw\npn3S0JM0MUQn17lzTeq4JG1tLBNbhtHCRJtMQ0Y4zPYQ2E0pbRF5S/znJf/c\no3bnsZfo/fnEslutL1BFfzfaCBXs4KS7zuqSq5zZKbzZeiq5nOxOkEcOvZjf\nRq7KcM/6QZWWtjeVjrmqLlHnq18qUpNOlRwDqRuaYnzLbPM/Pc/ydewoR99g\nlNuBW0aime9tV22VJxewrRnV1vdOEbWf+G11Q6RdV2YzgmTo0L7XK5vKgAcj\nE2C5/EkP8YDPx2k+KQrTpVmC64x1S3Cu0jc40rMZDZIXPGxn6aqK4QR7hW2n\nYV0t\r\n=Pc6k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQySlnmJ7jnD7ng1Kng+XeZ1erBsp1w5u+TCzkgCfF1gIgZxMqkm7qttM4pK5Xbzo/ROQzS99mRSE4Hof5e/eWkFE="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.0_1553763143726_0.9548116429265712"},"_hasShrinkwrap":false},"4.1.0-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.0-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n  - This version is equipped with Firebase configuration and synchronization for `<live-localizer>`\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n  - This is the latest version\n\n### Configurations in `demo/gulpfile.js` - `npm run demo` to trigger I18N automation\n```javascript\n    const useI18nCoreJs = true; // true to use i18n-core.js for preprocessed scripts\n    const useI18nFormatDataProperty = true; // true to proprocess to <i18n-format .data=${data}><json-data preprocessed>\n    // Diretories are relative to the current directory\n    var srcDir = 'clock'; // source files directory before preprocessing; should be changed to 'src' or whatever the target project is configured with\n    var tmpDir = 'tmp'; // temporary directory for I18N preprocessing\n    var destDir = 'preprocess'; // directory for preprocessed files\n    const minifyHtmlTemplates = false; // true to minify HTML template literals (experimental)\n    const htmlMinifierOptions = { // options for minification of HTML template literals\n      // Same options as polymer build minify: true\n      collapseWhitespace: true,\n      removeComments: true,\n    };\n    const extractAnonymousTemplates = false; // true For Polymer 3.0 templates\n```\n\n## Compatible Versions\n\n| i18n-element   | i18n-behavior  | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 4.x            | 4.x            | 3.x (optional) | 1.x      |\n| 3.x            | 3.x            | 3.x (mandatory) | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| -              | 1.x            | 1.x     | -        |\n\n- Polymer elements using `i18n-element.js` must depend on `@polymer/polymer` NPM package themselves\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 10+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"6ff25835a26866fa1d2b3754a2d6dadecf4b4ba6","_id":"i18n-element@4.1.0-core","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-YdCu9FBQFZFH0wbKg9O4gmcd+Pf91+VRuTWnZia/2Pp3W0Z7kEWu2dZnoAlSDiQbqcBjp67S0Ub3WJGitYo1mw==","shasum":"398c9567e3bc71b3d1e797c13e76c16ae508dc89","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.0-core.tgz","fileCount":1766,"unpackedSize":29302751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnItxCRA9TVsSAnZWagAA66cP/32Q6X1sQADrRWjm6acy\nBSlejbQNW0thkRYqP9zRn5G7p5DLmS0juwNql6DTWY5CEXTuElUOuBGJmh6s\nVKo6uZLGE2eGCFzXufMJoWik2NjXF3YEQnokGZ+OtSSsPXAO03iHCIn9oZWb\nLJnkYTgP1yQ626O13VBJqPOFY6Z2cbJW7uD2EGOZahbeElCcp0QzsYOrGCHP\n9re7dJqEN9s8iiQGrpO4LtaRnnsdpaXaDE580SpVjEjwUSujBcVWFBbWOvwb\n7uPJCZ+BepY2+kRQnal/8pPs8S3W+G8YiLwDkd72Ae7VWtdiBtK6XbU/pYwY\nhWtrHl1U9qpfxS7xgWAaBGEPcWgUVhCsX3NIBCKkEnWBWTp38kGUi2xQi5wY\nVAcyYHWvcXawI1PJ7KP/BICafoenQsFdWUn2ztK/YMPcj7wuKFPYNd1s/jZy\nxYsxzzy9VWlQ44yZ7TpukyRnguvBNR7GZ1aadfne8mWKaZPApE5VIP2aNOxH\n5NFnI2fdLlzwL+OYCm2ZiCh84S+f63cAxWzJjTuQ4HcMBbSe4Zj8stsgrx5x\nkUb67LRXf3qb7j5FSAG3v+Ich1rNKbRq4FyTUzEMb1Nqb2h4joCSFbtD3AZC\nh1nSg/TD7wYEYgnBoEkVxcCz6kxXj9gxQTn8YuavIhRIPtF6hMfAGtg5wrSX\nr+Uk\r\n=hEyY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChCJkgp58TXeS6jEAgpYOB1rD32i6GhbdNc21wYKRj0wIgJNaMNmvVeOBsyJUULXpw/2Rm1ZuWXWkA2WwLBTYvI6w="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.0-core_1553763184475_0.06456507068064621"},"_hasShrinkwrap":false},"4.1.2":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.2","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"9d4eca645bca9bb00e50bd936ba40539f3734d5b","_id":"i18n-element@4.1.2","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-MAAWMnnGqxsh0bQMgdsA9UXkkElCqaScdH9UffXl2OA8H0M1JEzMb7L58SYlULRwsorMMualHNA+gGjErjuGuA==","shasum":"a55377f25143cf93511f03ee95cc73e0c0e5b3fc","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.2.tgz","fileCount":1766,"unpackedSize":29309346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnbr7CRA9TVsSAnZWagAAcRUP/2vzV5h4xI5i6qR/qXgd\nDABFuY8BVcixqxJq77fRP04uwz4YF7sqTBQkgf3aUTxfO1eh11Qi/s73lt7t\nNioO8gzuVOCPolS6/RwchK10Yq2SCP4O0hTc8vQcfk3VfRNJQlYZJsbTaYiC\nZhS+jtpw9TF3wayfLXYPagu+7GcoCj+LVJovR4BTD20Qnb9MRccScNIqrvin\n5HbItKsdkdH7R+EYTv9KbJpRUORRdZ+bNJObbM1Bfx+DuOYKK39MbAs7GvdH\nKZX/CezBGX26+QPXH4xHaRCT2BSMh0jzWy4c3nfCK7LF26jufoTzS8gWhvkI\n1p5Igo4l2x6Bv5xeaSAUWjCETjEOiuSYe6sGM51lROsRei5fSilnMzD3aCvX\nXX0e3k4MqKPvpEFb1gKS1voYwPSQkVB7zmMPtiltpLMB5iFEFBJt+zDykSwH\nxOjiiqtA5X1P0WZFy1l4sb7hxSCAm/N4+qKt5OnJvCFjNCWsNGoZeKgcKQbG\nQHLdQNu6BFjs/bpfNSnpuZxGeE594gz/ce0TYzmG7PfZlEG/T/rq1skvNFBt\nc3y6870Czlx/xlEovyk4F5wx0CfnW66b6Sv3zoofE01Dq3vGP5mC6YrkYsr3\nrzSOsDYHPV+v1afNp40mpNoNiLwMz/arK80awR/GXNl2OPrOxZEyPEtrYFGT\nTi9+\r\n=Eds9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJEfWrb1VmnLxuhakSI8GX/m1bLNui9yjXKUf1O6EDtAiEA3oargJl+Q65CCVMjkEozOjqF7pbV3d9fLY3E+t+hblY="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.2_1553840890937_0.5511052680706603"},"_hasShrinkwrap":false},"4.1.2-core":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.2-core","main":"i18n-core.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`lit-html`](https://lit-html.polymer-project.org/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n  - This version is equipped with Firebase configuration and synchronization for `<live-localizer>`\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n  - This is the latest version\n\n### Configurations in `demo/gulpfile.js` - `npm run demo` to trigger I18N automation\n```javascript\n    const useI18nCoreJs = true; // true to use i18n-core.js for preprocessed scripts\n    const useI18nFormatDataProperty = true; // true to proprocess to <i18n-format .data=${data}><json-data preprocessed>\n    // Diretories are relative to the current directory\n    var srcDir = 'clock'; // source files directory before preprocessing; should be changed to 'src' or whatever the target project is configured with\n    var tmpDir = 'tmp'; // temporary directory for I18N preprocessing\n    var destDir = 'preprocess'; // directory for preprocessed files\n    const minifyHtmlTemplates = false; // true to minify HTML template literals (experimental)\n    const htmlMinifierOptions = { // options for minification of HTML template literals\n      // Same options as polymer build minify: true\n      collapseWhitespace: true,\n      removeComments: true,\n    };\n    const extractAnonymousTemplates = false; // true For Polymer 3.0 templates\n```\n\n## Compatible Versions\n\n| i18n-element   | i18n-behavior  | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 4.x            | 4.x            | 3.x (optional) | 1.x      |\n| 3.x            | 3.x            | 3.x (mandatory) | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| -              | 1.x            | 1.x     | -        |\n\n- Polymer elements using `i18n-element.js` must depend on `@polymer/polymer` NPM package themselves\n\n## Browser Compatibility\n\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 10+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","readmeFilename":"README.md","gitHead":"9d4eca645bca9bb00e50bd936ba40539f3734d5b","_id":"i18n-element@4.1.2-core","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-sZOujcadWWA3c/kHPq2Zu99eZCg1JRvDSQpPOQCbDKs/ZHlYd8Dvv191QJhnmFhFZ8k3rPPG39h5u82OjFZF0A==","shasum":"b26bd2b80f99cc17cff44d72d92c1966db21ca1c","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.2-core.tgz","fileCount":1766,"unpackedSize":29309356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnbscCRA9TVsSAnZWagAAL74P/3WZjwiomJUQOJqQ+zV1\n8543uIbmp1/KUfG/xrqThkX7KKkkLj76KLfSobYKUtSAzpnR78odQTQKKpk/\npQYDoiAtWpE8Asav7qMSllOkMPQLD5rpyzsjN33+ASveEM4R9XeWUdGwGfW6\npVvWi5U4P5kbYYEkhyDSL46fLeV3VXHcbLc9NF+HkxPFK1KHH/vtY1Zv8h5C\nYhQ71SggwsTozkyRwd20lqNbHA/jN87GiqH8HWS03SrCKqay/JCT9rUg7LEF\nncOk9lw5WLaE3x4l9ouOKDg3yQh2KRRoW0uhuOM5eCk6Zm5ZrdxP+/YyFWFr\n3c+WP1bS6gJ+xPDSojDhjK5QzJ5CgvRoypNKQWP5miAjHT3jTVciZJKC6NlM\nmyt91NpV5aRtUkJZcuC8Hb9d/nWQ9B2uOZow11rId3EXpeKyDYSLkJQOe+sc\n1LCC3qkkd9Den+iq2Q3Vu7/3erBeCBTbAVTB7c0XyHJ7JA4sg2vmkyjzvIja\npSz3qr8N6133NmoWhnlvfAw2gNE5r6+wtpURsAKonHxb0GzhqApDOST15R4W\n0IGGdklgbcC1Z9lMslEvB4uZKh2skkINa4mLifmqVnVabE2kO/PZUgBjwCmL\naORFarfx0xzJYEGTorkRBCZ15+IyXno53G09vwhEdow5DnW4O+atCoTt99AK\nEytn\r\n=PP59\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxspbZCzjQ185TtTlPiD3F4w3pLnuhstNJkXpLlo3HsAiB44+iBgn0h5hbU2o0fFGXofru0fUv0CyJ4Lv0X7KuXdg=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.2-core_1553840923296_0.3007979813502484"},"_hasShrinkwrap":false},"4.1.3":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.3","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demoServer":"node demo/demoServer.js -p 8080 #import maps feature must be enabled at the browser and the server","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^3.9.1","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"b0e75f5a97922b9bce0660cbb99a47c9dd0c5022","_id":"i18n-element@4.1.3","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GkMYkPRqArCApoKDk8FkgVONKcGkoaPDOVT4syVP2XgI7cW8VrCHZEaf5J7sRElY09KtSPE2SWZd7TU1rdrJcQ==","shasum":"35834d72464d99c8079e09a1e073e737fdabcd93","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.3.tgz","fileCount":1767,"unpackedSize":29315102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwuW+CRA9TVsSAnZWagAAUAwP/R85RKVMf8tRr/0NqhGc\nFXuih8Gha0wmdGiGNE67EwWitODWWEqVSwggBly+sfC9oHjV13jAceHUEOA4\nb5ZvcQ94FhwJTcsgo6c7K93nrBtzyX2cW2QofK8830UXp9hgdMxFvOhC9GPK\nheXhu2zD0WfdooJgFuFLNbsqsJI8qSKIjTqtJ7oKsu0aFniOH8Uw1M2ZOxxL\nUqvARy0YjzptFn7f/5MU7QtwwSqtkR//UKIbSubpyv4XpnVlChjD12pvhIXj\n4btNoXgPbeMCY+/9RH1foTfOjVMKfm4e3ONdfMHHOgqxhWAB8QmA2hHsRAL3\nszipVmsDbzHmh4cgu7nf4veEFYMYl0ld6Me0lNWW2yirQmUeeKV63AFtS9Yj\nFjpT/PpWA64OwwRzkmre7BuK8TDIR57GQE5iOEkpVEdP7n6fM8W6We1TFOPK\nj+VvbZ/q8LpGeBx4/I8UwCTH23CCVU5cu5+dj0hSW3NB4Wth5aJhhWbYwT9Y\n6GcI/ecwHvP9BBQbIdRKVRwF3QiL6imr17pt8KpZb5xEODIDIhba8tW4m/c/\nEBX4bIKMUwSI81za/8R8I3SGE/9j9BVXLCLKGTnjxJmAMwPjPqleNcUsM0W7\nHeVWgAgjPN1Il14X3obr1BOU8bvw7DcXm3zyaBRGbEw36Bn/33dFVxAXWbd3\nZQ5b\r\n=Cvf+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCK1iesMA8hYG4Ot3IxiHLN4O6u9SVYpJptCxNBk7s73wIgUL5T1234ZH8HMHYgFQPI1nbt0Rt4BuAYeNvu9aROBKg="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.3_1556276669675_0.8627071191946785"},"_hasShrinkwrap":false},"4.1.4":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.4","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demoServer":"node demo/demoServer.js -p 8080 #import maps feature must be enabled at the browser and the server","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^4.0.2","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"e46c01eaa83a6564b940060adcc8f7b8bb9f249d","_id":"i18n-element@4.1.4","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DZKY3Q8ubEgKRubQGUjgkouuG+dPD+pSPmMCrFaKk/0XjWcYJcKKAD/fKNUyvc/vAsyTOnJEjCE4BBZJ/Zcz6A==","shasum":"0c3849058d577e42adf4e6892390e1be72b63e8f","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.4.tgz","fileCount":1767,"unpackedSize":29316374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefxjeCRA9TVsSAnZWagAA7/kP/R6R6OOQi3aq3x4df+0w\nKis+fJ5KpdbRuvoqFb8lr5vDbRuo+IMD32nUEij7U+RxlbHGegbuZj/Kxb+Z\nVdld5/4lzCdgqxW0mlAAd9g1Q7FINo5gicUNnJL/z4P4gQby72Px6xMDf5DD\nE7jBq9C1kmccV63jY3vPQ7RhiC0tTw1NFDMjjp4N8XKjscXX6X0nDFXdOvZs\n1Tgma6DfiQ/gtREGTcNGXYmmR2amyI+eb+jFfQEt42n5Khjejh1bSmXYvlGp\nZ840V1GE/x+tuJrj5QAm584Uou4rPUq20I7IRLxwrcu9MdhY2I9jCVpA3DyR\nn5xtMpqTNCfSn7EHTkIot1yAqv7A8D5QOs73fG+VawnwwWfJoW57Enxp9+82\nHWTkysnTJrH5OZ0k7GGnfCXpiXvAobYbDWCP+ykwjDXWUeP8VxGumnTApP8d\nJLESSDSIICCJdrW6IU0uDitvLQh7TwWfTKGrsd7L96VrJlqL0TmwEfpOi91L\nDVGS2rFHDvAUPK5L+FC40D/TJ/UPi8jxn2qIalF+Ir1CRCVenPZoJ6Fn33CV\n2ESEK8DXPrpm9ZaEYBl3WWyiBNGTJ2WweiD5lEcatSvlzS6WN1p6vZgeuSVA\n9InALNEknSPpNA+cAkcKyMEpVR5DWMh42vadAjBQXvf5sPnfLLjFg/84KsMJ\n5n9b\r\n=BsEC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBrP4F0498Hp4r7GJDWx/OmLkfu5zmm1+pY0n7q/5XX3AiEAzaxUhjpcs7w8baBLzvGIsPv+gCDykuMaE9uInYdQ+3Q="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.4_1585387741304_0.7480138958039224"},"_hasShrinkwrap":false},"4.1.5":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.5","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demoServer":"node demo/demoServer.js -p 8080 #import maps feature must be enabled at the browser and the server","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^4.0.2","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"4dd8a189f9cce346af08d84caa3d26f4ce22781d","_id":"i18n-element@4.1.5","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-EApVhvH1e3mNNxu7N3+4zJ2eBuVLQzSOYf+XHzN5k6QFlTcoQukQ3QJIUhXBKzznaWdYYRV6/YDHPqHlmooLMA==","shasum":"70a2c22e0b1ee1f634ca6df2c5302fefd674d920","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.5.tgz","fileCount":1767,"unpackedSize":29316550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegJ7mCRA9TVsSAnZWagAAKcAP/2ql7HpaHEbGQ8R6Dzu8\nQlINsYo8mZyjEwA/DBMxt2suNPNJYwInaayHLHSg2JtmYrf3vBXAdi9kZWoQ\nsU9+IsKcMoICK+yGqEFUCSEzH/25tLrwtt3Gjh/6+lGA8yfa9TNupeP+evK6\ng5ZCdhM/oDdxyr4B1SKzXpgXtHs99/KxysfzTzXRWCPZwb0m/0QR12aT1CKj\n0FLsw6PyrfBFSGhdH7h2oGvthVb4zDYGPGRu/qodvXnK7NKfcAuJRzdbR+Zt\n8nlV2GD8M3CAnGMnvuZOkXo5VIr6jn4Owrh1/16PCwejyM7Fy+xrl1NBAxnk\niNg8Oxrki9D7wOzbnQV0FeeETOh/k6VzM/jS2swkPBbQr1Ugd94ms2+D2yWE\nCSYtjn9snELk65UuA5XAdAFj/Bk3xNPqhl+0MIhhc+xVEoyHbi+gWDbgpZap\nDsUYFwKI9E5E5pfwnMamtaO3w9BEcf4vFZdkB2PiNm6CExiyddXPpSB5UIQg\n3QpqtZHPH77mCTOSDXT4+cu6ymBnz5cg28F5RHkmtAo/SHLDR1Ywcca4lMoZ\nVsiemhBZoVKCR/VB6PNepsL88ND752n1d1RO3Kq0oCxNmid4QYoTPX8Ccpsl\nrVhSlLhUvo/rrqD65onPBTWMXdl54mPUg3pMSXjtRWykXNf0wL2YE/ge6we9\nJeiv\r\n=qdkz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZXyILxjtOaktn6S/FLhW7ztYqTvkTk+2u9lUOdVpM8AiBf555P+SwEWqW9iJ/R3lAZyVOaNQTBlwpv4ODFFlFbag=="}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.5_1585487590188_0.7561498533975053"},"_hasShrinkwrap":false},"4.1.6":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"4.1.6","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demoServer":"node demo/demoServer.js -p 8080 #import maps feature must be enabled at the browser and the server","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^4.0.2","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^4.0.0","lit-html":"^1.0.0","wc-putty":"^0.1.0"},"gitHead":"1bceddd0acf541547f7ce8dc0e9b89ec80d72ee8","_id":"i18n-element@4.1.6","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-UYGjQ45aspw3It2ratNIHjpQ6Wbn994zebljP9lv7Rew4K4z+Px1WFb91WhSTnplQkkdYDRclOgmAoDIeyOeTA==","shasum":"2bd3a16697fd5701124ca5f5da2f677360174c17","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-4.1.6.tgz","fileCount":1767,"unpackedSize":29317208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegWOxCRA9TVsSAnZWagAAS0YP/iKVwf+StmmkBEIB0Vb3\nWSzyoom45PGHseryy4vFlemjGFRqS3Nud7sufXQT9wDrJXy75YuVf/+Ev6Xv\ndXaMa1J9BAcDXbDmaUp4J7Cm2A9pyjTampbh7ZEZH+Upl3acJydFmFtpbN02\nzI9YKrMvFcc7zzNFtOxkz61r/r4//+wZePfjfMJe4Pr8oWF8/YF881ANhFu3\nSDc9T+/SwYqK+9QdhZun3uYXldb5jqhpfnERIAYfxXjbX8lrINHpCE0RGQpM\nkCDS7HTFbe7AzjlxRgmfbK2rjSva55YgkRAR0aGYo17Ey/YGbRdH7PbpR7Rz\nYS0jp5TmfNgyIqKR23Hhgm4DCQ/Nd/isBgoFYS9MF5BBj9fqwKg8xyPSaHw4\nqpoIGRm1mEOyIUj+fTcU5t87j+YMhiwXfrknzRd2nmKidcTrCovGVT9CeZtP\nwoCY7t2PTCtEzsU3H5lvvuUpaH0brBOTcN7nt9UmScHFzWET8Y6tOttWTB/1\nv8daSolkktYrwmPECuTjc1F8X0wmzRgVi9aIcuJqtFllzBthHfZyFoRXilDP\nFWWCcdW1KbdLtanB9t3Fz5c2WK41ZJK4w4VxcsnJ+6JpobzRsBIbVx6BPL0H\nnkxtFKgO4NkEocwOphyIuEhcqtsSLC3JB/WEka+M7+VFLg23q0XBqM1WeEgg\nJegR\r\n=sG63\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmZbe3UcQNkuYXc0xKd+QXEPHwInKFQRjy0a2rV7YGPwIhAIyjD+TEsxnq8j1GehBEScAeRB0pwRwPhRDeie8NRdY9"}]},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_4.1.6_1585537968872_0.8961193247082311"},"_hasShrinkwrap":false},"5.0.0":{"description":"I18N Base Element for lit-html and Polymer","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"homepage":"https://github.com/t2ym/i18n-element#readme","name":"i18n-element","version":"5.0.0","main":"i18n.js","directories":{"test":"test"},"nyc":{"exclude":["!**/node_modules/**"]},"scripts":{"demo":"cd demo && gulp","demoServer":"node demo/demoServer.js -p 8080 #import maps feature must be enabled at the browser and the server","demo-rollup-esm-bundled":"rollup -c demo/preprocess/esm-bundled.rollup.config.js","demo-webpack":"webpack --config demo/preprocess/webpack.config.js --display-modules --mode none","size-polymer-build":"cd test && polymer build --root ..","size-polymer-build-core":"cd test/core && polymer build --root ../..","size-rollup":"rollup -c","size-rollup-core":"rollup -c core-rollup.config.js","size-webpack":"webpack --display-modules --mode none","size-gulp":"gulp size","size":"run-s size-polymer-build size-polymer-build-core size-webpack size-rollup size-rollup-core size-gulp"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"license":"BSD-2-Clause","bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"devDependencies":{"@babel/preset-env":"^7.3.4","@google-web-components/google-chart":"^3.0.1","@open-wc/webpack-import-meta-loader":"^0.1.3","@polymer/iron-component-page":"^4.0.0","@polymer/iron-demo-helpers":"^3.0.0","@polymer/iron-flex-layout":"^3.0.0","@polymer/paper-button":"^3.0.0","@polymer/paper-dropdown-menu":"^3.0.0","@polymer/paper-input":"^3.0.0","@polymer/paper-item":"^3.0.0","@polymer/paper-styles":"^3.0.0","@polymer/polymer":"^3.1.0","@polymer/test-fixture":"^4.0.0","babel-loader":"^8.0.5","babel-minify-webpack-plugin":"^0.3.1","babel-plugin-bundled-import-meta":"^0.3.0","babel-plugin-transform-es2015-classes":"^6.14.0","babel-preset-es2015":"^6.16.0","clean-webpack-plugin":"^0.1.19","copy-webpack-plugin":"^5.0.1","coveralls":"^2.11.8","del":"^2.2.2","escodegen":"github:t2ym/escodegen#es2018","espree":"github:t2ym/espree#es2018","gulp":"^4.0.2","gulp-babel":"^6.1.2","gulp-crisper":"^1.0.0","gulp-debug":"^2.1.2","gulp-grep-contents":"0.0.1","gulp-gzip":"^1.4.2","gulp-i18n-add-locales":"^0.1.1","gulp-i18n-leverage":"^1.1.4","gulp-i18n-preprocess":"^1.2.3","gulp-if":"^2.0.1","gulp-ignore":"^2.0.1","gulp-match":"^1.0.2","gulp-merge":"^0.1.1","gulp-minify-html":"^1.0.5","gulp-replace":"^0.5.4","gulp-size":"^2.1.0","gulp-sort":"^2.0.0","gulp-sourcemaps":"^1.6.0","gulp-uglify":"^1.5.3","gulp-util":"^3.0.7","gulp-vulcanize":"^6.1.0","he":"^1.1.1","html-webpack-plugin":"^3.2.0","json-stringify-safe":"^5.0.1","lcov-result-merger":"^1.2.0","merge-stream":"^1.0.0","mini-css-extract-plugin":"^0.5.0","npm-run-all":"^4.1.5","rollup":"^1.6.0","rollup-plugin-babel":"^4.3.2","rollup-plugin-babel-minify":"^8.0.0","rollup-plugin-filesize":"^6.0.1","rollup-plugin-node-resolve":"^4.0.1","rollup-plugin-sizes":"^0.5.1","rollup-plugin-terser":"^4.0.4","run-sequence":"^1.1.5","strip-bom":"^3.0.0","through2":"^2.0.1","uglifyjs-3-webpack-plugin":"^1.2.4","wct-browser-legacy":"^1.0.1","wct-istanbul":"^0.14.0","wct-random-output":"^0.2.0","web-component-tester":"^6.9.2","webpack":"^4.29.6","webpack-cli":"^3.2.3","webpack-merge":"^4.2.1","xliff-conv":"^1.0.12"},"resolutions":{"inherits":"2.0.3","samsam":"1.1.3","supports-color":"3.1.2","type-detect":"1.0.0"},"dependencies":{"i18n-behavior":"^5.0.0","lit-html":"^2.0.0","wc-putty":"^0.1.0"},"gitHead":"ac7d4d825aa75e9455a0e52c0f13ac1ca43da167","_id":"i18n-element@5.0.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-u/u0Cf+ou05uvw+rF3XJK37aHqA9dtc3kjR+giQ8CfTzm8jxIDa+nKlSsoDfqUqhlqbwhCzTfur3BSvtxxdu6w==","shasum":"6ac29740540422037ef94caf6a7b1af8e15167a9","tarball":"https://registry.npmjs.org/i18n-element/-/i18n-element-5.0.0.tgz","fileCount":1767,"unpackedSize":29317209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2t4OCRA9TVsSAnZWagAAKfsQAI9dJrWbCByVn0JmbXta\nAK4dqwyxj0V0SjcEGoOMKIOa+4BK8oh+LxyuOSr9cJSZY4DkdWAwaexlYjFW\nRACEBBmEsiQwTBcXo6sJffGyCqFMI0NmcyMropLV5Nq1+hV+H2rJgkqoSrBu\nrtAx7hETDnjut67XMKMRW2piVCuuQZIGtRuPgLCn1OUkgHElWXektakHRDNv\n7Iec/+zMXjFiLGvAL+MSUWy0V3G2vdSN+gth/YMC7YXsbKn9s+1xVyoL28bb\ntQgnB/iP4YFPhFW1ygMvkNJrc4IJofnCEREImkiHbm/AEC1Dr/8Ztbh1r0u6\nizW8PqUhXurRVvuUc9EeAyI7mD9CPaEWsSst8Ej6qgQ4GVHKu6wXYo2vNyAS\ns99kDbWPQK0fdcmmjCaPoI7yhAoOm99YON12dkInuE/Etja1T6x7RpfgTltC\ntYjtko/OLlwisn3X6628fPF25Pe9ySn3Klp5upUO+vWSrhhTxngcbw6NVSoV\nz8BcxenWyd5LN0X1fGMhjp3ntJPCRcEA1ltBrRNim2vYPBjkuepnxCygsFJK\n4xeo+MLyXfmMaCmbQcQBGzhnNMLm2Zrh1QQerxo+czyZJzv0Is4FXjeyy4Iv\ntao8iwTSY3Gpq6YrMkglXR4R/MAn5IgBGIIKbM6o6nkGREEIOvOoEy/P4yRC\n+IZ2\r\n=/KG0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHexWxEHdoMFykomi9qErsdoqMhKGi3i0YA6CRxq2b9OAiAiFQZnlHVbYpVo3l4qbNxlmpn7GZduaeRSs0qUgUop4w=="}]},"_npmUser":{"name":"t2ym","email":"t2y3141592@gmail.com"},"maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/i18n-element_5.0.0_1632900465078_0.1526795530442968"},"_hasShrinkwrap":false}},"readme":"[![Build Status](https://travis-ci.org/t2ym/i18n-element.svg?branch=master)](https://travis-ci.org/t2ym/i18n-element)\n[![Coverage Status](https://coveralls.io/repos/github/t2ym/i18n-element/badge.svg?branch=master)](https://coveralls.io/github/t2ym/i18n-element?branch=master)\n[![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element)\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/t2ym/i18n-element)\n\n# i18n-element\n\nI18N Base Element for [`Lit`](https://lit.dev/) and [Polymer](https://polymer-library.polymer-project.org/) with [`i18n-behavior`](https://github.com/t2ym/i18n-behavior) as I18N engine\n\n- `i18n-element` inserts **I18N layer** into UI definitions in HTML templates transparently\n- `i18n-element` comes with the full-featured automation [tools](#Tools)\n\n## Extendable and composable HTML template literals based on `lit-html`\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass MyI18nElement extends i18n(HTMLElement) {\n  ... // a few boilerplate mandatory methods are omitted here\n  render() {\n    return html`${bind(this, 'my-i18n-element')}\n      <span>localizable message with ${this.property}</span>`;\n  }\n  ...\n}\n\nclass ExtendedElement extends MyI18nElement {\n  render() {\n    return html`${bind(this, 'extended-element')}\n      <div>extended message with ${this.property}</div>\n      ${super.render()}`;\n  }\n}\n\nclass CompositeElement extends i18n(HTMLElement) {\n  render() {\n    return html`${bind(this /* bound to 'composite-element' */)}\n      <div>composite element with ${getMessage()}</div>\n      <extended-element></extended-element>`;\n  }\n}\n\nconst binding = bind('get-message', import.meta); // bound to a pseudo-element name\n\nconst getMessage = () => html`${'get-message', binding}<span>get message</span>`;\n```\n\n- Each HTML template literal is bound to its **unique** (pseudo-)element name\n- Fetch JSON for locale resources at `locales/{element-name}.{locale}.json`\n\n## Install\n\n```sh\nnpm install i18n-element\n```\n\n## Import\n\n- `lit-html` elements\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n```\n\n- Polymer elements\n```javascript\nimport { Localizable } from 'i18n-element/i18n-element.js';\n```\n\n## Quick Tour\n\n[I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit)\n\n```sh\n    npm install -g polymer-cli\n    git clone https://github.com/t2ym/pwa-starter-kit\n    cd pwa-starter-kit\n    npm ci\n    # Add Locales\n    gulp locales --targets=\"de es fr ja zh-Hans\"\n    # I18N Process\n    gulp\n    # Translate XLIFF ./xliff/bundle.*.xlf\n    # Merge Translation\n    gulp\n    # Dev build on http://localhost:8080\n    polymer serve\n    # Static build\n    polymer build\n    # Static build on http://localhost:8080\n    cd build/{esm-unbundled|esm-bundled|es6-bundled|es5-bundled}\n    python -m SimpleHTTPServer 8080\n```\n\n## Syntax\n\n### I18N for `lit-html` elements\n\n- [API Docs](https://t2ym.github.io/i18n-element/)\n- [Demo](https://t2ym.github.io/i18n-element/demo/preprocess/)\n- [Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/clock/clock.js)\n\n```javascript\nimport { html, i18n, bind } from 'i18n-element/i18n.js';\n\nclass AwesomeElement extends i18n(HTMLElement) {\n  static get importMeta() { return import.meta; }\n  constructor() {\n    super();\n    this.attachShadow({mode: 'open'});\n    this.addEventListener('lang-updated', this._langUpdated.bind(this));\n  }\n  connectedCallback() { this.invalidate(); }\n  _langUpdated(event) { this.invalidate(); }\n  render() {\n    return html`${bind(this, 'awesome-element')}\n      <div>localizable message from ${this.is}</div>`;\n  }\n  invalidate() {\n    render(this.render(), this.shadowRoot);\n  }\n}\ncustomElements.define('awesome-element', AwesomeElement);\n```\n\n- I18N process automation for [`i18n-element/demo/`](https://github.com/t2ym/i18n-element/blob/master/demo/)\n\n```sh\n    # npm run demo === cd demo; gulp\n    # Add locales\n    npm run demo -- locales --targets=\"de es fr ja zh-Hans\"\n    # I18N process\n    npm run demo\n```\n\n### `Localizable` mixin for Polymer elements\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/elements/localizable-element.js)\n\n```javascript\nimport { LegacyElementMixin } from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';\nimport { html } from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport { Localizable } from 'i18n-element/i18n-element.js';\n\nclass LocalizableElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  static get is() { return 'localizable-element'; }\n}\ncustomElements.define(LocalizableElement.is, LocalizableElement);\n```\n\n### `Define = class` Thin Definition Syntax\n\n```javascript\nimport 'i18n-element/define-element.js';\n\nDefine = class ThinElement extends Localizable(LegacyElementMixin(HTMLElement)) {\n  static get importMeta() { return import.meta; }\n  static get template() {\n    return html`<span id=\"label1\">Localizable UI label 1</span>`;\n  }\n  // static get is() can be omitted\n}\n// customElements.define() can be omitted\n```\n\n### I18N-ready Bound Element `i18n-dom-bind` based on Polymer `dom-bind`\n\n```javascript\nimport 'i18n-element/i18n-dom-bind.js';\n```\n\n- Based on Polymer `dom-bind` Element\n- `i18n-dom-bind` element must have `id` attribute\n\n[Demo Source](https://github.com/t2ym/i18n-element/blob/master/demo/poc/index.html)\n\n```html\n<i18n-dom-bind id=\"el5\">\n  <template>\n    <span id=\"label1\">Bound UI label 1</span>\n  </template>\n</i18n-dom-bind>\n```\n\n## Tools\n\nFull-featured automation tools are available\n\n| Module        | NPM version | Description |\n|:--------------|:------------|:------------|\n| [gulp-i18n-preprocess](https://github.com/t2ym/gulp-i18n-preprocess) | [![npm](https://img.shields.io/npm/v/gulp-i18n-preprocess.svg)](https://www.npmjs.com/package/gulp-i18n-preprocess) | Build-time I18N preprocessor |\n| [gulp-i18n-leverage](https://github.com/t2ym/gulp-i18n-leverage) | [![npm](https://img.shields.io/npm/v/gulp-i18n-leverage.svg)](https://www.npmjs.com/package/gulp-i18n-leverage) | L10N JSON updater |\n| [gulp-i18n-add-locales](https://github.com/t2ym/gulp-i18n-add-locales) | [![npm](https://img.shields.io/npm/v/gulp-i18n-add-locales.svg)](https://www.npmjs.com/package/gulp-i18n-add-locales) |  L10N JSON placeholder generator |\n| [xliff-conv](https://github.com/t2ym/xliff-conv) | [![npm](https://img.shields.io/npm/v/xliff-conv.svg)](https://www.npmjs.com/package/xliff-conv) | XLIFF/JSON converter |\n| [live-localizer](https://github.com/t2ym/live-localizer) | [![npm](https://img.shields.io/npm/v/live-localizer.svg)](https://www.npmjs.com/package/live-localizer) | L10N widget with Firebase storage |\n| [i18n-element](https://github.com/t2ym/i18n-element) | [![npm](https://img.shields.io/npm/v/i18n-element.svg)](https://www.npmjs.com/package/i18n-element) | I18N base element class |\n| [i18n-behavior](https://github.com/t2ym/i18n-behavior) | [![npm](https://img.shields.io/npm/v/i18n-behavior.svg)](https://www.npmjs.com/package/i18n-behavior) | Run-time I18N handler |\n| [i18n-format](https://github.com/t2ym/i18n-format) | [![npm](https://img.shields.io/npm/v/i18n-format.svg)](https://www.npmjs.com/package/i18n-format) | I18N text formatter |\n| [i18n-number](https://github.com/t2ym/i18n-number) | [![npm](https://img.shields.io/npm/v/i18n-number.svg)](https://www.npmjs.com/package/i18n-number) | I18N number formatter |\n\nThey are fully integrated in these samples:\n\n- [I18N-ready `pwa-starter-kit`](https://github.com/t2ym/pwa-starter-kit) with [`pwa-starter-kit/gulpfile.js`](https://github.com/t2ym/pwa-starter-kit/blob/master/gulpfile.js)\n- [Live Localizer demo](https://github.com/t2ym/live-localizer) with [`live-localizer/demo/gulpfile.js`](https://github.com/t2ym/live-localizer/blob/master/demo/gulpfile.js)\n  - This version is equipped with Firebase configuration and synchronization for `<live-localizer>`\n- [`i18n-element` demo](https://github.com/t2ym/i18n-element) with [`i18n-element/demo/gulpfile.js`](https://github.com/t2ym/i18n-element/blob/master/demo/gulpfile.js)\n  - This is the latest version\n\n### Configurations in `demo/gulpfile.js` - `npm run demo` to trigger I18N automation\n```javascript\n    const useI18nCoreJs = true; // true to use i18n-core.js for preprocessed scripts\n    const useI18nFormatDataProperty = true; // true to proprocess to <i18n-format .data=${data}><json-data preprocessed>\n    // Diretories are relative to the current directory\n    var srcDir = 'clock'; // source files directory before preprocessing; should be changed to 'src' or whatever the target project is configured with\n    var tmpDir = 'tmp'; // temporary directory for I18N preprocessing\n    var destDir = 'preprocess'; // directory for preprocessed files\n    const minifyHtmlTemplates = false; // true to minify HTML template literals (experimental)\n    const htmlMinifierOptions = { // options for minification of HTML template literals\n      // Same options as polymer build minify: true\n      collapseWhitespace: true,\n      removeComments: true,\n    };\n    const extractAnonymousTemplates = false; // true For Polymer 3.0 templates\n```\n\n## Compatible Versions\n\n| i18n-element   | i18n-behavior  | Polymer | lit-html |\n|:---------------|:---------------|:--------|:---------|\n| 5.x            | 5.x            | 3.x (optional) | 2.x      |\n| 4.x            | 4.x            | 3.x (optional) | 1.x      |\n| 3.x            | 3.x            | 3.x (mandatory) | 1.x      |\n| 2.x            | 2.x            | 1.x-2.x | -        |\n| -              | 1.x            | 1.x     | -        |\n\n- Polymer elements using `i18n-element.js` must depend on `@polymer/polymer` NPM package themselves\n\n## Browser Compatibility\n\n- TODO: To be updated\n- Polyfilled by `@webcomponents/webcomponentsjs/webcomponents-{bundle|loader}.js`\n\n| Browser   | Chrome  | Firefox  | Edge 13+  | IE 11  | Safari 10+ | Chrome Android  | Mobile Safari  | Opera  |\n|:----------|:-------:|:--------:|:---------:|:------:|:---------:|:---------------:|:--------------:|:------:|\n| Supported | ✔       | ✔        | ✔         | ✔      | ✔         | ✔               | ✔              | ✔      |\n\n## License\n\n[BSD-2-Clause](https://github.com/t2ym/i18n-behavior/blob/master/LICENSE.md)\n","maintainers":[{"name":"t2ym","email":"t2y3141592@gmail.com"}],"time":{"modified":"2022-06-18T23:45:52.112Z","created":"2016-09-10T23:50:23.892Z","0.0.0":"2016-09-10T23:50:23.892Z","0.0.1":"2016-09-12T11:48:55.971Z","0.0.2":"2016-09-12T12:07:43.974Z","0.0.3":"2016-09-14T09:22:06.872Z","0.0.4":"2016-09-21T14:13:03.669Z","0.0.5":"2016-09-21T14:36:11.612Z","0.0.6":"2016-09-21T14:46:29.413Z","0.0.7":"2016-09-22T11:33:14.023Z","0.0.8":"2016-09-23T05:24:18.905Z","0.0.9":"2016-09-23T05:31:26.463Z","0.0.10":"2016-09-23T06:12:05.832Z","0.0.11":"2016-09-26T11:19:37.646Z","0.0.12":"2016-09-27T16:54:31.462Z","0.0.13":"2016-09-28T01:39:08.585Z","0.0.14":"2016-09-28T08:05:02.217Z","0.0.15":"2016-09-28T14:15:45.067Z","0.0.16":"2016-09-29T08:03:44.581Z","0.0.17":"2016-09-29T08:18:25.638Z","0.0.18":"2016-09-29T08:26:40.731Z","0.0.19":"2016-09-30T03:44:53.163Z","0.0.20":"2016-09-30T12:11:28.333Z","0.0.21":"2016-10-01T16:09:32.226Z","0.0.22":"2016-10-01T17:55:42.096Z","0.0.23":"2016-10-02T15:53:11.264Z","0.0.24":"2016-10-03T16:44:16.903Z","0.0.25":"2016-10-04T05:23:47.156Z","0.0.26":"2016-10-10T03:31:36.238Z","0.0.27":"2016-10-10T12:22:14.953Z","0.0.28":"2016-10-11T04:08:27.721Z","0.0.29":"2016-10-11T06:48:16.175Z","0.0.30":"2016-10-11T07:04:06.188Z","0.0.31":"2016-10-12T18:09:52.917Z","0.0.32":"2016-10-13T03:33:22.143Z","0.0.33":"2016-10-13T06:36:29.526Z","0.0.34":"2016-10-14T09:21:44.445Z","0.0.35":"2016-10-14T12:34:26.750Z","0.0.36":"2016-10-15T05:28:11.021Z","0.0.37":"2016-10-16T04:09:40.168Z","0.0.38":"2016-10-16T07:01:42.829Z","0.0.39":"2016-10-17T15:36:25.183Z","0.0.40":"2016-10-17T16:06:35.968Z","0.0.41":"2016-10-17T16:20:51.494Z","0.0.42":"2016-10-17T17:42:23.297Z","0.0.43":"2016-10-18T06:32:50.090Z","0.0.44":"2016-10-18T07:04:45.184Z","0.0.45":"2016-10-19T06:56:00.240Z","0.0.46":"2016-10-20T02:16:39.723Z","0.0.47":"2016-10-20T03:28:26.579Z","0.0.48":"2016-10-20T10:56:09.863Z","0.0.49":"2016-10-20T11:04:10.492Z","0.0.50":"2016-10-22T15:19:24.987Z","0.0.51":"2016-10-22T15:23:25.240Z","0.0.52":"2016-10-23T06:29:36.099Z","0.0.53":"2016-10-23T08:55:00.962Z","0.0.54":"2016-10-27T02:49:00.357Z","0.0.55":"2016-10-29T05:57:54.454Z","0.0.56":"2016-10-29T06:37:59.494Z","0.0.57":"2016-11-02T12:57:32.598Z","0.0.58":"2016-11-02T13:13:49.672Z","0.0.59":"2016-11-04T16:15:03.564Z","0.0.60":"2016-11-04T16:23:22.841Z","0.0.61":"2016-11-05T10:06:36.885Z","0.0.62":"2016-11-06T05:45:10.427Z","0.0.63":"2016-11-06T11:59:58.573Z","0.0.64":"2016-12-22T05:19:36.350Z","0.0.65":"2017-02-03T06:59:17.321Z","0.0.66":"2017-02-23T06:51:18.054Z","0.0.67":"2017-03-02T08:41:15.783Z","0.0.68":"2017-03-02T09:21:32.488Z","0.0.69":"2017-03-02T11:22:39.128Z","0.0.70":"2017-03-04T09:19:38.745Z","0.0.71":"2017-03-04T12:04:20.626Z","0.0.72":"2017-03-06T06:35:02.339Z","0.0.73":"2017-03-08T03:16:32.754Z","0.0.74":"2017-03-08T10:11:17.656Z","0.0.75":"2017-03-08T10:23:40.889Z","0.0.76":"2017-03-09T09:35:18.368Z","0.0.77":"2017-04-15T13:41:25.476Z","0.0.78":"2017-04-18T09:24:16.027Z","0.0.79":"2017-05-13T14:33:51.578Z","2.0.0":"2017-05-16T12:09:16.691Z","2.0.1":"2018-01-30T09:53:09.478Z","3.0.0-pre.1":"2019-01-05T05:20:42.362Z","3.0.0-pre.1-lit-html.8.4":"2019-01-05T05:51:47.813Z","3.0.0-pre.2":"2019-01-05T13:11:47.762Z","3.0.0-pre.3":"2019-01-06T02:20:26.314Z","3.0.0-pre.4":"2019-01-06T05:08:37.166Z","3.0.0-pre.4-lit-html.8.4":"2019-01-06T05:14:31.140Z","3.0.0-pre.5":"2019-01-06T08:48:42.094Z","3.0.0-pre.5-lit-html.8.4":"2019-01-06T08:58:17.120Z","3.0.0-pre.5-lit-html.8.5":"2019-01-06T10:29:08.263Z","3.0.0-pre.5-lit-html.8.6":"2019-01-06T12:19:44.686Z","3.0.0-pre.6":"2019-01-06T13:06:51.256Z","3.0.0-pre.6-lit-html.8.6":"2019-01-06T13:07:17.188Z","3.0.0-pre.7":"2019-01-07T04:56:11.148Z","3.0.0-pre.9":"2019-01-07T12:52:40.054Z","3.0.0-pre.10":"2019-01-07T14:57:55.880Z","3.0.0-pre.11":"2019-01-08T05:04:02.324Z","3.0.0-pre.12":"2019-01-08T05:33:45.273Z","3.0.0-pre.13":"2019-01-08T11:13:14.343Z","3.0.0-pre.14":"2019-01-08T12:54:15.820Z","3.0.0-pre.14-lit-html.8.6":"2019-01-08T13:11:55.558Z","3.0.0-pre.15":"2019-01-09T02:01:05.449Z","3.0.0-pre.16":"2019-01-09T03:03:37.503Z","3.0.0-pre.16-lit-html.8.7":"2019-01-10T04:06:54.290Z","3.0.0-pre.16-lit-html.8.8":"2019-01-10T09:24:51.026Z","3.0.0-pre.16-lit-html.8.10":"2019-01-10T09:56:34.756Z","3.0.0-pre.17":"2019-01-10T12:21:52.509Z","3.0.0-pre.17-lit-html.8.10":"2019-01-10T12:33:11.713Z","3.0.0-pre.18":"2019-01-11T09:59:59.710Z","3.0.0-pre.18-lit-html.9":"2019-01-11T10:58:48.100Z","3.0.0-pre.18-lit-html.9.1":"2019-01-15T01:15:19.840Z","3.0.0-pre.19":"2019-01-16T13:58:27.352Z","3.0.0-pre.19-lit-html.9.1":"2019-01-16T14:05:57.660Z","3.0.0-pre.20":"2019-01-16T14:30:19.444Z","3.0.0-pre.20-lit-html.9.1":"2019-01-16T14:34:28.502Z","3.0.0-pre.20-lit-html.10":"2019-01-16T14:48:05.406Z","3.0.0-pre.21":"2019-01-19T13:58:25.788Z","3.0.0-pre.21-lit-html.10":"2019-01-19T13:59:16.911Z","3.0.0-pre.22":"2019-01-20T07:48:44.076Z","3.0.0-pre.22-lit-html.10":"2019-01-20T07:49:19.586Z","3.0.0-pre.23":"2019-01-21T14:22:48.271Z","3.0.0-pre.23-lit-html.10":"2019-01-21T14:26:18.995Z","3.0.0-pre.24":"2019-01-22T09:09:18.053Z","3.0.0-pre.24-lit-html.11":"2019-01-22T09:46:41.521Z","3.0.0-pre.24-lit-html.12":"2019-01-23T12:57:46.846Z","3.0.0-pre.25":"2019-02-01T15:27:08.259Z","3.0.0-pre.25-lit-html.13":"2019-02-01T15:28:53.912Z","3.0.0-pre.25-lit-html.14":"2019-02-02T13:38:46.718Z","3.0.0-pre.25-lit-html.15":"2019-02-03T03:47:01.906Z","3.0.0-pre.26":"2019-02-03T04:13:24.865Z","3.0.0-pre.26-lit-html.15":"2019-02-03T04:18:57.521Z","3.0.0-pre.26-lit-html.16":"2019-02-05T03:08:22.992Z","3.0.0-pre.26-lit-html.17":"2019-02-05T08:20:34.894Z","3.0.0-pre.26-lit-html.18":"2019-02-06T01:16:41.769Z","3.0.0-pre.27":"2019-02-08T05:48:46.770Z","3.0.0-pre.27-lit-html.18":"2019-02-08T05:56:44.327Z","3.0.0-pre.27-lit-html.19":"2019-02-09T07:34:10.357Z","3.0.0-pre.27-lit-html.20":"2019-02-11T05:27:15.575Z","3.0.0-pre.28":"2019-02-11T08:33:06.304Z","3.0.0-pre.28-lit-html.21":"2019-02-11T08:51:53.133Z","3.0.0-pre.28-lit-html.22":"2019-02-12T14:50:19.742Z","3.0.0-pre.28-lit-html.23":"2019-02-13T04:20:11.438Z","3.0.0-pre.28-lit-html.24":"2019-02-14T11:53:28.276Z","3.0.0-pre.28-lit-html.25":"2019-02-15T08:20:16.384Z","3.0.0-pre.28-lit-html.26":"2019-02-16T11:58:10.811Z","3.0.0-pre.28-lit-html.27":"2019-02-16T23:30:49.915Z","3.0.0-pre.28-lit-html.28":"2019-02-17T02:37:18.810Z","3.0.0-pre.28-lit-html.29":"2019-02-18T03:19:56.924Z","3.0.0-pre.28-lit-html.30":"2019-02-19T07:39:25.149Z","3.0.0-pre.28-lit-html.31":"2019-02-19T14:58:01.949Z","3.0.0-pre.28-lit-html.32":"2019-02-20T05:55:26.359Z","3.0.0-pre.28-lit-html.33":"2019-02-20T11:58:51.227Z","3.0.0-rc.1":"2019-02-21T08:10:23.322Z","3.0.0-rc.2":"2019-02-23T14:30:24.471Z","3.0.0":"2019-02-24T13:02:46.126Z","4.0.0-pre.1":"2019-03-04T10:00:36.070Z","4.0.0-pre.2":"2019-03-04T14:43:32.361Z","4.0.0-pre.3":"2019-03-05T12:37:32.778Z","4.0.0-pre.4":"2019-03-06T13:57:06.669Z","4.0.0-pre.5":"2019-03-07T07:39:33.801Z","4.0.0-pre.6":"2019-03-08T11:22:45.937Z","4.0.0-pre.7":"2019-03-09T08:50:24.051Z","4.0.0-pre.8":"2019-03-15T06:13:51.142Z","4.0.0-pre.9":"2019-03-15T06:27:23.136Z","4.0.0-pre.10":"2019-03-15T13:32:09.454Z","4.0.0-pre.10-core":"2019-03-15T13:43:20.843Z","4.0.0-pre.11":"2019-03-15T22:14:33.355Z","4.0.0-pre.11-core":"2019-03-15T22:15:35.770Z","4.0.0-pre.12":"2019-03-16T00:42:42.058Z","4.0.0-pre.12-core":"2019-03-16T00:43:21.390Z","4.0.0-pre.13":"2019-03-17T09:30:46.672Z","4.0.0-pre.13-core":"2019-03-17T09:31:24.924Z","4.0.0-pre.14":"2019-03-18T08:10:04.771Z","4.0.0-pre.14-core":"2019-03-18T08:10:50.308Z","4.0.0-pre.15":"2019-03-18T13:41:09.565Z","4.0.0-pre.15-core":"2019-03-18T13:43:29.477Z","4.0.0-pre.16":"2019-03-19T05:01:27.875Z","4.0.0-pre.16-core":"2019-03-19T05:02:55.908Z","4.0.0-pre.17":"2019-03-20T08:26:52.552Z","4.0.0-pre.17-core":"2019-03-20T08:27:29.188Z","4.0.0":"2019-03-20T13:13:50.608Z","4.0.0-core":"2019-03-20T13:14:54.820Z","4.0.1":"2019-03-26T16:38:26.815Z","4.0.1-core":"2019-03-26T16:39:19.885Z","4.0.2":"2019-03-27T07:41:38.729Z","4.0.2-core":"2019-03-27T07:42:41.236Z","4.0.3":"2019-03-28T08:25:03.592Z","4.0.3-core":"2019-03-28T08:26:00.426Z","4.1.0":"2019-03-28T08:52:24.159Z","4.1.0-core":"2019-03-28T08:53:05.187Z","4.1.2":"2019-03-29T06:28:11.305Z","4.1.2-core":"2019-03-29T06:28:43.691Z","4.1.3":"2019-04-26T11:04:30.108Z","4.1.4":"2020-03-28T09:29:01.901Z","4.1.5":"2020-03-29T13:13:10.591Z","4.1.6":"2020-03-30T03:12:49.207Z","5.0.0":"2021-09-29T07:27:45.382Z"},"homepage":"https://github.com/t2ym/i18n-element#readme","keywords":["polymer","lit-html","web-components","web-component","i18n","internationalization","l10n","localization","format","ES6","ES2015","customElementsV1"],"repository":{"type":"git","url":"git+https://github.com/t2ym/i18n-element.git"},"author":{"name":"Tetsuya Mori","email":"t2y3141592@gmail.com"},"bugs":{"url":"https://github.com/t2ym/i18n-element/issues"},"license":"BSD-2-Clause","readmeFilename":"README.md"}