{"action":"created","comment":{"url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/comments/37346159","id":37346159,"diff_hunk":"@@ -1,107 +1,418 @@\n enb-bem-i18n\n ============\n \n-\n [![NPM version](http://img.shields.io/npm/v/enb-bem-i18n.svg?style=flat)](https://www.npmjs.org/package/enb-bem-i18n)\n [![Build Status](http://img.shields.io/travis/enb-bem/enb-bem-i18n/master.svg?style=flat&label=tests)](https://travis-ci.org/enb-bem/enb-bem-i18n)\n [![Build status](https://img.shields.io/appveyor/ci/blond/enb-bh.svg?style=flat&label=windows)](https://ci.appveyor.com/project/blond/enb-bh)\n [![Coverage Status](https://img.shields.io/coveralls/enb-bem/enb-bem-i18n.svg?style=flat)](https://coveralls.io/r/enb-bem/enb-bem-i18n?branch=master)\n [![devDependency Status](http://img.shields.io/david/enb-bem/enb-bem-i18n.svg?style=flat)](https://david-dm.org/enb-bem/enb-bem-i18n)\n \n-Поддержка `BEM.I18N` для ENB.\n+Пакет предоставляет набор ENB-технологий для сборки файлов, обеспечивающих мультиязыковую поддержку проектов, созданных по [БЭМ-методологии](https://ru.bem.info/method/). Под мультиязыковой поддержкой понимается интернационализация (далее по тектсу также i18n).\n+\n+С помощью технологий пакета `enb-bem-i18n` осуществляется сборка модуля для интернационализации (`i18n`).\n+\n+**Технологии пакета `enb-bem-i18n`:**\n+\n+* [keysets](/api.ru.md#keysets) — служебная технология для сборки исходных файлов с переводами.\n+* [i18n](/api.ru.md#i18n) — технология для формирования бандлов с переводами для каждого языка, которые будут использоваться в дальнейшем.\n+* [i18n-keysets-xml](/api.ru.md#i18n-keysets-xml) — технология для локализации сервисов, использующих XSLT для шаблонизации.\n+\n+Принципы работы технологий и их API описаны в документе [API технологий](/api.ru.md).\n+\n+**Совместимость:** пакет поддерживает следующие библиотеки:\n \n-Установка:\n-----------\n+* [bem-bl](https://ru.bem.info/libs/bem-bl/dev/)\n+* [bem-core](https://ru.bem.info/libs/bem-core/)\n \n+>Особенности реализации для каждой библиотеки описаны в разделе [подключение библиотек](#Поддержка-библиотек).\n+\n+## Установка\n+\n+Установите пакет `enb-bem-i18n`:\n ```\n npm install --save-dev enb-bem-i18n\n ```\n \n-Для работы модуля требуется зависимость от пакета `enb` версии `0.11.0` или выше.\n+**Требования:** зависимость от пакета `enb` версии `0.11.0` или выше.\n+\n+## Обзор документа\n \n-Технологии\n-----------\n+<!-- TOC -->\n+- [Основные понятия](#Основные-понятия)\n+  - [Исходные данные — keysets](#Исходные-данные--keysets)\n+    - [Расположение в файловой системе](#Расположение-в-файловой-системе)\n+  - [Ядро `i18n`](#Ядро-i18n)\n+- [Работа с технологиями](#Работа-с-технологиями)\n+  - [Объединение данных](#Объединение-данных)\n+  - [Обработка данных](#Обработка-данных)\n+- [Использование](#Использование)\n+  - [В JavaScript](#В-javascript)\n+    - [Использование в Node.js](#Использование-в-nodejs)\n+    - [Использование в браузере](#Использование-в-браузере)\n+  - [В шаблонах](#В-шаблонах)\n+- [API `i18n`](#api-i18n)\n+  - [Инициализация](#Инициализация)\n+  - [Параметризация значений](#Параметризация-значений)\n+- [Отличия в работе](#Отличия-в-работе)\n+  - [Переключение между языками во время исполнения](#Переключение-между-языками-во-время-исполнения)\n+  - [Хранение общих keysets-файлов с переводами](#Хранение-общих-keysets-файлов-с-переводами)\n+  - [Расположение ядра `i18n`](#Расположение-ядра-i18n)\n \n-* [i18n-keysets-xml](#i18n-keysets-xml)\n-* [i18n-lang-js](#i18n-lang-js)\n-* [i18n-merge-keysets](#i18n-merge-keysets)\n-* [i18n-bemjson-to-html](#i18n-bemjson-to-html)\n+<!-- TOC END -->\n \n-### i18n-lang-js\n \n-Собирает `?.lang.<язык>.js`-файлы на основе `?.keysets.<язык>.js`-файлов.\n+## Основные понятия\n \n-Используется для локализации в JS с помощью BEM.I18N.\n+### Исходные данные — keysets\n \n-**Опции**\n+`keysets` — исходные файлы с переводами для поддержки интернационализации. Перевод представляет собой набор ключей и их значений. Ключ определяет, какое из значений должно быть выбрано для указанного языка.\n \n-* *String* **target** — Результирующий таргет. По умолчанию — `?.lang.{lang}.js`.\n-* *String* **lang** — Язык, для которого небходимо собрать файл.\n-* *String* **keysetsFile** — Исходный keysets-файл. По умолчанию — `?.keysets.{lang}.js`.\n+Пример для русского языка:\n \n-**Пример**\n+```js\n+{\n+    hello: 'Привет!'\n+}\n+```\n+Пример для английского языка:\n \n-```javascript\n-nodeConfig.addTechs([\n-  [ require('enb-bem-i18n/techs/i18n-lang-js'), { lang: 'all'} ],\n-  [ require('enb-bem-i18n/techs/i18n-lang-js'), { lang: '{lang}'} ]\n-]);\n+```js\n+{\n+    hello: 'Hello!'\n+}\n ```\n \n-### i18n-merge-keysets\n+Набор данных `ключ: 'значение'` передается с указанием контекста (`scope`). Обычно контекстом служит имя блока.\n \n-Собирает `?.keysets.<язык>.js`-файлы на основе `*.i18n`-папок для указанных языков.\n+Пример keysets-файла:\n \n-**Опции**\n+```js\n+module.exports = {\n+    scope: {\n+        key: 'val'\n+    }\n+};\n+```\n+Пример keysets-файла для русского языка:\n+\n+```js\n+module.exports = {\n+    greeting: {\n+        hello: 'Привет!''\n+    }\n+};\n+```\n \n-* *String* **target** — Результирующий таргет. По умолчанию — `?.keysets.{lang}.js`.\n-* *String* **lang** — Язык, для которого небходимо собрать файл.\n+#### Расположение в файловой системе\n \n-**Пример**\n+Переводы (keysets) хранятся в файлах `<lang>.js` (например, `en.js`).\n \n-```javascript\n-nodeConfig.addTechs([\n-  [ require('enb-bem-i18n/techs/i18n-merge-keysets'), { lang: 'all' } ],\n-  [ require('enb-bem-i18n/techs/i18n-merge-keysets'), { lang: '{lang}' } ]\n-]);\n+Файлы `<lang>.js` для каждой БЭМ-сущности находятся в отдельной директории `<block-name>.i18n` наряду с другими файлами технологий.\n+\n+```\n+block/\n+    block.css\n+    block.js\n+    block.i18n/\n+        ru.js        # Исходный файл с переводом для русского языка.\n+        en.js        # Исходный файл с переводом для английского языка.\n ```\n \n-### i18n-keysets-xml\n+Также есть возможность объединять одинаковые для всех языков переводы в общие файлы:\n+\n+* В `bem-bl` — в файл `all.js`.\n+* В `bem-core` — в файл `<block-name>.i18n.js`.\n+\n+Файлы `all.js` и `<block-name>.i18n.js` Может содержать [ядро `i18n`](#Ядро-i18n) для библиотеки `bem-bl` и `bem-core`, соответственно.\n+\n+```\n+common.blocks/\n+    block1/\n+        block1.css\n+        block1.js\n+        block1.i18n.js       # Исходный файл с переводом, содержащий\n+                             # общие переводы для всех языков.\n+                             # Может содержать ядро `i18n` для библиотеки `\n+                             # bem-core`.\n+        block1.i18n/         # Директория для хранения файлов с переводами для разных языков.\n+            en.js\n+            ru.js\n+            all.js           # Исходный файл с переводом, содержащий\n+                             # общие переводы (в данном случае для\n+                             # русского и английского языков).\n+                             # Может содержать ядро `i18n` для библиотеки `bem-bl`.\n+```\n+\n+### Ядро `i18n`\n+\n+Ядро `i18n` — это библиотека для интернационализации. Ядро находится в keysets-файлах (`<block-name>.i18n.js` или `<block-name>.all.js`) в одной из базовых библиотек блоков.\n+\n+Пакет `enb-bem-i18n` поддерживает разные реализации ядра интернационализации для библиотек `bem-bl` и `bem-core`.\n+\n+* В `bem-bl` — ядро `BEM.I18N`.\n+* В `bem-core` — ядро `i18n`.\n \n-Собирает `?.keysets.<язык>.xml`-файлы на основе `?.keysets.<язык>.js`-файлов.\n+> Далее по тексту для названия ядра будет использоваться `i18n`.\n \n-Используется для локализации xml-страниц.\n+>Подробнее о расположении keysets-файлов, содержащих ядро, в файловой системе читайте в разделе [Расположение в файловой системе](#Расположение-в-файловой-системе).\n \n-**Опции**\n+Ядро `i18n` в библиотеках `bem-core` и `bem-bl` хранится в keysets-файлах по-разному:\n \n-* *String* **target** — Результирующий таргет. По умолчанию — `?.keysets.{lang}.js`.\n-* *String* **lang** — Язык, для которого небходимо собрать файл.\n+* В `bem-bl` (файл `all.js`):\n \n-**Пример**\n+  ```js\n+  {\n+      all: {\n+          '': { // пустая строка\n+              /* код ядра */\n+          }\n+      }\n+  }\n+  ```\n \n-```javascript\n-nodeConfig.addTech([ require('i18n-keysets-xml'), { lang: '{lang}' } ]);\n+* В `bem-core` (файл `i18n.js`):\n+\n+  ```js\n+  {\n+      i18n: {\n+          i18n: {\n+              /* код ядра */\n+          }\n+      }\n+  }\n+  ```\n+Перед использованием ядро должно быть инициализировано данными из keysets-файлов.\n+\n+**Важно!** Для получения ядра необходимо добавить `mustDeps`-зависимость блокам, которые используют i18n.\n+\n+* Для bem-bl:\n+\n+  ```js\n+  ({\n+      mustDeps: { block: 'i-bem', elem: 'i18n' }\n+  })\n+  ```\n+\n+* Для bem-core:\n+\n+  ```js\n+  ({\n+      mustDeps: { block: 'i18n' }\n+  })\n ```\n \n-### i18n-bemjson-to-html\n+>Подробно про API использования ядра `i18n` читайте в разделе [API `i18n`](#api-i18n).\n \n-Собирает *html*-файл с помощью *bemjson*, *BH* или *BEMHTML*, *lang.all* и *lang.{lang}*.\n+## Работа с технологиями\n \n-**Опции**\n+Данные из keysets-файлов `<lang>.js` во время сборки проходят несколько этапов:\n \n-* *String* **templateFile** — Исходный файл шаблона. Обязательный параметр.\n-* *String* **bemjsonFile** — Исходный BEMJSON-файл. По умолчанию — `?.bemjson.js`.\n-* *String* **langAllFile** — Исходный langAll-файл. По умолчанию — `?.lang.all.js`.\n-* *String* **langFile** — Исходный lang-файл. По умолчанию — `?.lang.{lang}.js`. Если параметр lang не указан, берется первый из объявленных в проекте языков\n-* *String* **target** — Результирующий HTML-файл. По умолчанию — `?.{lang}.html`.\n+* [Объединение данных исходных файлов в один для указанного языка](#Объединение-данных)\n+* [Обработка данных из объединенного файла](#Обработка-данных)\n \n-**Пример**\n+### Объединение данных\n \n-```javascript\n-nodeConfig.addTech(require('enb-bh/techs/i18n-bemjson-to-html'));\n+Технология [keysets](api.ru.md#keysets) объединяет исходные файлы `<lang>.js` для каждого языка в общий файл (`?.keysets.<lang>.js`). Набор языков, для которых будут собраны `?.keysets.<lang>.js`-файлы, задается с помощью опции [lang](#/api.ru.md#lang) в конфигурационном файле (`.enb/make.js`).\n+\n+`?.keysets.<lang>.js`-файл — это промежуточный результат сборки, который в дальнейшем используется технологией [i18n](api.ru.md#i18n).\n+\n+Например, для блоков `greeting` и `login` результирующий `?.keysets.en.js`-файл будет собран следующим образом.\n+\n+Исходный файл `en.js` блока `greeting`:\n+\n+```js\n+module.exports = {\n+  greeting: {\n+      hello: 'Hello',\n+      unknown: 'stranger'\n+  }\n+};\n ```\n \n-Лицензия\n---------\n+Исходный файл `en.js` блока `login`:\n+\n+```js\n+module.exports = {\n+  login: {\n+      login: 'Login',\n+      pass: 'Password'\n+  }\n+};\n+```\n+\n+Результирующий `?.keysets.en.js`-файл:\n+\n+```js\n+module.exports = {\n+  greeting: {\n+      hello: 'Hello',\n+      unknown: 'stranger'\n+  },\n+  login: {\n+      login: 'Login',\n+      pass: 'Password'\n+  }\n+};\n+```\n+\n+>Примеры всех вариантов использования ядра рассмотрены в [тестах к технологии](https://github.com/enb-bem/enb-bem-i18n/blob/master/test/techs/i18n-merge-keysets.test.js).\n+\n+### Обработка данных\n+\n+Данные из объединенного файла `?.keysets.<lang>.js` обрабатываются технологией [i18n](/api.ru.md#i18n). Результатом работы является функция `i18n`, которая при вызове из [шаблонов](#В-шаблонах) или [клиентского JavaScript](#В-javascript) принимает ключ и отдает значение (строку) для конкретного языка.\n+\n+>API взаимодействия с ядром `i18n` описан в разделе [API `i18n`](#api-i18n).\n+Результатом являются `lang.<lang>.js`-файлы, содержащие строки переводов, соответствующие запрошенным ключам.\n+\n+## Использование\n+\n+Функция `i18n` может использоваться:\n+\n+* [в JavaScript](#В-javascript)\n+* [в шаблонах](#В-шаблонах)\n+\n+### В JavaScript\n+\n+Cпособы использования `i18n` в JavaScript зависят от наличия модульной системы и ее типа. Файлы могут подключаться как [в Node.js](#Использование-в-node.js), так и [в браузере](#Использование-в-браузере), независимо от используемой библиотеки (`bem-bl` или `bem-core`).\n+\n+#### Использование в Node.js\n+\n+Скомпилированный файл подключается как модуль в формате CommonJS.\n+\n+```js\n+var i18n = require('bundle.lang.en.js'); // Путь до скомпилированного файла\n+\n+i18n('scope', 'key'); // 'val'\n+```\n+\n+#### Использование в браузере\n+\n+В браузере применение скомпиллированных `?.lang.<lang>.js`-файлов зависит от наличия модульной системы:\n+\n+* **В браузере без YModules как `BEM.I18N`**\n+\n+  ```js\n+  BEM.I18N('scope', 'key'); // Ядро `i18n` предоставляется в глобальную видимость в переменную `BEM.I18N`.\n+  ```\n+\n+* **В браузере с YModules как `i18n`-модуль**\n+\n+  ```js\n+  modules.require('i18n', function (i18n) {\n+      i18n('scope', 'key'); // 'val'\n+  });\n+  ```\n+\n+>**Важно!** В проект с модульной системой ядро библиотеки интернационализации подключаются одинаково, как модуль `i18n`, вне зависимости от используемой библиотеки `bem-core` или `bem-bl`.\n+\n+### В шаблонах\n+\n+Использование функции `i18n` в шаблонах обеспечивают следующие пакеты, которые осуществляют поддержку `i18n` для ENB:\n+\n+* [enb-bemxjst-i18n](https://github.com/enb-bem/enb-bemxjst-i18n)\n+* [enb-xjst-i18n](https://github.com/enb-bem/enb-xjst-i18n)\n+* [enb-bh-i18n](https://github.com/enb-bem/enb-bh-i18n)\n+\n+## API `i18n`\n+\n+### Инициализация\n+\n+* **В `bem-bl`**\n+\n+  ```js\n+  var core = /* ... */,\n+      keyset = {\n+          hello: 'Привет!'\n+      },\n+      lang = 'ru';\n+\n+  core.decl('greeting', keyset, lang);\n+  core.lang(lang);\n+\n+  core('greeting', 'hello'); // Привет!\n+  ```\n+\n+* **В `bem-core`**\n+\n+  ```js\n+  var core = /* ... */,\n+      keysets = {\n+          greeting: {\n+              hello: \"Привет!\"\n+          }\n+      };\n+\n+  var i18n = core().decl(keysets);\n+\n+  i18n('greeting', 'hello'); // Привет!\n+  ```\n+\n+### Параметризация значений\n+\n+Функция принимает следующие параметры:\n+\n+* **scope** — область видимости ключа. Обычно имя блока.\n+* **key** — ключ, соответствующий значению для указанного языка.\n+* **params** — входные данные для функции.\n+\n+Результат выполнения: строка, содержащая перевод.\n+\n+* **В `bem-bl`**\n+\n+  Задавать значения ключей можно не только как строку. Также возможность параметризации значений реализована через XML. В строку передается XML, который обрабатывается с помощью специальной программы.\n+\n+  ```js\n+  {\n+      'scope-1': {\n+          key: 'val'\n+      },\n+      'scope-2': {\n+          key: 'Hello <i18n:param>who</i18n:param>!'\n+      }\n+  }\n+  ```\n+\n+\n+* **В `bem-core`**\n+\n+  Задавать значения ключей можно не только как строку. Параметризация значений реализуется через функцию.\n+\n+  Пример:\n+\n+  ```js\n+  {\n+      'scope-1': {\n+          key: 'val'\n+      },\n+      'scope-2': {\n+          key: function (params, i18n) {\n+              return i18n(params.scope, params.key);\n+          }\n+      }\n+  }\n+  ```\n+\n+  ```js\n+  modules.require('i18n', function (i18n) {\n+      i18n('scope-2', 'key', { scope: 'scope-1', key: 'key' }); // Значение\n+  });\n+  ```\n+\n+## Отличия в работе\n+\n+### Переключение между языками во время исполнения\n+\n+* В `bem-bl` реализована возможность переключения между языками в реальном времени.\n+* В `bem-core` такой возможности нет.\n+\n+### Хранение общих keysets-файлов с переводами\n+\n+* В `bem-bl` переводы, одинаковые для всех языков, хранятся в файле `<block-name>.i18n/all.js`.\n+* В `bem-core` — в файле `*.i18n.js`.","path":"README.md","position":468,"original_position":468,"commit_id":"471fdce73e6fd69356fd1f1c2d48ec412b83ca80","original_commit_id":"471fdce73e6fd69356fd1f1c2d48ec412b83ca80","user":{"login":"blond","id":2225579,"avatar_url":"https://avatars.githubusercontent.com/u/2225579?v=3","gravatar_id":"","url":"https://api.github.com/users/blond","html_url":"https://github.com/blond","followers_url":"https://api.github.com/users/blond/followers","following_url":"https://api.github.com/users/blond/following{/other_user}","gists_url":"https://api.github.com/users/blond/gists{/gist_id}","starred_url":"https://api.github.com/users/blond/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blond/subscriptions","organizations_url":"https://api.github.com/users/blond/orgs","repos_url":"https://api.github.com/users/blond/repos","events_url":"https://api.github.com/users/blond/events{/privacy}","received_events_url":"https://api.github.com/users/blond/received_events","type":"User","site_admin":false},"body":"`<block-name>.i18n.js`","created_at":"2015-08-18T20:02:47Z","updated_at":"2015-08-18T20:02:47Z","html_url":"https://github.com/enb-bem/enb-bem-i18n/pull/45#discussion_r37346159","pull_request_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45","_links":{"self":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/comments/37346159"},"html":{"href":"https://github.com/enb-bem/enb-bem-i18n/pull/45#discussion_r37346159"},"pull_request":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45"}}},"pull_request":{"url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45","id":37245448,"html_url":"https://github.com/enb-bem/enb-bem-i18n/pull/45","diff_url":"https://github.com/enb-bem/enb-bem-i18n/pull/45.diff","patch_url":"https://github.com/enb-bem/enb-bem-i18n/pull/45.patch","issue_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/45","number":45,"state":"open","locked":false,"title":"enb-bem-i18n: new description","user":{"login":"innabelaya","id":6286656,"avatar_url":"https://avatars.githubusercontent.com/u/6286656?v=3","gravatar_id":"","url":"https://api.github.com/users/innabelaya","html_url":"https://github.com/innabelaya","followers_url":"https://api.github.com/users/innabelaya/followers","following_url":"https://api.github.com/users/innabelaya/following{/other_user}","gists_url":"https://api.github.com/users/innabelaya/gists{/gist_id}","starred_url":"https://api.github.com/users/innabelaya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/innabelaya/subscriptions","organizations_url":"https://api.github.com/users/innabelaya/orgs","repos_url":"https://api.github.com/users/innabelaya/repos","events_url":"https://api.github.com/users/innabelaya/events{/privacy}","received_events_url":"https://api.github.com/users/innabelaya/received_events","type":"User","site_admin":false},"body":"Resolved #20 ","created_at":"2015-06-09T11:58:31Z","updated_at":"2015-08-18T20:02:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0c3cd587bd10e9e6675bfb9979ebfb813c1b3c40","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45/commits","review_comments_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45/comments","review_comment_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/comments{/number}","comments_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/45/comments","statuses_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/statuses/471fdce73e6fd69356fd1f1c2d48ec412b83ca80","head":{"label":"enb-bem:README-update","ref":"README-update","sha":"471fdce73e6fd69356fd1f1c2d48ec412b83ca80","user":{"login":"enb-bem","id":8117111,"avatar_url":"https://avatars.githubusercontent.com/u/8117111?v=3","gravatar_id":"","url":"https://api.github.com/users/enb-bem","html_url":"https://github.com/enb-bem","followers_url":"https://api.github.com/users/enb-bem/followers","following_url":"https://api.github.com/users/enb-bem/following{/other_user}","gists_url":"https://api.github.com/users/enb-bem/gists{/gist_id}","starred_url":"https://api.github.com/users/enb-bem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enb-bem/subscriptions","organizations_url":"https://api.github.com/users/enb-bem/orgs","repos_url":"https://api.github.com/users/enb-bem/repos","events_url":"https://api.github.com/users/enb-bem/events{/privacy}","received_events_url":"https://api.github.com/users/enb-bem/received_events","type":"Organization","site_admin":false},"repo":{"id":20487132,"name":"enb-bem-i18n","full_name":"enb-bem/enb-bem-i18n","owner":{"login":"enb-bem","id":8117111,"avatar_url":"https://avatars.githubusercontent.com/u/8117111?v=3","gravatar_id":"","url":"https://api.github.com/users/enb-bem","html_url":"https://github.com/enb-bem","followers_url":"https://api.github.com/users/enb-bem/followers","following_url":"https://api.github.com/users/enb-bem/following{/other_user}","gists_url":"https://api.github.com/users/enb-bem/gists{/gist_id}","starred_url":"https://api.github.com/users/enb-bem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enb-bem/subscriptions","organizations_url":"https://api.github.com/users/enb-bem/orgs","repos_url":"https://api.github.com/users/enb-bem/repos","events_url":"https://api.github.com/users/enb-bem/events{/privacy}","received_events_url":"https://api.github.com/users/enb-bem/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/enb-bem/enb-bem-i18n","description":"BEM.I18N for ENB","fork":false,"url":"https://api.github.com/repos/enb-bem/enb-bem-i18n","forks_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/forks","keys_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/keys{/key_id}","collaborators_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/teams","hooks_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/hooks","issue_events_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/events{/number}","events_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/events","assignees_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/assignees{/user}","branches_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/branches{/branch}","tags_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/tags","blobs_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/refs{/sha}","trees_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/trees{/sha}","statuses_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/statuses/{sha}","languages_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/languages","stargazers_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/stargazers","contributors_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/contributors","subscribers_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/subscribers","subscription_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/subscription","commits_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/commits{/sha}","git_commits_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/commits{/sha}","comments_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/comments{/number}","issue_comment_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/comments{/number}","contents_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/contents/{+path}","compare_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/compare/{base}...{head}","merges_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/merges","archive_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/downloads","issues_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues{/number}","pulls_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls{/number}","milestones_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/milestones{/number}","notifications_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/labels{/name}","releases_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/releases{/id}","created_at":"2014-06-04T14:35:56Z","updated_at":"2015-08-01T18:58:30Z","pushed_at":"2015-08-18T19:38:18Z","git_url":"git://github.com/enb-bem/enb-bem-i18n.git","ssh_url":"git@github.com:enb-bem/enb-bem-i18n.git","clone_url":"https://github.com/enb-bem/enb-bem-i18n.git","svn_url":"https://github.com/enb-bem/enb-bem-i18n","homepage":"","size":806,"stargazers_count":9,"watchers_count":9,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":4,"forks":3,"open_issues":4,"watchers":9,"default_branch":"master"}},"base":{"label":"enb-bem:master","ref":"master","sha":"13b3a638af34704d5fae8d225df017de938c2bf5","user":{"login":"enb-bem","id":8117111,"avatar_url":"https://avatars.githubusercontent.com/u/8117111?v=3","gravatar_id":"","url":"https://api.github.com/users/enb-bem","html_url":"https://github.com/enb-bem","followers_url":"https://api.github.com/users/enb-bem/followers","following_url":"https://api.github.com/users/enb-bem/following{/other_user}","gists_url":"https://api.github.com/users/enb-bem/gists{/gist_id}","starred_url":"https://api.github.com/users/enb-bem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enb-bem/subscriptions","organizations_url":"https://api.github.com/users/enb-bem/orgs","repos_url":"https://api.github.com/users/enb-bem/repos","events_url":"https://api.github.com/users/enb-bem/events{/privacy}","received_events_url":"https://api.github.com/users/enb-bem/received_events","type":"Organization","site_admin":false},"repo":{"id":20487132,"name":"enb-bem-i18n","full_name":"enb-bem/enb-bem-i18n","owner":{"login":"enb-bem","id":8117111,"avatar_url":"https://avatars.githubusercontent.com/u/8117111?v=3","gravatar_id":"","url":"https://api.github.com/users/enb-bem","html_url":"https://github.com/enb-bem","followers_url":"https://api.github.com/users/enb-bem/followers","following_url":"https://api.github.com/users/enb-bem/following{/other_user}","gists_url":"https://api.github.com/users/enb-bem/gists{/gist_id}","starred_url":"https://api.github.com/users/enb-bem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enb-bem/subscriptions","organizations_url":"https://api.github.com/users/enb-bem/orgs","repos_url":"https://api.github.com/users/enb-bem/repos","events_url":"https://api.github.com/users/enb-bem/events{/privacy}","received_events_url":"https://api.github.com/users/enb-bem/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/enb-bem/enb-bem-i18n","description":"BEM.I18N for ENB","fork":false,"url":"https://api.github.com/repos/enb-bem/enb-bem-i18n","forks_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/forks","keys_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/keys{/key_id}","collaborators_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/teams","hooks_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/hooks","issue_events_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/events{/number}","events_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/events","assignees_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/assignees{/user}","branches_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/branches{/branch}","tags_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/tags","blobs_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/refs{/sha}","trees_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/trees{/sha}","statuses_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/statuses/{sha}","languages_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/languages","stargazers_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/stargazers","contributors_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/contributors","subscribers_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/subscribers","subscription_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/subscription","commits_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/commits{/sha}","git_commits_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/git/commits{/sha}","comments_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/comments{/number}","issue_comment_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/comments{/number}","contents_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/contents/{+path}","compare_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/compare/{base}...{head}","merges_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/merges","archive_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/downloads","issues_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues{/number}","pulls_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls{/number}","milestones_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/milestones{/number}","notifications_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/labels{/name}","releases_url":"https://api.github.com/repos/enb-bem/enb-bem-i18n/releases{/id}","created_at":"2014-06-04T14:35:56Z","updated_at":"2015-08-01T18:58:30Z","pushed_at":"2015-08-18T19:38:18Z","git_url":"git://github.com/enb-bem/enb-bem-i18n.git","ssh_url":"git@github.com:enb-bem/enb-bem-i18n.git","clone_url":"https://github.com/enb-bem/enb-bem-i18n.git","svn_url":"https://github.com/enb-bem/enb-bem-i18n","homepage":"","size":806,"stargazers_count":9,"watchers_count":9,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":4,"forks":3,"open_issues":4,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45"},"html":{"href":"https://github.com/enb-bem/enb-bem-i18n/pull/45"},"issue":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/45"},"comments":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/issues/45/comments"},"review_comments":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45/comments"},"review_comment":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/pulls/45/commits"},"statuses":{"href":"https://api.github.com/repos/enb-bem/enb-bem-i18n/statuses/471fdce73e6fd69356fd1f1c2d48ec412b83ca80"}}}}