{"_id":"560b64ee5148ba0d009bd0d5","parentDoc":null,"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"},"__v":5,"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"},"project":"55a6e72e8cc73e0d00096635","user":"55a6caa022cfa321008e01d6","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-09-30T04:28:30.464Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":false,"order":6,"body":"This page covers:\n\n* [Translation Syntax](#Syntax)\n* [Video Demo](#LangVideo)\n* [File Permissions Required](#Permissions)\n[block:html]\n{\n  \"html\": \"<h2> <a name=\\\"Syntax\\\"></a> Translation Syntax </h2>\\n\\nOnce keys and values are defined in the appropriate <span class=\\\"inline-code\\\">.json</span> translation files, you invoke dynamic translation strings using the Stencil framework’s <span class=\\\"inline-code\\\">{{<a href=\\\"/docs/custom-handlebars-helpers#Custom-HB-lang\\\">lang</a>}}</span> custom Handlebars helper. Your invocation would follow this generic format:<br>\\n\\n<p></p><pre>{{lang \\\"<i>translation.key</i>\\\" optionalVariable=”<i>someValue</i>”}}</pre>\\n\\n\\nHere is how this works. In a non-internationalized theme, a storefront page might include a static/dynamic string like this:<br>\\n\\n<p></p><pre>&lt;a href=\\\"{{ urls.account }}\\\"&gt;Welcome Back &lt;span&gt;{{ customer.name }}&lt;/span&gt;&lt;/a&gt;</pre>\\n\\n\\nThe corresponding internationalized version – ready to work with any language – would substitute the fully dynamic \\n<span class=\\\"inline-code\\\">{{ lang... }}</span> Handlebars helper shown below:<br>\\n\\n<p></p><pre>&lt;a href=\\\"{{ urls.account }}\\\"&gt;{{ lang \\\"header.welcome_back\\\" name=customer.name }}&lt;/a&gt;</pre>\\n\\n\\n<h2> <a name=\\\"LangVideo\\\"></a> Video Demo </h2>\\n\\nWatch a video demonstration of how JSON translation files' key/value pairs interact with your templates' Handlebars statements to localize your storefront pages: <br><p></p>\\n\\n<iframe src=\\\"https://www.youtube.com/embed/ygiRGfSrmnA?ecver=2\\\" width=\\\"560\\\" height=\\\"315\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<a name=\"Permissions\"></a>\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"File Permissions Required\",\n  \"body\": \"Be sure to set permission `644` (`rw-r–r–`) on any new translation files that you add. Without these permissions, running your theme locally will fail, with multiple error messages. Bundling your theme will also fail, blocking its upload to a store.\"\n}\n[/block]","excerpt":"","slug":"invoking-translation-keys","type":"basic","title":"Invoking Translation Keys"}

Invoking Translation Keys


This page covers: * [Translation Syntax](#Syntax) * [Video Demo](#LangVideo) * [File Permissions Required](#Permissions) [block:html] { "html": "<h2> <a name=\"Syntax\"></a> Translation Syntax </h2>\n\nOnce keys and values are defined in the appropriate <span class=\"inline-code\">.json</span> translation files, you invoke dynamic translation strings using the Stencil framework’s <span class=\"inline-code\">{{<a href=\"/docs/custom-handlebars-helpers#Custom-HB-lang\">lang</a>}}</span> custom Handlebars helper. Your invocation would follow this generic format:<br>\n\n<p></p><pre>{{lang \"<i>translation.key</i>\" optionalVariable=”<i>someValue</i>”}}</pre>\n\n\nHere is how this works. In a non-internationalized theme, a storefront page might include a static/dynamic string like this:<br>\n\n<p></p><pre>&lt;a href=\"{{ urls.account }}\"&gt;Welcome Back &lt;span&gt;{{ customer.name }}&lt;/span&gt;&lt;/a&gt;</pre>\n\n\nThe corresponding internationalized version – ready to work with any language – would substitute the fully dynamic \n<span class=\"inline-code\">{{ lang... }}</span> Handlebars helper shown below:<br>\n\n<p></p><pre>&lt;a href=\"{{ urls.account }}\"&gt;{{ lang \"header.welcome_back\" name=customer.name }}&lt;/a&gt;</pre>\n\n\n<h2> <a name=\"LangVideo\"></a> Video Demo </h2>\n\nWatch a video demonstration of how JSON translation files' key/value pairs interact with your templates' Handlebars statements to localize your storefront pages: <br><p></p>\n\n<iframe src=\"https://www.youtube.com/embed/ygiRGfSrmnA?ecver=2\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] <a name="Permissions"></a> [block:callout] { "type": "warning", "title": "File Permissions Required", "body": "Be sure to set permission `644` (`rw-r–r–`) on any new translation files that you add. Without these permissions, running your theme locally will fail, with multiple error messages. Bundling your theme will also fail, blocking its upload to a store." } [/block]