{"_id":"560b63dd5148ba0d009bd0d3","version":{"_id":"55a6e72f8cc73e0d00096638","project":"55a6e72e8cc73e0d00096635","hasReference":false,"__v":29,"hasDoc":true,"createdAt":"2015-07-15T23:05:19.125Z","releaseDate":"2015-07-15T23:05:19.125Z","categories":["55a6e7308cc73e0d00096639","55b7ed07aea7c8190058badb","5604567c0c78b00d0039b191","5605e6f23a93940d002b3e4a","5605f2bba4574a0d00811365","5605f309a4574a0d00811366","5608e3b98aedf50d0004cf8f","5608e4318aedf50d0004cf90","5608e6b5a7cc2f0d00d9754d","5608e6d331beb60d001b6560","5608f879a7cc2f0d00d97580","560b097887b71d0d000d3bd9","560b13cbafa0990d00979545","560b5cbec341310d00de2a01","560b5cd0c341310d00de2a02","566a35b81e08750d00a0c49b","566a3e8503b4b20d00d02a4a","567889d307bf6a0d0083edc8","569c8b7c15bb390d00db6f9d","56b254dc65ddf50d0076ba8f","57a8ebc4cdeea20e001d2a63","57e48a4000c8680e00fae6e7","5808216773557d0f00a1e428","58105ad54a8aa50f00aa4cba","58105bf298aea40f00afa3ba","58105f548a4aed0f00d67536","581061b898aea40f00afa3be","584b3de7e5f3a42300df6ef7","596839a75965d400155bb750"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"project":"55a6e72e8cc73e0d00096635","__v":3,"parentDoc":null,"user":"55a6caa022cfa321008e01d6","category":{"_id":"560b5cd0c341310d00de2a02","project":"55a6e72e8cc73e0d00096635","version":"55a6e72f8cc73e0d00096638","__v":9,"pages":["560b629c3616ac17004f1ca3","560b63343bcbd80d0077d10a","560b637e5148ba0d009bd0d0","560b63c53616ac17004f1ca8","560b63dd5148ba0d009bd0d3","560b63f42d00ca0d00a1fdbf","560b64ee5148ba0d009bd0d5","5617054c7f74330d00dfd73c","561705cbbd70650d00977851"],"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-09-30T03:53:52.522Z","from_sync":false,"order":15,"slug":"internationalizationlocalization","title":"Internationalization/Localization"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-09-30T04:23:57.675Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":7,"body":"[block:html]\n{\n  \"html\": \"The <span class=\\\"inline-code\\\">.json</span> translation files are loaded and parsed as UTF-8, so they should support virtually any natural language. The schema also supports the following features:<br>\\n\\n<h2> Automatic Language Detection</h2>\\n\\nThe Stencil framework can automatically detect a localized language, based on the active shopper’s <span class=\\\"inline-code\\\">\\\"Accept‑Language\\\"</span> header.<br>\\n\\n<h2> Cascading Translations</h2>\\n\\nCascading works as follows: Assume that a Quebec/French-Canadian customer visits a storefront built with both <span class=\\\"inline-code\\\">fr.json</span> and <span class=\\\"inline-code\\\">fr‑CA.json</span> localization files. The framework places the <span class=\\\"inline-code\\\">fr‑CA</span> locale \\\"on top of\\\" the base <span class=\\\"inline-code\\\">fr</span> locale. Therefore, any strings missing from the <span class=\\\"inline-code\\\">fr‑CA.json</span> file will “fall back” to definitions in the base <span class=\\\"inline-code\\\">fr.json</span> file, providing at least approximate translations. This cascading works generally across languages and locales.<br>\\n\\n<h2> Nested Plurality and Gender Support</h2>\\n\\nThe framework allows you to code conditional plurality for strings within each translation file. For example, your code within an English-language file could overload a single message to display in each of the following forms – depending on the actual value of its two numeric variables:<br>\\n\\n<ul>\\n  <li>\\\"There are 3 items in 2 categories\\\"</li>\\n  <li>\\\"There is 1 item in 2 categories\\\"</li>\\n  <li>\\\"There are 2 items in 1 category\\\"</li>\\n</ul>\\n\\nHere is the markup that would handle the first three words in each example above, assuming appropriate parameters were inserted in the translation files:<br>\\n\\n<p></p><pre>&lt;h2 class=\\\"modal-header-title\\\"&gt;\\n   {{lang 'cart.added_to_cart.what_next' num_products=cart.quantity}} [...]\\n&lt;/h2&gt;</pre>\\n\\n\\nSimilarly, the framework supports per-language conditional coding of appropriate genders for pronouns and nouns.\"\n}\n[/block]","excerpt":"","slug":"features-supported","type":"basic","title":"Features Supported"}

Features Supported


[block:html] { "html": "The <span class=\"inline-code\">.json</span> translation files are loaded and parsed as UTF-8, so they should support virtually any natural language. The schema also supports the following features:<br>\n\n<h2> Automatic Language Detection</h2>\n\nThe Stencil framework can automatically detect a localized language, based on the active shopper’s <span class=\"inline-code\">\"Accept‑Language\"</span> header.<br>\n\n<h2> Cascading Translations</h2>\n\nCascading works as follows: Assume that a Quebec/French-Canadian customer visits a storefront built with both <span class=\"inline-code\">fr.json</span> and <span class=\"inline-code\">fr‑CA.json</span> localization files. The framework places the <span class=\"inline-code\">fr‑CA</span> locale \"on top of\" the base <span class=\"inline-code\">fr</span> locale. Therefore, any strings missing from the <span class=\"inline-code\">fr‑CA.json</span> file will “fall back” to definitions in the base <span class=\"inline-code\">fr.json</span> file, providing at least approximate translations. This cascading works generally across languages and locales.<br>\n\n<h2> Nested Plurality and Gender Support</h2>\n\nThe framework allows you to code conditional plurality for strings within each translation file. For example, your code within an English-language file could overload a single message to display in each of the following forms – depending on the actual value of its two numeric variables:<br>\n\n<ul>\n <li>\"There are 3 items in 2 categories\"</li>\n <li>\"There is 1 item in 2 categories\"</li>\n <li>\"There are 2 items in 1 category\"</li>\n</ul>\n\nHere is the markup that would handle the first three words in each example above, assuming appropriate parameters were inserted in the translation files:<br>\n\n<p></p><pre>&lt;h2 class=\"modal-header-title\"&gt;\n {{lang 'cart.added_to_cart.what_next' num_products=cart.quantity}} [...]\n&lt;/h2&gt;</pre>\n\n\nSimilarly, the framework supports per-language conditional coding of appropriate genders for pronouns and nouns." } [/block]