From ca8a1cd808bb99b27314a5772182cd2b4c0aaf97 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Mon, 12 Jun 2017 13:17:10 +0300 Subject: [PATCH] Add checking for JSON code style and related changes (#89) --- css/properties.json | 4 +- l10n/css.json | 482 ++++++++++++++++++++-------------------- package.json | 8 +- test/lint.js | 90 ++++++++ test/validate-schema.js | 56 ----- 5 files changed, 337 insertions(+), 303 deletions(-) create mode 100644 test/lint.js delete mode 100644 test/validate-schema.js diff --git a/css/properties.json b/css/properties.json index 9380e89e..c72e8f00 100644 --- a/css/properties.json +++ b/css/properties.json @@ -5798,7 +5798,9 @@ "inherited": false, "animationType": "discrete", "percentages": "no", - "groups": ["CSS Text Decoration"], + "groups": [ + "CSS Text Decoration" + ], "initial": "none", "appliesto": "allElements", "computed": "asSpecified", diff --git a/l10n/css.json b/l10n/css.json index 3d7ca904..5c3bbd2c 100644 --- a/l10n/css.json +++ b/l10n/css.json @@ -244,7 +244,7 @@ "basicShape": { "en-US": "a CSS data type interpolate as a simple list. The list values interpolate as length, percentage, or calc where possible. If list values are not one of those types but are identical, those values do interpolate.\">basic shape", "de": "eine CSS Datentyps interpolieren als einfache Liste. Die Listenwerte interpolieren als Länge, Prozentwert oder calc, wo möglich. Falls Listenwerte nicht einem dieser Typen entsprechen, aber identisch sind, werden diese Werte interpoliert.\">einfache Form", - "fr":"une sont interpolées comme une liste simple. La liste de valeurs interpole la longueur, le pourcentage ou la valeur calculée. Si les valeurs de la liste ne sont pas de ces types mais sont identiques, les valeurs seront interpolées.\">forme basique (basic-shape)", + "fr": "une sont interpolées comme une liste simple. La liste de valeurs interpole la longueur, le pourcentage ou la valeur calculée. Si les valeurs de la liste ne sont pas de ces types mais sont identiques, les valeurs seront interpolées.\">forme basique (basic-shape)", "ru": " интерполируются как простой список. Список значений интерполируется как длина, проценты, или расчёт, где возможен. Если список значений не одинакового типа, эти значения интерполируются.\">базовая фигура" }, "basicShapeOtherwiseNo": { @@ -262,7 +262,7 @@ "variesFromBrowserToBrowser": { "en-US": "Varies from one browser to another", "de": "Variiert von einem Browser zum anderen", - "fr": "Varie d'un navigateur \u00e0 l'autre", + "fr": "Varie d'un navigateur à l'autre", "ru": "Варьируется от браузера к браузеру" }, "angleBasicShapeOrPath": { @@ -271,24 +271,24 @@ "de": "{{cssxref(\"\"}}, {{cssxref(\"\"}} oder {{cssxref(\"\"}}" }, "autoForSmartphoneBrowsersSupportingInflation": { - "en-US": "auto<\/code> for smartphone browsers supporting inflation, none<\/code> in other cases (and then not modifiable).", - "de": "auto<\/code> für Smartphone Browser, die Befüllung unterstützen, none<\/code> andererseits (und dann unveränderbar).", - "fr": "auto<\/code> pour les navigateurs de smartphones qui supportent l'expansion, none<\/code> in dans les autres cas (non modifiable alors).", - "ru": "auto<\/code> для браузеров в смартфонах поддерживается увеличение, none<\/code> в других случаях (и позже не изменяется)." + "en-US": "auto for smartphone browsers supporting inflation, none in other cases (and then not modifiable).", + "de": "auto für Smartphone Browser, die Befüllung unterstützen, none andererseits (und dann unveränderbar).", + "fr": "auto pour les navigateurs de smartphones qui supportent l'expansion, none in dans les autres cas (non modifiable alors).", + "ru": "auto для браузеров в смартфонах поддерживается увеличение, none в других случаях (и позже не изменяется)." }, "dependsOnUserAgent": { "en-US": "depends on user agent", "de": "hängt vom User Agent ab", - "fr": "d\u00e9pend de l'agent utilisateur", + "fr": "dépend de l'agent utilisateur", "ja": "ユーザエージェントに依存する", "ru": "зависит от браузера" }, "invertOrCurrentColor": { - "en-US": "invert<\/code>, for browsers supporting it, currentColor<\/code> for the other", - "de": "invert<\/code> für Browser, die es unterstützen, currentColor<\/code> für die anderen", - "fr": "invert<\/code>, pour les navigateurs le supportant, currentColor<\/code> pour les autres", - "ja": "ブラウザが invert をサポートしていればinvert、それ以外では currentColor<\/code>", - "ru": "invert<\/code> для браузеров поддерживающих это, currentColor<\/code> для остальных" + "en-US": "invert, for browsers supporting it, currentColor for the other", + "de": "invert für Browser, die es unterstützen, currentColor für die anderen", + "fr": "invert, pour les navigateurs le supportant, currentColor pour les autres", + "ja": "ブラウザが invert をサポートしていればinvert、それ以外では currentColor", + "ru": "invert для браузеров поддерживающих это, currentColor для остальных" }, "noPracticalInitialValue": { "en-US": "There is no practical initial value for it.", @@ -297,16 +297,16 @@ "ru": "На практике начального значения нет" }, "inlineAxisHorizontalInXUL": { - "en-US": "inline-axis<\/code> (horizontal<\/code> in XUL<\/a>)", - "de": "inline-axis<\/code> (horizontal<\/code> in XUL<\/a>)", - "fr": "inline-axis<\/code> (horizontal<\/code> en XUL<\/a>)", - "ru": "inline-axis<\/code> (horizontal<\/code> в XUL<\/a>)" + "en-US": "inline-axis (horizontal in XUL)", + "de": "inline-axis (horizontal in XUL)", + "fr": "inline-axis (horizontal en XUL)", + "ru": "inline-axis (horizontal в XUL)" }, "noneButOverriddenInUserAgentCSS": { - "en-US": "none<\/code> (but this value is overriden in the user agent CSS)", - "de": "none<\/code> (aber dieser Wert wird im User Agent CSS überschrieben)", - "fr": "none<\/code> (cette valeur est surchargée par le CSS de l'agent utilisateur)", - "ru": "none<\/code> (но это значение перезаписано в дефолтном CSS браузера)" + "en-US": "none (but this value is overriden in the user agent CSS)", + "de": "none (aber dieser Wert wird im User Agent CSS überschrieben)", + "fr": "none (cette valeur est surchargée par le CSS de l'agent utilisateur)", + "ru": "none (но это значение перезаписано в дефолтном CSS браузера)" }, "allElements": { "en-US": "all elements", @@ -325,12 +325,12 @@ "ru": "все элементы, {{cssxref(\"::before\")}} и {{cssxref(\"::after\")}} псевдоэлементы" }, "beforeAndAfterPseudos": { - "en-US": "{{cssxref(\"::before\")}} and {{cssxref(\"::after\")}} pseudo-elements<\/a>", - "de": "{{cssxref(\"::before\")}} und{{cssxref(\"::after\")}} Pseudoelemente<\/a>", - "es": "los pseudoelementos<\/a> {{cssxref(\"::before\")}} y {{cssxref(\"::after\")}}", - "fr": "pseudo-éléments<\/a> {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}} ", - "ja": "{{cssxref(\"::before\")}} \/ {{cssxref(\"::after\")}} \u7591\u4f3c\u8981\u7d20<\/a>", - "ru": "{{cssxref(\"::before\")}} и {{cssxref(\"::after\")}} псевдоэлементы<\/a>" + "en-US": "{{cssxref(\"::before\")}} and {{cssxref(\"::after\")}} pseudo-elements", + "de": "{{cssxref(\"::before\")}} und{{cssxref(\"::after\")}} Pseudoelemente", + "es": "los pseudoelementos {{cssxref(\"::before\")}} y {{cssxref(\"::after\")}}", + "fr": "pseudo-éléments {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}} ", + "ja": "{{cssxref(\"::before\")}} / {{cssxref(\"::after\")}} 疑似要素", + "ru": "{{cssxref(\"::before\")}} и {{cssxref(\"::after\")}} псевдоэлементы" }, "allElementsSVGContainerElements": { "en-US": "all elements; In SVG, it applies to container elements excluding the {{SVGElement(\"defs\")}} element and all graphics elements", @@ -342,7 +342,7 @@ "en-US": "All elements. In SVG, it applies to container elements, graphics elements, and graphics referencing elements.", "de": "Alle Elemente. In SVG wird er auf Containerelemente, Grafikelemente und Grafiken referenzierende Elemente angewandt.", "fr": "Tous les éléments. En SVG, cela s'applique aux éléments de conteneurs, aux éléments graphiques et aux éléments faisant référence à des éléments graphiques.", - "ja": "\u5168\u8981\u7d20. In SVG, it applies to container elements, graphics elements, and graphics referencing elements.", + "ja": "全要素. In SVG, it applies to container elements, graphics elements, and graphics referencing elements.", "ru": "Все элементы. В SVG это применяется к контейнерам, графическим элементам и элементам графической отсылки." }, "nonReplacedBlockElements": { @@ -482,13 +482,13 @@ }, "gridContainers": { "en-US": "grid containers", - "de" : "Gridcontainer", + "de": "Gridcontainer", "fr": "conteneurs de grille", "ru": "сеточные контейнеры" }, "gridItemsAndBoxesWithinGridContainer": { "en-US": "grid items and absolutely-positioned boxes whose containing block is a grid container", - "de" : "Gridelemente und absolut positionierte Boxen, deren beinhaltender Block ein Gridcontainer ist", + "de": "Gridelemente und absolut positionierte Boxen, deren beinhaltender Block ein Gridcontainer ist", "fr": "élements de grilles et boîtes positionnées de façon absolue dont le bloc englobant est un conteneur de grille", "ru": "элементы сетки и абсолютно-позиционированные блоки, находящиеся в сеточном контейнере" }, @@ -496,14 +496,14 @@ "en-US": "non-replaced inline elements", "de": "nicht ersetzte Inlineelemente", "fr": "les éléments en ligne non remplacés", - "ja": "\u975e\u7f6e\u63db\u30a4\u30f3\u30e9\u30a4\u30f3\u8981\u7d20", + "ja": "非置換インライン要素", "ru": "не заменяемые строчные элементы" }, "allElementsAcceptingWidthOrHeight": { "en-US": "all elements that accept width or height", "de": "alle Elemente, die Breite oder Höhe akzeptieren", "fr": "tous les éléments acceptant une largeur ou une hauteur", - "ja": "width \u304a\u3088\u3073 height \u3092\u53d7\u3051\u4ed8\u3051\u308b\u5168\u3066\u306e\u8981\u7d20", + "ja": "width および height を受け付ける全ての要素", "ru": "все элементы, которые могут иметь ширину и высоту" }, "inlineLevelAndTableCellElements": { @@ -517,14 +517,14 @@ "en-US": "table-caption elements", "de": "table-caption Elemente", "fr": "éléments qui sont des légendes de tableaux", - "ja": "table-caption \u8981\u7d20", + "ja": "table-caption 要素", "ru": "заголовки таблиц" }, "tableCellElements": { "en-US": "table-cell elements", "de": "table-cell Elemente", "fr": "éléments qui sont des cellules de tableau", - "ja": "\u30c6\u30fc\u30d6\u30eb\u30bb\u30eb\u8981\u7d20", + "ja": "テーブルセル要素", "ru": "ячейки таблицы" }, "maskElements": { @@ -540,16 +540,16 @@ "ru": "изображения" }, "elementsWithDisplayBoxOrInlineBox": { - "en-US": "elements with a CSS {{cssxref(\"display\")}} value of box<\/code> or inline-box<\/code>", - "de": "Elemente mit einem CSS {{cssxref(\"display\")}} Wert von box<\/code> oder inline-box<\/code>", - "fr": "éléments avec {{cssxref(\"display\")}} qui vaut box<\/code> ou inline-box<\/code>", - "ru": "элементы с значением свойства {{cssxref(\"display\")}} box<\/code> или inline-box<\/code>" + "en-US": "elements with a CSS {{cssxref(\"display\")}} value of box or inline-box", + "de": "Elemente mit einem CSS {{cssxref(\"display\")}} Wert von box oder inline-box", + "fr": "éléments avec {{cssxref(\"display\")}} qui vaut box ou inline-box", + "ru": "элементы с значением свойства {{cssxref(\"display\")}} box или inline-box" }, "elementsWithDisplayMarker": { - "en-US": "elements with {{cssxref(\"display\")}}: marker;<\/code>", - "de": "Elemente mit {{cssxref(\"display\")}}: marker;<\/code>", - "fr": "éléments avec {{cssxref(\"display\")}}: marker;<\/code>", - "ru": "элементы с {{cssxref(\"display\")}}: marker;<\/code>" + "en-US": "elements with {{cssxref(\"display\")}}: marker;", + "de": "Elemente mit {{cssxref(\"display\")}}: marker;", + "fr": "éléments avec {{cssxref(\"display\")}}: marker;", + "ru": "элементы с {{cssxref(\"display\")}}: marker;" }, "inFlowChildrenOfBoxElements": { "en-US": "in-flow children of box elements", @@ -597,7 +597,7 @@ "en-US": "for {{xref_csslength}} the absolute value, otherwise a percentage", "de": "for {{xref_csslength}} the absolute value, otherwise a percentage", "fr": "pour une valeur de type {{xref_csslength}} sa valeur absolue, sinon un pourcentage", - "ja": "{{xref_csslength}} \u306e\u5834\u5408\u306f\u7d76\u5bfe\u7684\u306a\u5024\u3001\u3055\u3082\u306a\u304f\u3070\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8", + "ja": "{{xref_csslength}} の場合は絶対的な値、さもなくばパーセンテージ", "ru": "для {{xref_csslength}} абсолютное значение, иначе процент" }, "consistsOfTwoDimensionKeywords": { @@ -621,7 +621,7 @@ "inFlowBlockLevelElements": { "en-US": "in-flow block-level elements", "de": "in-flow block-level Elemente", - "fr": "\u00e9l\u00e9ments de type bloc participant au flux", + "fr": "éléments de type bloc participant au flux", "ja": "フロート内に配置された、フローティングや絶対配置がなされていない全てのブロックレベル要素", "ru": "блочные элементы в потоке" }, @@ -629,21 +629,21 @@ "en-US": "all elements, though some values have no effect on non-inline elements", "de": "Alle Elemente, einige Werte haben keine Wirkung bei non-inline Elementen", "fr": "tous les éléments bien que certaines valeurs n'aient pas d'effet sur les éléments qui ne sont pas en ligne", - "ja": "\u5168\u8981\u7d20\u3002\u305f\u3060\u3057\u4e00\u90e8\u306e\u5024\u306f\u30a4\u30f3\u30e9\u30a4\u30f3\u3067\u306a\u3044\u8981\u7d20\u306b\u306f\u52b9\u679c\u304c\u3042\u308a\u307e\u305b\u3093", + "ja": "全要素。ただし一部の値はインラインでない要素には効果がありません", "ru": "все элементы, хотя некоторые значения не работают на не строчных элементах" }, "allElementsExceptTableRowColumnGroupsTableRowsColumns": { "en-US": "all elements except table row groups, table column groups, table rows, and table columns", "de": "alle Elemente außer Tabellenzeilengruppen, Tabellenspaltengruppen, Tabellenzeilen und Tabellenspalten", "fr": "tous les éléments exceptés les groupes de lignes, les groupes de colonnes des tableaux et les colonnes de tableaux", - "ja": "\u30c6\u30fc\u30d6\u30eb\u884c\u30b0\u30eb\u30fc\u30d7\u3001\u30c6\u30fc\u30d6\u30eb\u5217\u30b0\u30eb\u30fc\u30d7\u3001\u30c6\u30fc\u30d6\u30eb\u884c\u3001\u30c6\u30fc\u30d6\u30eb\u5217\u3092\u9664\u304f\u5168\u8981\u7d20", + "ja": "テーブル行グループ、テーブル列グループ、テーブル行、テーブル列を除く全要素", "ru": "все элементы, кроме групп табличных строк, групп табличных столбцов, табличных строк и табличных колонок" }, "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns": { "en-US": "all elements, except table row groups, rows, column groups, and columns", "de": "alle Elemente außer Tabellenzeilengruppen, Zeilen, Spaltengruppen und Spalten", "fr": "tous les éléments exceptés les groupes de lignes, les lignes, les groupes de colonnes et les colonnes de tableaux", - "ja": "\u30c6\u30fc\u30d6\u30eb\u884c\u30b0\u30eb\u30fc\u30d7\u3001\u30c6\u30fc\u30d6\u30eb\u5217\u30b0\u30eb\u30fc\u30d7\u3001\u30c6\u30fc\u30d6\u30eb\u884c\u3001\u30c6\u30fc\u30d6\u30eb\u5217\u3092\u9664\u304f\u5168\u8981\u7d20", + "ja": "テーブル行グループ、テーブル列グループ、テーブル行、テーブル列を除く全要素", "ru": "все элементы, кроме групп табличных строк, столбцов, групп столбцов и столбцов" }, "multilineFlexContainers": { @@ -655,15 +655,15 @@ "flexItemsAndAbsolutelyPositionedFlexContainerChildren": { "en-US": "flex items and absolutely-positioned flex container children", "de": "flexible Elemente und absolut positionierte Flexcontainerkinder", - "fr": "\u00e9l\u00e9ments flexibles, ainsi que les enfants absolument positionn\u00e9s de conteneurs flexibles", + "fr": "éléments flexibles, ainsi que les enfants absolument positionnés de conteneurs flexibles", "ru": "flex-элементы и абсолютно-позицированые потомки flex-контейнера" }, "allElementsNoEffectIfDisplayNone": { - "en-US": "all elements, but has no effect if the value of {{cssxref(\"display\")}} is none<\/code>.", - "de": "alle Elemente, hat jedoch keinen Effekt, falls der Wert von {{cssxref(\"display\")}} none<\/code> ist", - "fr": "tous les éléments mais n'a aucun effet si la valeur de display<\/code> est none<\/code>.", - "ja": "全要素。ただし {{cssxref(\"display\")}} が none<\/code>なら効果を持ちません。", - "ru": "все элементы, но не будет эффекта, если display: none<\/code>" + "en-US": "all elements, but has no effect if the value of {{cssxref(\"display\")}} is none.", + "de": "alle Elemente, hat jedoch keinen Effekt, falls der Wert von {{cssxref(\"display\")}} none ist", + "fr": "tous les éléments mais n'a aucun effet si la valeur de display est none.", + "ja": "全要素。ただし {{cssxref(\"display\")}} が noneなら効果を持ちません。", + "ru": "все элементы, но не будет эффекта, если display: none" }, "replacedElements": { "en-US": "replaced elements", @@ -672,10 +672,10 @@ "ru": "заменяемые элементы" }, "elementsWithOverflowNotVisibleAndReplacedElements": { - "en-US": "elements with {{cssxref(\"overflow\")}} other than visible<\/code>, and optionally replaced elements representing images or videos, and iframes", - "de": "Elemente, deren {{cssxref(\"overflow\")}} nicht visible<\/code> ist, und optional ersetzte Elemente, die Bilder oder Videos repräsentieren, und iframes", - "fr": "éléments dont {{cssxref(\"overflow\")}} ne vaut pas visible<\/code> et éventuellement les éléments remplacés qui représentent des images, des vidéos ou des iframes", - "ru": "элементы с {{cssxref(\"overflow\")}} отличным от visible<\/code>, и опционально заменяемые элементы представляющие собой картинки, видео и iframe" + "en-US": "elements with {{cssxref(\"overflow\")}} other than visible, and optionally replaced elements representing images or videos, and iframes", + "de": "Elemente, deren {{cssxref(\"overflow\")}} nicht visible ist, und optional ersetzte Elemente, die Bilder oder Videos repräsentieren, und iframes", + "fr": "éléments dont {{cssxref(\"overflow\")}} ne vaut pas visible et éventuellement les éléments remplacés qui représentent des images, des vidéos ou des iframes", + "ru": "элементы с {{cssxref(\"overflow\")}} отличным от visible, и опционально заменяемые элементы представляющие собой картинки, видео и iframe" }, "absolutelyPositionedElements": { "en-US": "absolutely positioned elements", @@ -688,14 +688,14 @@ "en-US": "text fields", "de": "Textfelder", "fr": "champs de texte", - "ja": "\u30c6\u30ad\u30b9\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9", + "ja": "テキストフィールド", "ru": "текстовые поля" }, "textElements": { "en-US": "text elements", "de": "Textelemente", "fr": "éléments textes", - "ja": "\u30c6\u30ad\u30b9\u30c8\u8981\u7d20", + "ja": "テキスト要素", "ru": "текстовые элементы" }, "allHTMLElements": { @@ -708,7 +708,7 @@ "en-US": "all elements except: non-replaced inline elements, table rows, row groups, table columns, and column groups", "de": "alle Elemente außer: nicht ersetzte Inlineelemente, Tabellenzeilen, Zeilengruppen, Tabellenspalten und Spaltengruppen", "fr": "tous les éléments sauf : les éléments en ligne non remplacés, les lignes, les groupes de lignes, les colonnes et les groupes de colonnes pour les tableaux", - "ja": "\u6b21\u3092\u9664\u304f\u5168\u8981\u7d20: \u975e\u7f6e\u63db\u30a4\u30f3\u30e9\u30a4\u30f3\u8981\u7d20\u304a\u3088\u3073\u30c6\u30fc\u30d6\u30eb\u884c\u3001\u884c\u30b0\u30eb\u30fc\u30d7\u3001\u30c6\u30fc\u30d6\u30eb\u5217\u3001\u5217\u30b0\u30eb\u30fc\u30d7", + "ja": "次を除く全要素: 非置換インライン要素およびテーブル行、行グループ、テーブル列、列グループ", "ru": "все элементы, кроме: незаменяемых строчных элементов, строк и колонок таблиц" }, "scrollingBoxes": { @@ -730,26 +730,26 @@ "ru": "базовые элементы ruby, аннотации к ruby, базовые ruby контейнеры, контейнеры аннотаций к ruby" }, "xulImageElements": { - "en-US": "XUL {{XULElem(\"image\")}} elements and {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}}, and {{cssxref(\":-moz-tree-checkbox\")}} pseudo-elements. Note: -moz-image-region only works with {{XULElem(\"image\")}} elements where the icon is specified using {{cssxref(\"list-style-image\")}}. It will not work with XUL <image src=\"url\" /><\/code>.", - "de": "XUL {{XULElem(\"image\")}} Elementen und {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} und {{cssxref(\":-moz-tree-checkbox\")}} Pseudoelementen. Hinweis: -moz-image-region funktioniert nur mit {{XULElem(\"image\")}} Elementen, bei denen das Symbol durch {{cssxref(\"list-style-image\")}} angegeben wird. Es funktioniert nicht mit XUL <image src=\"url\" /><\/code>.", - "fr": "éléments XUL {{XULElem(\"image\")}} et aux pseudo-éléments {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} et {{cssxref(\":-moz-tree-checkbox\")}}. Note : -moz-image-region ne fonctionnera qu'avec les éléments {{XULElem(\"image\")}} où l'icône est définie avec {{cssxref(\"list-style-image\")}}. Cela ne fonctionnera pas avec l'<image src=\"url\" /><\/code> XUL.", - "ru": "XUL {{XULElem(\"image\")}} элементы и {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} и {{cssxref(\":-moz-tree-checkbox\")}} псевдоэлементы. Заметьте: -moz-image-region работает только с элементами {{XULElem(\"image\")}}, где иконка определяется использованием {{cssxref(\"list-style-image\")}}. Это не будет работать с XUL <image src=\"url\" /><\/code>." + "en-US": "XUL {{XULElem(\"image\")}} elements and {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}}, and {{cssxref(\":-moz-tree-checkbox\")}} pseudo-elements. Note: -moz-image-region only works with {{XULElem(\"image\")}} elements where the icon is specified using {{cssxref(\"list-style-image\")}}. It will not work with XUL <image src=\"url\" />.", + "de": "XUL {{XULElem(\"image\")}} Elementen und {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} und {{cssxref(\":-moz-tree-checkbox\")}} Pseudoelementen. Hinweis: -moz-image-region funktioniert nur mit {{XULElem(\"image\")}} Elementen, bei denen das Symbol durch {{cssxref(\"list-style-image\")}} angegeben wird. Es funktioniert nicht mit XUL <image src=\"url\" />.", + "fr": "éléments XUL {{XULElem(\"image\")}} et aux pseudo-éléments {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} et {{cssxref(\":-moz-tree-checkbox\")}}. Note : -moz-image-region ne fonctionnera qu'avec les éléments {{XULElem(\"image\")}} où l'icône est définie avec {{cssxref(\"list-style-image\")}}. Cela ne fonctionnera pas avec l'<image src=\"url\" /> XUL.", + "ru": "XUL {{XULElem(\"image\")}} элементы и {{cssxref(\":-moz-tree-image\")}}, {{cssxref(\":-moz-tree-twisty\")}} и {{cssxref(\":-moz-tree-checkbox\")}} псевдоэлементы. Заметьте: -moz-image-region работает только с элементами {{XULElem(\"image\")}}, где иконка определяется использованием {{cssxref(\"list-style-image\")}}. Это не будет работать с XUL <image src=\"url\" />." }, "firstLetterPseudoElementsAndInlineLevelFirstChildren": { "en-US": "{{cssxref(\"::first-letter\")}} pseudo-elements and inline-level first child of a block container", "de": "{{cssxref(\"::first-letter\")}} Pseudoelemente und Inline-Level-Elemente, die die ersten Kinder eines Blockcontainers sind", - "fr":"pseudo-éléments {{cssxref(\"::first-letter\")}} et le premier fils, en ligne (inline<\/inline>) d'un conteneur de bloc", + "fr": "pseudo-éléments {{cssxref(\"::first-letter\")}} et le premier fils, en ligne (inline) d'un conteneur de bloc", "ru": "{{cssxref(\"::first-letter\")}} псевдоэлементы и первые строчные потомки блока" }, "elementsWithDisplayMozBoxMozInlineBox": { - "en-US": "elements with a CSS {{cssxref(\"display\")}} value of -moz-box<\/code>, -moz-inline-box<\/code>, -webkit-box<\/code> or -webkit-inline-box<\/code>", - "de": "Elemente mit einem CSS {{cssxref(\"display\")}} Wert von -moz-box<\/code>, -moz-inline-box<\/code>, -webkit-box<\/code> oder -webkit-inline-box<\/code>", - "fr": "éléments dont CSS {{cssxref(\"display\")}} vaut -moz-box<\/code>, -moz-inline-box<\/code>, -webkit-box<\/code> ou -webkit-inline-box<\/code>", - "ru": "элементы со значением {{cssxref(\"display\")}}: -moz-box<\/code>, -moz-inline-box<\/code>, -webkit-box<\/code> или -webkit-inline-box<\/code>" + "en-US": "elements with a CSS {{cssxref(\"display\")}} value of -moz-box, -moz-inline-box, -webkit-box or -webkit-inline-box", + "de": "Elemente mit einem CSS {{cssxref(\"display\")}} Wert von -moz-box, -moz-inline-box, -webkit-box oder -webkit-inline-box", + "fr": "éléments dont CSS {{cssxref(\"display\")}} vaut -moz-box, -moz-inline-box, -webkit-box ou -webkit-inline-box", + "ru": "элементы со значением {{cssxref(\"display\")}}: -moz-box, -moz-inline-box, -webkit-box или -webkit-inline-box" }, "directChildrenOfElementsWithDisplayMozBoxMozInlineBox": { "en-US": "elements that are direct children of an element with a CSS {{cssxref(\"display\")}} value of {{cssxref(\"-moz-box\")}} or {{cssxref(\"-moz-inline-box\")}} or {{cssxref(\"-webkit-box\")}} or {{cssxref(\"-webkit-inline-box\")}}", - "de" : "Elemente, die direkte Kinder eines Elements mit einem CSS {{cssxref(\"display\")}} Wert von {{cssxref(\"-moz-box\")}} oder {{cssxref(\"-moz-inline-box\")}} oder {{cssxref(\"-webkit-box\")}} oder {{cssxref(\"-webkit-inline-box\")}} sind", + "de": "Elemente, die direkte Kinder eines Elements mit einem CSS {{cssxref(\"display\")}} Wert von {{cssxref(\"-moz-box\")}} oder {{cssxref(\"-moz-inline-box\")}} oder {{cssxref(\"-webkit-box\")}} oder {{cssxref(\"-webkit-inline-box\")}} sind", "fr": "éléments qui sont des fils direct d'un élément avec {{cssxref(\"display\")}} qui vaut {{cssxref(\"-moz-box\")}} ou {{cssxref(\"-moz-inline-box\")}} ou {{cssxref(\"-webkit-box\")}} ou {{cssxref(\"-webkit-inline-box\")}}", "ru": "элементы, являющиеся прямыми потомками элемента со свойством {cssxref(\"display\")}} равным {{cssxref(\"-moz-box\")}}, {{cssxref(\"-moz-inline-box\")}}, {{cssxref(\"-webkit-box\")}} или {{cssxref(\"-webkit-inline-box\")}}" }, @@ -773,17 +773,17 @@ "ru": "все элементы, кроме сгенерированного контента и псевдоэлементов" }, "visualInContinuousMediaNoEffectInOverflowColumns": { - "en-US": "visual<\/code>, but, in continuous media, has no effect in overflow columns", - "de": "visual<\/code>, aber in kontinuierlichen Medien hat sie keinen Effekt in überlaufenden Spalten", - "fr": "visual<\/code>, mais n'a pas d'effet sur le débordement des colonnes pour un média continu", - "ja": "visual<\/code>。ただし連続メディアではオーバーフローした列に効果なし", - "ru": "visual<\/code>, но в сплошной среде, не имеет никакого эффекта при переполнении колонок" + "en-US": "visual, but, in continuous media, has no effect in overflow columns", + "de": "visual, aber in kontinuierlichen Medien hat sie keinen Effekt in überlaufenden Spalten", + "fr": "visual, mais n'a pas d'effet sur le débordement des colonnes pour un média continu", + "ja": "visual。ただし連続メディアではオーバーフローした列に効果なし", + "ru": "visual, но в сплошной среде, не имеет никакого эффекта при переполнении колонок" }, "optimumValueOfAbsoluteLengthOrNormal": { - "en-US": "an optimum value consisting of either an absolute length or the keyword normal<\/code>", - "de": "ein optimaler Wert, der entweder aus einer absoluten Länge oder dem Schlüsselwort normal<\/code> besteht", - "fr": "une valeur optimale consistant en une longueur absolue ou normal<\/code>", - "ru": "оптимальное значение состоит из абсолютной длины или ключевого слова normal<\/code>" + "en-US": "an optimum value consisting of either an absolute length or the keyword normal", + "de": "ein optimaler Wert, der entweder aus einer absoluten Länge oder dem Schlüsselwort normal besteht", + "fr": "une valeur optimale consistant en une longueur absolue ou normal", + "ru": "оптимальное значение состоит из абсолютной длины или ключевого слова normal" }, "referToSizeOfBoundingBox": { "en-US": "refer to the size of bounding box", @@ -844,7 +844,7 @@ "referToWidthOfAffectedGlyph": { "en-US": "refer to the width of the affected glyph", "de": "bezieht sich auf die Breite des jeweiligen Zeichens", - "fr": "se rapporte \u00e0 la largeur du glyphe concern\u00e9", + "fr": "se rapporte à la largeur du glyphe concerné", "ja": "作用する glyph の width", "ru": "зависит от ширины символа" }, @@ -856,14 +856,14 @@ }, "referToFlexContainersInnerMainSize": { "en-US": "refer to the flex container's inner main size", - "de": "bezieht sich auf die Hauptgr\u00f6\u00dfe des Flexcontainers", - "fr": "se rapporte \u00e0 la principale taille interne du conteneur flexible", + "de": "bezieht sich auf die Hauptgröße des Flexcontainers", + "fr": "se rapporte à la principale taille interne du conteneur flexible", "ru": "относятся к внутреннему размеру главного flex-контейнера" }, "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize": { "en-US": "refer to the size of the background positioning area minus size of background image; size refers to the width for horizontal offsets and to the height for vertical offsets", "de": "bezieht sich auf die Größe des Hintergrundpositionsbereichs abzüglich der Größe des Hintergrundbilds; die Größe bezieht sich auf die vertikalen und horizontalen Verschiebungen", - "fr": "se rapporte \u00e0 la taille de la zone de positionnement de l'arri\u00e8re-plan, moins la taille de l'image; la taille se rapporte \u00e0 la largeur pour les d\u00e9calages horizontaux et \u00e0 la hauteur pour les d\u00e9calages verticaux", + "fr": "se rapporte à la taille de la zone de positionnement de l'arrière-plan, moins la taille de l'image; la taille se rapporte à la largeur pour les décalages horizontaux et à la hauteur pour les décalages verticaux", "ru": "относятся к размеру области позиционирования фона минус размер фонового изображения; размер - ширина горизонтальных смещений и высота вертикальных" }, "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight": { @@ -881,75 +881,75 @@ "relativeToBackgroundPositioningArea": { "en-US": "relative to the background positioning area", "de": "bezieht sich auf den jeweiligen Bereich", - "fr": "relatifs \u00e0 la zone de positionnement du fond", + "fr": "relatifs à la zone de positionnement du fond", "ru": "относительно области позиционирования фона" }, "referToDimensionOfBorderBox": { "en-US": "refer to the corresponding dimension of the border box", - "de": "bezieht sich auf die Gr\u00f6\u00dfe der Border-Box", - "fr": "se rapporte \u00e0 la dimension correspondance de la bo\u00eete de bordure", + "de": "bezieht sich auf die Größe der Border-Box", + "fr": "se rapporte à la dimension correspondance de la boîte de bordure", "ru": "относятся к соответствующему размеру границы элемента" }, "referToSizeOfBorderImage": { "en-US": "refer to the size of the border image", - "de": "bezieht sich auf die Gr\u00f6\u00dfe des Bildes", - "fr": "se rapporte \u00e0 la taille de l'image de bordure", + "de": "bezieht sich auf die Größe des Bildes", + "fr": "se rapporte à la taille de l'image de bordure", "ja": "ボーダー画像のサイズ", "ru": "относятся к размеру рамки изображения" }, "referToWidthOrHeightOfBorderImageArea": { "en-US": "refer to the width or height of the border image area", - "de": "bezieht sich auf die Gr\u00f6\u00dfe des Rahmenbildbereichs", - "fr": "se rapporte \u00e0 la largeur ou la hauteur de la zone de l'image de bordure", + "de": "bezieht sich auf die Größe des Rahmenbildbereichs", + "fr": "se rapporte à la largeur ou la hauteur de la zone de l'image de bordure", "ru": "относятся к высоте или ширине области рамки картинки" }, "referToLineHeight": { "en-US": "refer to the {{cssxref(\"line-height\")}} of the element itself", "de": "bezieht sich auf die {{cssxref(\"line-height\")}} des Elements selbst", - "fr": "se rapporte \u00e0 la hauteur de ligne de l'\u00e9l\u00e9ment lui-m\u00eame", + "fr": "se rapporte à la hauteur de ligne de l'élément lui-même", "ja": "要素自身の行の高さ", "ru": "относятся к {{cssxref(\"line-height\")}} самого элемента" }, "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone": { - "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as none<\/code>.", - "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, wird der Prozentwert wie none<\/code> behandelt.", - "fr": "Le pourcentage est par rapport \u00e0 la hauteur de la bo\u00eete g\u00e9n\u00e9r\u00e9e par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement sp\u00e9cifi\u00e9e (c'est-\u00e0-dire qu'elle d\u00e9pend de la hauteur du contenu), et si cet \u00e9l\u00e9ment n'est pas absolument positionn\u00e9, la valeur du pourcentage est trait\u00e9e comme si elle valait none<\/code>.", + "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as none.", + "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, wird der Prozentwert wie none behandelt.", + "fr": "Le pourcentage est par rapport à la hauteur de la boîte générée par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement spécifiée (c'est-à-dire qu'elle dépend de la hauteur du contenu), et si cet élément n'est pas absolument positionné, la valeur du pourcentage est traitée comme si elle valait none.", "ja": " パーセンテージは、生成ボックスの包含ブロックの高さを基準に計算されます。 包含ブロックの高さが明示的に定義されず(コンテンツの高さに依存します)この要素が絶対位置指定されていないなら、パーセンテージ値は none として扱われます。", - "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот элемент позиционирован не абсолютно, процентное значение интерпретируется как none<\/code>." + "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот элемент позиционирован не абсолютно, процентное значение интерпретируется как none." }, "regardingHeightOfGeneratedBoxContainingBlockPercentages0": { - "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as 0<\/code>.", - "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, wird der Prozentwert wie 0<\/code> behandelt.", + "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as 0.", + "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, wird der Prozentwert wie 0 behandelt.", "es": "Se refiere a la altura del bloque contenedor.", - "fr": "Le poucentage est par rapport \u00e0 la hauteur de la bo\u00eete g\u00e9n\u00e9r\u00e9e par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement sp\u00e9cifi\u00e9e (c'est-\u00e0-dire qu'elle d\u00e9pend de la hauteur du contenu), et si cet \u00e9l\u00e9ment n'est pas absolument positionn\u00e9 , la valeur du pourcentage est trait\u00e9e comme si elle valait 0<\/code>.", + "fr": "Le poucentage est par rapport à la hauteur de la boîte générée par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement spécifiée (c'est-à-dire qu'elle dépend de la hauteur du contenu), et si cet élément n'est pas absolument positionné , la valeur du pourcentage est traitée comme si elle valait 0.", "ja": "パーセンテージは、生成ボックスの包含ブロックの高さを基準に計算されます。 包含ブロックの高さが明示的に定義されず(この場合コンテンツの高さに依存します)この要素が絶対位置指定されていないなら、パーセンテージ値は 0 として扱われます。", - "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот этот элемент позиционирован не абсолютно, процентное значение интерпретируется как 0<\/code>." + "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот этот элемент позиционирован не абсолютно, процентное значение интерпретируется как 0." }, "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock": { - "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the value computes to auto<\/code>. A percentage height on the root element is relative to the initial containing block.", - "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, ist der berechnete Wert auto<\/code>. Eine prozentuale Höhe beim Wurzelelement ist relativ zum ursprünglichen beinhaltenden Block.", - "fr": "Le poucentage est par rapport \u00e0 la hauteur de la bo\u00eete g\u00e9n\u00e9r\u00e9e par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement sp\u00e9cifi\u00e9e (c'est-\u00e0-dire qu'elle d\u00e9pend de la hauteur du contenu), et si cet \u00e9l\u00e9ment n'est pas absolument positionn\u00e9, la valeur du pourcentage est trait\u00e9e comme auto<\/code> et la hauteur du pourcentage sur l'\u00e9l\u00e9ment racine est relative au bloc contenant initial.", - "ja": "パーセンテージは包含ブロックの高さ基準。包含ブロックの高さが明示されず(=コンテンツの高さ依存の場合)、この要素が絶対位置指定されていないなら、値は auto<\/code> になります。ルート要素で高さをパーセンテージ指定すると、初期包含ブロックに相対的になります。", - "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот этот элемент позиционирован не абсолютно, значение будет auto<\/code>. Процентная высота на корневом элементе относительна первоначальному блоку." + "en-US": "The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the value computes to auto. A percentage height on the root element is relative to the initial containing block.", + "de": "Der Prozentwert wird unter Berücksichtigung der Höhe des die generierte Box beinhaltenden Blocks berechnet. Falls die Höhe des beinhaltenden Blocks nicht explizit angegeben wurde (d. h. sie hängt von der Höhe des Inhalts ab) und dieses Element nicht absolut positioniert ist, ist der berechnete Wert auto. Eine prozentuale Höhe beim Wurzelelement ist relativ zum ursprünglichen beinhaltenden Block.", + "fr": "Le poucentage est par rapport à la hauteur de la boîte générée par le bloc contenant. Si la hauteur du bloc contenant n'est pas explicitement spécifiée (c'est-à-dire qu'elle dépend de la hauteur du contenu), et si cet élément n'est pas absolument positionné, la valeur du pourcentage est traitée comme auto et la hauteur du pourcentage sur l'élément racine est relative au bloc contenant initial.", + "ja": "パーセンテージは包含ブロックの高さ基準。包含ブロックの高さが明示されず(=コンテンツの高さ依存の場合)、この要素が絶対位置指定されていないなら、値は auto になります。ルート要素で高さをパーセンテージ指定すると、初期包含ブロックに相対的になります。", + "ru": "Процент для генерируемого блока рассчитывается по отношению к высоте содержащего блока. Если высота содержащего блока не задана явно (т.е. зависит от высоты содержимого), и этот этот элемент позиционирован не абсолютно, значение будет auto. Процентная высота на корневом элементе относительна первоначальному блоку." }, "referToContainingBlockHeight": { "en-US": "refer to the height of the containing block", - "de": "bezieht sich auf die H\u00f6he des \u00e4u\u00dferen Elements", - "fr": "se rapporte \u00e0 la hauteur du bloc contenant", + "de": "bezieht sich auf die Höhe des äußeren Elements", + "fr": "se rapporte à la hauteur du bloc contenant", "ja": "包含ブロックの高さ", "ru": "относятся к высоте содержащего блока" }, "referToElementFontSize": { "en-US": "refer to the font size of the element itself", - "de": "bezieht sich auf die Schriftgr\u00f6\u00dfe des Elternelements", - "fr": "se rapporte \u00e0 la taille de la police de l'\u00e9l\u00e9ment lui-m\u00eame", + "de": "bezieht sich auf die Schriftgröße des Elternelements", + "fr": "se rapporte à la taille de la police de l'élément lui-même", "ja": "要素自身のフォントサイズ", "ru": "относятся к размеру шрифта самого элемента" }, "referToParentElementsFontSize": { "en-US": "refer to the parent element's font size", - "de": "bezieht sich auf die Schriftgr\u00f6\u00dfe des Elternelements", - "fr": "se rapporte \u00e0 la taille de la police de l'\u00e9l\u00e9ment parent", + "de": "bezieht sich auf die Schriftgröße des Elternelements", + "fr": "se rapporte à la taille de la police de l'élément parent", "ja": " 親要素の font-size", "ru": "относятся к размеру шрифта родителя" }, @@ -960,26 +960,26 @@ "ru": "относятся к ширине и высоте самого элемента" }, "referToBorderBox": { - "en-US": "refer to the element\u2019s border box", + "en-US": "refer to the element’s border box", "de": "beziehen sich auf die Rahmenbox des Elements", - "fr": "fait référence à l'élément border box<\/code>", + "fr": "fait référence à l'élément border box", "ru": "относятся к границе элемента" }, "referToDimensionOfContentArea": { "en-US": "refer to corresponding dimension of the content area", - "de" : "beziehen sich auf die entsprechende Dimension des Inhaltsbereichs", + "de": "beziehen sich auf die entsprechende Dimension des Inhaltsbereichs", "fr": "fait référence à la dimension correspondante de la zone de contenu", "ru": "относятся к соответвующему размеру области содержимого" }, "referToWidthOfInitialViewport": { "en-US": "refer to the width of the initial viewport", - "de": "beziehen sich auf die Breite des urspr\u00fcnglichen Viewports", + "de": "beziehen sich auf die Breite des ursprünglichen Viewports", "fr": "fait référence à la largeur de la zone d'affichage (viewport) initiale", "ru": "относятся к ширине изначальной области просмотра" }, "referToHeightOfInitialViewport": { "en-US": "refer to the height of the initial viewport", - "de": "beziehen sich auf die H\u00f6he des urspr\u00fcnglichen Viewports", + "de": "beziehen sich auf die Höhe des ursprünglichen Viewports", "fr": "fait référence à la hauteur de la zone d'affichage (viewport) initiale", "ru": "относятся к высоте изначальной области просмотра" }, @@ -1035,25 +1035,25 @@ "ru": "Одно или два значения, с абсолютной длинной и ключевыми словами, переведёнными в проценты" }, "absoluteLengthOrNone": { - "en-US": "the absolute length or none<\/code>", - "de": "die absolute Länge oder none<\/code>", - "fr": "la longueur absolue ou le mot-cl\u00e9 none<\/code>", - "ja": "\u7d76\u5bfe\u7684\u306a\u9577\u3055\u307e\u305f\u306f none<\/code>", - "ru": "абсолютная длина или none<\/code>" + "en-US": "the absolute length or none", + "de": "die absolute Länge oder none", + "fr": "la longueur absolue ou le mot-clé none", + "ja": "絶対的な長さまたは none", + "ru": "абсолютная длина или none" }, "translucentValuesRGBAOtherwiseRGB": { - "en-US": "If the value is translucent, the computed value will be the rgba()<\/code> corresponding one. If it isn't, it will be the rgb()<\/code> corresponding one. The transparent<\/code> keyword maps to rgba(0,0,0,0)<\/code>.", - "de": "Falls der Wert durchscheinend ist, ist der berechnete Wert der entsprechende rgba()<\/code> Wert. Falls nicht, ist er der entsprechende rgb()<\/code> Wert. Das transparent<\/code> Schlüsselwort wird zu rgb(0,0,0)<\/code>.", - "fr": "si la valeur est translucide, la valeur calcul\u00e9e est la fonction rgba()<\/code>correspondante. Sinon, la fonction rgb()<\/code>correspondante. Le mot-cl\u00e9 transparent<\/code> devient rgb(0,0,0)<\/code>.", - "ja": "\u534a\u900f\u660e\u306e\u5024\u306a\u3089\u3001\u8a08\u7b97\u5024\u306f\u305d\u308c\u306b\u5bfe\u5fdc\u3059\u308b rgba()<\/code>\u3002\u3055\u3082\u306a\u304f\u3070\u305d\u306e\u5024\u306b\u5bfe\u5fdc\u3059\u308b rgb()<\/code>\u3002transparent<\/code> \u30ad\u30fc\u30ef\u30fc\u30c9\u306f rgba(0,0,0,0)<\/code> \u306b\u30de\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002", - "ru": "Если значение полупрозрачно, значение будет соответствовать rgba()<\/code>. А если не будет полупрозрачным, то будет использоваться rgb()<\/code>. Ключевое слово transparent<\/code> интерпретируется в rgba(0,0,0,0)<\/code>." + "en-US": "If the value is translucent, the computed value will be the rgba() corresponding one. If it isn't, it will be the rgb() corresponding one. The transparent keyword maps to rgba(0,0,0,0).", + "de": "Falls der Wert durchscheinend ist, ist der berechnete Wert der entsprechende rgba() Wert. Falls nicht, ist er der entsprechende rgb() Wert. Das transparent Schlüsselwort wird zu rgb(0,0,0).", + "fr": "si la valeur est translucide, la valeur calculée est la fonction rgba()correspondante. Sinon, la fonction rgb()correspondante. Le mot-clé transparent devient rgb(0,0,0).", + "ja": "半透明の値なら、計算値はそれに対応する rgba()。さもなくばその値に対応する rgb()transparent キーワードは rgba(0,0,0,0) にマップされます。", + "ru": "Если значение полупрозрачно, значение будет соответствовать rgba(). А если не будет полупрозрачным, то будет использоваться rgb(). Ключевое слово transparent интерпретируется в rgba(0,0,0,0)." }, "specifiedValueClipped0To1": { - "en-US": "the specified value, clipped in the range [0,1]<\/code>", - "de": "der angegebene Wert, auf den Bereich [0,1]<\/code> abgeschnitten", - "fr": "la valeur sp\u00e9cifi\u00e9e, \u00e9cr\u00eat\u00e9e \u00e0 l'intervalle [0,1]<\/code>", - "ja": "\u6307\u5b9a\u5024\u3002[0,1]<\/code> \u306e\u7bc4\u56f2\u5185\u306b\u30af\u30ea\u30c3\u30d7\u3055\u308c\u307e\u3059", - "ru": "указанное значение, обрезается до диапозона [0,1]<\/code>" + "en-US": "the specified value, clipped in the range [0,1]", + "de": "der angegebene Wert, auf den Bereich [0,1] abgeschnitten", + "fr": "la valeur spécifiée, écrêtée à l'intervalle [0,1]", + "ja": "指定値。[0,1] の範囲内にクリップされます", + "ru": "указанное значение, обрезается до диапозона [0,1]" }, "specifiedValueNumberClipped0To1": { "en-US": "The same as the specified value after clipping the {{cssxref(\"number\")}} to the range [0.0, 1.0].", @@ -1064,74 +1064,74 @@ "absoluteLengthZeroOrLarger": { "en-US": "the absolute length, zero or larger", "de": "the absolute length, zero oder larger", - "fr": "la valeur absolue valant z\u00e9ro ou plus", + "fr": "la valeur absolue valant zéro ou plus", "ja": "ゼロ以上の絶対的な長さ", "ru": "абсолютная длина, ноль или больше" }, "absoluteLengthOrNormal": { - "en-US": "the absolute length or the keyword normal<\/code>", - "de": "die absolute Länge oder das Schlüsselwort normal<\/code>", - "fr": "la longueur absolue ou le mot-cl\u00e9 normal<\/code>", - "ja": "\u7d76\u5bfe\u7684\u306a\u9577\u3055\u307e\u305f\u306f\u30ad\u30fc\u30ef\u30fc\u30c9 normal<\/code>", - "ru": "абсолютная длина или ключевое слово normal<\/code>" + "en-US": "the absolute length or the keyword normal", + "de": "die absolute Länge oder das Schlüsselwort normal", + "fr": "la longueur absolue ou le mot-clé normal", + "ja": "絶対的な長さまたはキーワード normal", + "ru": "абсолютная длина или ключевое слово normal" }, "absoluteLength0IfColumnRuleStyleNoneOrHidden": { - "en-US": "the absolute length; 0<\/code> if the {{cssxref(\"column-rule-style\")}} is none<\/code> or hidden<\/code>", - "de": "die absolute Länge; 0<\/code> falls {{cssxref(\"column-rule-style\")}} none<\/code> oder hidden<\/code> ist", - "fr": "une longueur absolue ou 0<\/code> si {{cssxref(\"column-rule-style\")}} vaut none<\/code> ou hidden<\/code>", - "ja": "\u7d76\u5bfe\u7684\u306a\u9577\u3055\u3002\u5217\u306e\u7f6b\u7dda\u306e\u30b9\u30bf\u30a4\u30eb\u304c none<\/code> \u304b hidden<\/code> \u306a\u3089 0<\/code>", - "ru": "абсолютная длина; 0<\/code>, если {{cssxref(\"column-rule-style\")}} - none<\/code> или hidden<\/code>" + "en-US": "the absolute length; 0 if the {{cssxref(\"column-rule-style\")}} is none or hidden", + "de": "die absolute Länge; 0 falls {{cssxref(\"column-rule-style\")}} none oder hidden ist", + "fr": "une longueur absolue ou 0 si {{cssxref(\"column-rule-style\")}} vaut none ou hidden", + "ja": "絶対的な長さ。列の罫線のスタイルが nonehidden なら 0", + "ru": "абсолютная длина; 0, если {{cssxref(\"column-rule-style\")}} - none или hidden" }, "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden": { - "en-US": "the absolute length or 0<\/code> if {{cssxref(\"border-bottom-style\")}} is none<\/code> or hidden<\/code>", - "de": "die absolute Länge; 0<\/code> falls {{cssxref(\"border-bottom-style\")}} none<\/code> oder hidden<\/code> ist", - "fr": "la longueur absolue ou 0<\/code> si {{cssxref(\"border-bottom-style\")}} vaut none<\/code> ou hidden<\/code>", - "ru": "абсолютная длина или 0<\/code>, если {{cssxref(\"border-bottom-style\")}} - none<\/code> или hidden<\/code>" + "en-US": "the absolute length or 0 if {{cssxref(\"border-bottom-style\")}} is none or hidden", + "de": "die absolute Länge; 0 falls {{cssxref(\"border-bottom-style\")}} none oder hidden ist", + "fr": "la longueur absolue ou 0 si {{cssxref(\"border-bottom-style\")}} vaut none ou hidden", + "ru": "абсолютная длина или 0, если {{cssxref(\"border-bottom-style\")}} - none или hidden" }, "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden": { - "en-US": "the absolute length or 0<\/code> if {{cssxref(\"border-left-style\")}} is none<\/code> or hidden<\/code>", - "de": "die absolute Länge; 0<\/code> falls {{cssxref(\"border-left-style\")}} none<\/code> oder hidden<\/code> ist", - "fr": "la longueur absolue ou 0<\/code> si {{cssxref(\"border-left-style\")}} vaut none<\/code> ou hidden<\/code>", - "ru": "абсолютная длина или 0<\/code>, если {{cssxref(\"border-left-style\")}} - none<\/code> или hidden<\/code>" + "en-US": "the absolute length or 0 if {{cssxref(\"border-left-style\")}} is none or hidden", + "de": "die absolute Länge; 0 falls {{cssxref(\"border-left-style\")}} none oder hidden ist", + "fr": "la longueur absolue ou 0 si {{cssxref(\"border-left-style\")}} vaut none ou hidden", + "ru": "абсолютная длина или 0, если {{cssxref(\"border-left-style\")}} - none или hidden" }, "absoluteLengthOr0IfBorderRightStyleNoneOrHidden": { - "en-US": "the absolute length or 0<\/code> if {{cssxref(\"border-right-style\")}} is none<\/code> or hidden<\/code>", - "de": "die absolute Länge; 0<\/code> falls {{cssxref(\"border-right-style\")}} none<\/code> oder hidden<\/code> ist", - "fr": "la longueur absolue ou 0<\/code> si {{cssxref(\"border-right-style\")}} vaut none<\/code> ou hidden<\/code>", - "ru": "абсолютная длина или 0<\/code>, если {{cssxref(\"border-right-style\")}} - none<\/code> или hidden<\/code>" + "en-US": "the absolute length or 0 if {{cssxref(\"border-right-style\")}} is none or hidden", + "de": "die absolute Länge; 0 falls {{cssxref(\"border-right-style\")}} none oder hidden ist", + "fr": "la longueur absolue ou 0 si {{cssxref(\"border-right-style\")}} vaut none ou hidden", + "ru": "абсолютная длина или 0, если {{cssxref(\"border-right-style\")}} - none или hidden" }, "absoluteLengthOr0IfBorderTopStyleNoneOrHidden": { - "en-US": "the absolute length or 0<\/code> if {{cssxref(\"border-top-style\")}} is none<\/code> or hidden<\/code>", - "de": "die absolute Länge; 0<\/code> falls {{cssxref(\"border-top-style\")}} none<\/code> oder hidden<\/code> ist", - "fr": "la longueur absolue ou 0<\/code> si {{cssxref(\"border-top-style\")}} vaut none<\/code> ou hidden<\/code>", - "ru": "абсолютная длина или 0<\/code>, если {{cssxref(\"border-top-style\")}} - none<\/code> или hidden<\/code>" + "en-US": "the absolute length or 0 if {{cssxref(\"border-top-style\")}} is none or hidden", + "de": "die absolute Länge; 0 falls {{cssxref(\"border-top-style\")}} none oder hidden ist", + "fr": "la longueur absolue ou 0 si {{cssxref(\"border-top-style\")}} vaut none ou hidden", + "ru": "абсолютная длина или 0, если {{cssxref(\"border-top-style\")}} - none или hidden" }, "specifiedIntegerOrAbsoluteLength": { "en-US": "the specified integer or an absolute length", "de": "die angegebene Ganzzahl oder eine absolute Länge", - "fr": "l'entier sp\u00e9cifi\u00e9 ou une longueur absolue", - "ja": "\u6307\u5b9a\u3055\u308c\u305f\u6574\u6570\u5024\u307e\u305f\u306f\u7d76\u5bfe\u7684\u306a\u9577\u3055", + "fr": "l'entier spécifié ou une longueur absolue", + "ja": "指定された整数値または絶対的な長さ", "ru": "указанное целое число или абсолютная длина" }, "startOrNamelessValueIfLTRRightIfRTL": { - "en-US": "start<\/code>, or a nameless value that acts as left<\/code> if {{cssxref(\"direction\")}} is ltr<\/code>, right<\/code> if {{cssxref(\"direction\")}} is rtl<\/code> if start<\/code> is not supported by the browser.", - "de": "start<\/code> oder ein namenloser Wert, der sich wie left<\/code> verhält, falls {{cssxref(\"direction\")}} den Wert ltr<\/code> hat, right<\/code>, falls {{cssxref(\"direction\")}} den Wert rtl<\/code> hat, falls start<\/code> nicht vom Browser unterstützt wird.", - "fr": "start<\/code>, ou une valeur non nomm\u00e9e se comportant comme left<\/code> si {{cssxref(\"direction\")}} est ltr<\/code>, right<\/code> si {{cssxref(\"direction\")}} est rtl<\/code> si start<\/code> n'est pas support\u00e9 par le navigateur", - "ja": "start<\/code>\u3002start<\/code> \u3092\u30b5\u30dd\u30fc\u30c8\u3057\u306a\u3044\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u3001{{cssxref(\"direction\", \"\u6587\u7ae0\u306e\u65b9\u5411\")}}\u304c ltr<\/code> \u306a\u3089 left<\/code>\u3001rtl<\/code> \u306a\u3089 right<\/code> \u3068\u3057\u3066\u52d5\u4f5c\u3059\u308b\u7121\u540d\u306e\u5024", - "ru": "start<\/code>, или неназванное значение, которое действует как left<\/code>, если {{cssxref(\"direction\")}}: ltr<\/code> или как right<\/code>, если {{cssxref(\"direction\")}}: rtl<\/code>, а если start<\/code> не поддерживается браузером." + "en-US": "start, or a nameless value that acts as left if {{cssxref(\"direction\")}} is ltr, right if {{cssxref(\"direction\")}} is rtl if start is not supported by the browser.", + "de": "start oder ein namenloser Wert, der sich wie left verhält, falls {{cssxref(\"direction\")}} den Wert ltr hat, right, falls {{cssxref(\"direction\")}} den Wert rtl hat, falls start nicht vom Browser unterstützt wird.", + "fr": "start, ou une valeur non nommée se comportant comme left si {{cssxref(\"direction\")}} est ltr, right si {{cssxref(\"direction\")}} est rtl si start n'est pas supporté par le navigateur", + "ja": "startstart をサポートしないブラウザでは、{{cssxref(\"direction\", \"文章の方向\")}}が ltr なら leftrtl なら right として動作する無名の値", + "ru": "start, или неназванное значение, которое действует как left, если {{cssxref(\"direction\")}}: ltr или как right, если {{cssxref(\"direction\")}}: rtl, а если start не поддерживается браузером." }, "asSpecifiedExceptMatchParent": { - "en-US": "as specified, except for the match-parent<\/code> value which is calculated against its parent's direction<\/code> value and results in a computed value of either left<\/code> or right<\/code>", - "de": "wie angegeben, außer für den match-parent<\/code> Wert, welcher in Bezug auf den direction<\/code> Wert des Elternelements berechnet wird und einen berechneten Wert von left<\/code> oder right<\/code> ergibt", - "fr": "comme sp\u00e9cifi\u00e9, sauf pour la valeur match-parent<\/code> qui est calcul\u00e9e en fonction de la direction<\/code> du parent et qui vaut soit left<\/code>, soit right<\/code>", - "ja": "\u6307\u5b9a\u5024\u3002\u305f\u3060\u3057 match-parent<\/code> \u5024\u3092\u9664\u304f\u3002\u3053\u306e\u5024\u306f\u89aa\u8981\u7d20\u306e\u65b9\u5411\u306b\u3082\u3068\u3065\u3044\u3066\u8a08\u7b97\u3055\u308c\u3001\u8a08\u7b97\u5024\u304c\u5de6\u53f3\u3069\u3061\u3089\u306b\u3082\u306a\u308a\u307e\u3059", - "ru": "как указано, кроме значения match-parent<\/code>, которое вычисляется вместо значения его родителя direction<\/code>, а результаты в вычисленном значении left<\/code> или right<\/code>" + "en-US": "as specified, except for the match-parent value which is calculated against its parent's direction value and results in a computed value of either left or right", + "de": "wie angegeben, außer für den match-parent Wert, welcher in Bezug auf den direction Wert des Elternelements berechnet wird und einen berechneten Wert von left oder right ergibt", + "fr": "comme spécifié, sauf pour la valeur match-parent qui est calculée en fonction de la direction du parent et qui vaut soit left, soit right", + "ja": "指定値。ただし match-parent 値を除く。この値は親要素の方向にもとづいて計算され、計算値が左右どちらにもなります", + "ru": "как указано, кроме значения match-parent, которое вычисляется вместо значения его родителя direction, а результаты в вычисленном значении left или right" }, "percentageOrAbsoluteLengthPlusKeywords": { "en-US": "the percentage as specified or the absolute length, plus any keywords as specified", "de": "der Prozentwert wie angegeben oder die absolute Länge plus Schlüsselwörter, falls angegeben", - "fr": "le pourcentage tel que sp\u00e9cifi\u00e9 ou la longueur absolue, ainsi que les mots-cl\u00e9 comme sp\u00e9cifi\u00e9s", - "ja": "\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8\u5024\u307e\u305f\u306f\u7d76\u5bfe\u7684\u306a\u9577\u3055\u3001\u7d9a\u3051\u3066\u6307\u5b9a\u3055\u308c\u305f\u4efb\u610f\u306e\u6570\u306e\u30ad\u30fc\u30ef\u30fc\u30c9", + "fr": "le pourcentage tel que spécifié ou la longueur absolue, ainsi que les mots-clé comme spécifiés", + "ja": "指定されたパーセンテージ値または絶対的な長さ、続けて指定された任意の数のキーワード", "ru": "процент, как указан или абсолютная длина, а также любые ключевые слова" }, "sameAsBoxOffsets": { @@ -1175,31 +1175,31 @@ "ru": "вычисленный цвет" }, "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal": { - "en-US": "an optimum, minimum, and maximum value, each consisting of either an absolute length, a percentage, or the keyword normal<\/code>", - "de": "ein optimaler, minimaler und maximaler Wert, jeder bestehend aus entweder einer absoluten Länge, einem Prozentwert oder dem Schlüsselwort normal<\/code>", - "fr": "trois valeurs, optimale, minimale et maximale, chacune consitant en une longueur absolue, un pourcentage ou le mot-cl\u00e9 normal<\/code>", - "ja": "それぞれ絶対指定の length、percentage、キーワード normal<\/code>のいずれかである、最適値、最小値、最大値", - "ru": "оптимальное, минимальное и максимальное значения, каждое из которых абсолютная длина, проценты или ключевое слово normal<\/code>" + "en-US": "an optimum, minimum, and maximum value, each consisting of either an absolute length, a percentage, or the keyword normal", + "de": "ein optimaler, minimaler und maximaler Wert, jeder bestehend aus entweder einer absoluten Länge, einem Prozentwert oder dem Schlüsselwort normal", + "fr": "trois valeurs, optimale, minimale et maximale, chacune consitant en une longueur absolue, un pourcentage ou le mot-clé normal", + "ja": "それぞれ絶対指定の length、percentage、キーワード normalのいずれかである、最適値、最小値、最大値", + "ru": "оптимальное, минимальное и максимальное значения, каждое из которых абсолютная длина, проценты или ключевое слово normal" }, "colorPlusThreeAbsoluteLengths": { "en-US": "a color plus three absolute lengths", "de": "eine Farbe plus drei absolute Längen", "fr": "une couleur et trois longueurs absolues", - "ja": "\u8272\u3001\u7d9a\u3051\u3066\u7d76\u5bfe\u7684\u306a\u9577\u3055 3 \u3064", + "ja": "色、続けて絶対的な長さ 3 つ", "ru": "цвет плюс три абсолютных длины" }, "keywordPlusIntegerIfDigits": { "en-US": "specified keyword, plus integer if 'digits'", "de": "angegebenes Schlüsselwort plus Ganzzahl, falls 'digits'", "fr": "le mot-clé spécifié suivi d'un entier si 'digits'", - "ja": "\u6307\u5b9a\u3055\u308c\u305f\u30ad\u30fc\u30ef\u30fc\u30c9\u3001'digits' \u306e\u5834\u5408\u306f\u7d9a\u3051\u3066\u6574\u6570", + "ja": "指定されたキーワード、'digits' の場合は続けて整数", "ru": "указанное ключевое слово, плюс целые числа, если цифры" }, "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent": { - "en-US": "auto<\/code> computes to itself on absolutely-positioned elements, and to the computed value of {{cssxref(\"align-items\")}} on the parent (minus any legacy keywords) on all other boxes, or start<\/code> if the box has no parent. Its behavior depends on the layout model, as described for {{cssxref(\"justify-self\")}}. Otherwise the specified value.", - "de": "auto<\/code> berechnet sich zu sich selbst bei absolut positionierten Elementen und zum berechneten Wert von {{cssxref(\"align-items\")}} des Elternelements (abzüglich veralteter Schlüsselwörter) bei allen anderen Boxen oder start<\/code>, falls die Box kein Elternelement hat. Sein Verhalten hängt vom Layoutmodell ab, wie für {{cssxref(\"justify-self\")}} beschrieben. Ansonsten der angegebene Wert.", - "fr": "auto<\/code> sera calculé comme auto<\/code> pour les éléments positionnés de façon absolue, sera calculé comme {{cssxref(\"align-items\")}} sur le parent (excepté les mots-clés historiques utilisés) de toutes les autres boîtes ou comme start<\/code> si la boîte n'a pas de parent. Son comportement dépend du modèle de disposition, décrit dans {{cssxref(\"justify-self\")}}, sinon ce sera la valeur spécifiée.", - "ru": "при auto<\/code> абсолютно позиционированные элементы вычисляют сами и вычисленное значение {{cssxref(\"align-items\")}} для родителя (кроме ключевых слов) на остальных блоках, или start<\/code>, если у блока нет родителя. Его поведение зависит от модели макета, описываемой {{cssxref(\"justify-self\")}}. Иначе указанное значение." + "en-US": "auto computes to itself on absolutely-positioned elements, and to the computed value of {{cssxref(\"align-items\")}} on the parent (minus any legacy keywords) on all other boxes, or start if the box has no parent. Its behavior depends on the layout model, as described for {{cssxref(\"justify-self\")}}. Otherwise the specified value.", + "de": "auto berechnet sich zu sich selbst bei absolut positionierten Elementen und zum berechneten Wert von {{cssxref(\"align-items\")}} des Elternelements (abzüglich veralteter Schlüsselwörter) bei allen anderen Boxen oder start, falls die Box kein Elternelement hat. Sein Verhalten hängt vom Layoutmodell ab, wie für {{cssxref(\"justify-self\")}} beschrieben. Ansonsten der angegebene Wert.", + "fr": "auto sera calculé comme auto pour les éléments positionnés de façon absolue, sera calculé comme {{cssxref(\"align-items\")}} sur le parent (excepté les mots-clés historiques utilisés) de toutes les autres boîtes ou comme start si la boîte n'a pas de parent. Son comportement dépend du modèle de disposition, décrit dans {{cssxref(\"justify-self\")}}, sinon ce sera la valeur spécifiée.", + "ru": "при auto абсолютно позиционированные элементы вычисляют сами и вычисленное значение {{cssxref(\"align-items\")}} для родителя (кроме ключевых слов) на остальных блоках, или start, если у блока нет родителя. Его поведение зависит от модели макета, описываемой {{cssxref(\"justify-self\")}}. Иначе указанное значение." }, "asSpecifiedURLsAbsolute": { "en-US": "as specified, but with {{cssxref(\"url\")}} values made absolute", @@ -1210,49 +1210,49 @@ "listEachItemHasTwoKeywordsOnePerDimension": { "en-US": "a list, each item consisting of two keywords, one per dimension", "de": "eine Liste, wobei jedes Element aus zwei Schlüsselwörtern besteht, eins pro Dimension", - "fr": "une liste dont chaque \u00e9l\u00e9ment consiste en deux mots-cl\u00e9, un par dimension", + "fr": "une liste dont chaque élément consiste en deux mots-clé, un par dimension", "ru": "список, каждый элемент которого содержит 2 ключевых слова, по одному на размер" }, "listEachItemTwoKeywordsOriginOffsets": { "en-US": "a list, each item consisting of two keywords representing the origin and two offsets from that origin, each given as an absolute length (if given a {{xref_csslength}}), otherwise as a percentage", "de": "a list, each item consisting of two keywords representing the origin undtwo offsets from that origin, each given as an absolute length (if given a {{xref_csslength}}), otherwise as a percentage", - "fr": "une liste dont chaque \u00e9l\u00e9ment consiste en deux mots-cl\u00e9 repr\u00e9sentant l'origine et deux offsets depuis cette origine, chacun \u00e9tant une longueur absolue (si sp\u00e9cifi\u00e9 comme une {{xref_csslength}}), ou un pourcentage", + "fr": "une liste dont chaque élément consiste en deux mots-clé représentant l'origine et deux offsets depuis cette origine, chacun étant une longueur absolue (si spécifié comme une {{xref_csslength}}), ou un pourcentage", "ru": "список, каждый элемент которого состоит из двух ключевых слов, представляющих начало координат и два смещения от этого начала, каждое из которых задаётся абсолютной длиной (если дано {{xref_csslength}}), иначе как проценты" }, "oneToFourPercentagesOrAbsoluteLengthsPlusFill": { - "en-US": "one to four percentage(s) (as specified) or absolute length(s), plus the keyword fill<\/code> if specified", - "de": "ein bis vier Prozentwert(e) (wie angegeben) oder absolute Länge(n) plus das Schlüsselwort fill<\/code>, falls angegeben", - "fr": "un \u00e0 quatre pourcentages, comme sp\u00e9cifi\u00e9s, ou des longueurs absolues, suivis par le mot-cl\u00e9 fill<\/code> si sp\u00e9cifi\u00e9", - "ja": "1 \u3064\u304b\u3089 4 \u3064\u306e\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8\u5024\uff08\u6307\u5b9a\u5024\uff09\u307e\u305f\u306f\u7d76\u5bfe\u7684\u306a\u9577\u3055\u3002\u6307\u5b9a\u3055\u308c\u3066\u3044\u308c\u3070\u7d9a\u3051\u3066\u30ad\u30fc\u30ef\u30fc\u30c9 fill<\/code>", - "ru": "одно к четырём процентам (как указано) или абсолютной длине(ам), плюс ключевое слово fill<\/code>, если указано" + "en-US": "one to four percentage(s) (as specified) or absolute length(s), plus the keyword fill if specified", + "de": "ein bis vier Prozentwert(e) (wie angegeben) oder absolute Länge(n) plus das Schlüsselwort fill, falls angegeben", + "fr": "un à quatre pourcentages, comme spécifiés, ou des longueurs absolues, suivis par le mot-clé fill si spécifié", + "ja": "1 つから 4 つのパーセンテージ値(指定値)または絶対的な長さ。指定されていれば続けてキーワード fill", + "ru": "одно к четырём процентам (как указано) или абсолютной длине(ам), плюс ключевое слово fill, если указано" }, "noneOrImageWithAbsoluteURI": { - "en-US": "none<\/code> or the image with its URI made absolute", - "de": "none<\/code> oder das Bild mit absoluter URI", - "fr": "none<\/code> ou l'image avec son URI rendue absolue", - "ja": "none<\/code> \u307e\u305f\u306f\u753b\u50cf\u306e\u7d76\u5bfe\u7684 URI", - "ru": "none<\/code> или изображение с абсолютным URI" + "en-US": "none or the image with its URI made absolute", + "de": "none oder das Bild mit absoluter URI", + "fr": "none ou l'image avec son URI rendue absolue", + "ja": "none または画像の絶対的 URI", + "ru": "none или изображение с абсолютным URI" }, "absoluteLengthsSpecifiedColorAsSpecified": { "en-US": "any length made absolute; any specified color computed; otherwise as specified", "de": "Längen absolut gemacht; angegebene Farben berechnet; ansonsten wie angegeben", - "fr": "toute longueur sous forme absolue; toute couleur sous forme calcul\u00e9e; sinon comme sp\u00e9cifi\u00e9", + "fr": "toute longueur sous forme absolue; toute couleur sous forme calculée; sinon comme spécifié", "ja": "指定値(length は全て絶対値となり、color については計算値となる)", "ru": "любая абсолютная длина; работает любой указанный цвет; если другое не указано" }, "percentageAutoOrAbsoluteLength": { - "en-US": "a percentage or auto<\/code> or the absolute length", - "de": "ein Prozentwert oder auto<\/code> oder die absolute Länge", - "fr": "un pourcentage ou auto<\/code> ou une longueur absolue", + "en-US": "a percentage or auto or the absolute length", + "de": "ein Prozentwert oder auto oder die absolute Länge", + "fr": "un pourcentage ou auto ou une longueur absolue", "ja": "パーセンテージ、auto、絶対的な長さのいずれか", - "ru": "процент, auto<\/code> или абсолютная длина" + "ru": "процент, auto или абсолютная длина" }, "percentageAsSpecifiedAbsoluteLengthOrNone": { - "en-US": "the percentage as specified or the absolute length or none<\/code>", - "de": "der Prozentwert wie angegeben oder die absolute Länge oder none<\/code>", - "fr": "le pourcentage comme sp\u00e9cifi\u00e9 ou la longueur absolue ou le mot-cl\u00e9 none<\/code>", - "ja": "\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8\u5024\u307e\u305f\u306f\u7d76\u5bfe\u7684\u306a\u9577\u3055\u3001\u307e\u305f\u306f none<\/code>", - "ru": "проценты, как указаны, абсолютная длина или none<\/code>" + "en-US": "the percentage as specified or the absolute length or none", + "de": "der Prozentwert wie angegeben oder die absolute Länge oder none", + "fr": "le pourcentage comme spécifié ou la longueur absolue ou le mot-clé none", + "ja": "指定されたパーセンテージ値または絶対的な長さ、または none", + "ru": "проценты, как указаны, абсолютная длина или none" }, "absoluteLengthOrKeyword": { "en-US": "for percentage and length values, the absolute length, otherwise the keyword as specified", @@ -1281,44 +1281,44 @@ "ru": "как указано, за исключением <resolution> может изменить значением 'snap'" }, "keywordOrNumericalValueBolderLighterTransformedToRealValue": { - "en-US": "the keyword or the numerical value as specified, with bolder<\/code> and lighter<\/code> transformed to the real value", - "de": "das Schlüsselwort oder der numerische Wert wie angegeben, wobei bolder<\/code> und lighter<\/code> in einen realen Wert umgewandelt werden", - "fr":"le mot-clé ou la valeur numérique, comme spécifié, transformé en la valeur réelle avec bolder<\/code> et lighter<\/code>", - "ru": "ключевое слово или числовое значение, с bolder<\/code> и lighter<\/code>, трансформируемися в действительное значение" + "en-US": "the keyword or the numerical value as specified, with bolder and lighter transformed to the real value", + "de": "das Schlüsselwort oder der numerische Wert wie angegeben, wobei bolder und lighter in einen realen Wert umgewandelt werden", + "fr": "le mot-clé ou la valeur numérique, comme spécifié, transformé en la valeur réelle avec bolder et lighter", + "ru": "ключевое слово или числовое значение, с bolder и lighter, трансформируемися в действительное значение" }, "angleRoundedToNextQuarter": { - "en-US": "an {{xref_cssangle}}, rounded to the next quarter turn from 0deg<\/code> and normalized, that is moduloing the value by 1turn<\/code>", - "de": "ein {{xref_cssangle}}, auf den n\u00e4chsten Viertel von 0deg<\/code> gerundet (\u00fcblicherweise\u00a0 1turn)<\/code>", - "fr": "un {{xref_cssangle}}, arrondi au quart de tour supérieur (à partir de 0deg<\/code>) puis normalisé (modulo) pour obtenir l'angle relatif à un tour", - "ru": "{{xref_cssangle}}, с округлением до следующей четверти оборота от 0deg<\/code> и нормализованный так, что значение - 1 поворот<\/code>" + "en-US": "an {{xref_cssangle}}, rounded to the next quarter turn from 0deg and normalized, that is moduloing the value by 1turn", + "de": "ein {{xref_cssangle}}, auf den nächsten Viertel von 0deg gerundet (üblicherweise  1turn)", + "fr": "un {{xref_cssangle}}, arrondi au quart de tour supérieur (à partir de 0deg) puis normalisé (modulo) pour obtenir l'angle relatif à un tour", + "ru": "{{xref_cssangle}}, с округлением до следующей четверти оборота от 0deg и нормализованный так, что значение - 1 поворот" }, "invertForTranslucentColorRGBAOtherwiseRGB": { - "en-US": "For the keyword invert<\/code>, the computed value is invert<\/code>. For the color value, if the value is translucent, the computed value will be the rgba()<\/code> corresponding one. If it isn't, it will be the rgb()<\/code> corresponding one. The transparent<\/code> keyword maps to rgba(0,0,0,0)<\/code>.", - "de": "Für das Schlüsselwort invert<\/code> ist der berechnete Wert invert<\/code>. Für den Farbwert, falls der Wert durchscheinend ist, ist der berechnete Wert der entsprechende rgba()<\/code> Wert. Falls nicht, ist er der entsprechende rgb()<\/code> Wert. Das Schlüsselwort transparent<\/code> wird zu rgba(0,0,0,0)<\/code>.", - "fr": "Pour le mot-clé invert<\/code>, la valeur calculée est invert<\/code>. Pour la valeur de la couleur, si la valeur est transparente, la valeur calculée sera la valeur rgba()<\/code> correspondante. S'il n'y en a pas, ce sera la valeur rgb()<\/code> correspondante. Le mot-clé transparent<\/code> correspondra à rgba(0,0,0,0)<\/code>.", - "ja": "キーワード invert<\/code> が指定されると計算値も invert<\/code>。色が指定されると、半透明なら、計算値はそれに一致するrbga()<\/code> で、不透明なら、それに一致する rgb()<\/code>。キーワード transparent<\/code> は rgba(0,0,0,0)<\/code> にマップされます", - "ru": "Для ключевого слова invert<\/code>, значение - invert<\/code>. Для значения цвета, если значение имеет прозрачность, соответственно, значение будет через rgba()<\/code>. Если это не так, это будет rgb()<\/code>. Ключевое слово transparent<\/code> отображается, как rgba(0,0,0,0)<\/code>." + "en-US": "For the keyword invert, the computed value is invert. For the color value, if the value is translucent, the computed value will be the rgba() corresponding one. If it isn't, it will be the rgb() corresponding one. The transparent keyword maps to rgba(0,0,0,0).", + "de": "Für das Schlüsselwort invert ist der berechnete Wert invert. Für den Farbwert, falls der Wert durchscheinend ist, ist der berechnete Wert der entsprechende rgba() Wert. Falls nicht, ist er der entsprechende rgb() Wert. Das Schlüsselwort transparent wird zu rgba(0,0,0,0).", + "fr": "Pour le mot-clé invert, la valeur calculée est invert. Pour la valeur de la couleur, si la valeur est transparente, la valeur calculée sera la valeur rgba() correspondante. S'il n'y en a pas, ce sera la valeur rgb() correspondante. Le mot-clé transparent correspondra à rgba(0,0,0,0).", + "ja": "キーワード invert が指定されると計算値も invert。色が指定されると、半透明なら、計算値はそれに一致するrbga() で、不透明なら、それに一致する rgb()。キーワード transparentrgba(0,0,0,0) にマップされます", + "ru": "Для ключевого слова invert, значение - invert. Для значения цвета, если значение имеет прозрачность, соответственно, значение будет через rgba(). Если это не так, это будет rgb(). Ключевое слово transparent отображается, как rgba(0,0,0,0)." }, "absoluteLength0ForNone": { - "en-US": "an absolute length; if the keyword none<\/code> is specified, the computed value is 0<\/code>", - "de": "eine absolute Länge; falls das Schlüsselwort none<\/code> angegeben wurde, ist der berechnete Wert 0<\/code>", - "fr": "une longueur absolue ; si le mot-clé none<\/code> est spécifié, la valeur calculée sera 0<\/code>", - "ja": "絶対的 length。キーワード none<\/code> が指定されると計算値は 0<\/code> になります", - "ru": "абсолютная длина; если указано ключевое слово none<\/code>, вычисленное значение - 0<\/code>" + "en-US": "an absolute length; if the keyword none is specified, the computed value is 0", + "de": "eine absolute Länge; falls das Schlüsselwort none angegeben wurde, ist der berechnete Wert 0", + "fr": "une longueur absolue ; si le mot-clé none est spécifié, la valeur calculée sera 0", + "ja": "絶対的 length。キーワード none が指定されると計算値は 0 になります", + "ru": "абсолютная длина; если указано ключевое слово none, вычисленное значение - 0" }, "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified": { - "en-US": "On elements, always computes to normal<\/code>. On {{cssxref(\"::before\")}} and {{cssxref(\"::after\")}}, if normal<\/code> is specified, computes to none<\/code>. Otherwise, for URI values, the absolute URI; for attr()<\/code> values, the resulting string; for other keywords, as specified.", - "de": "Bei Elementen ist der berechnete Wert immer normal<\/code>. Falls bei {{cssxref(\"::before\")}} und {{cssxref(\"::after\")}} normal<\/code> angegeben ist, ist der berechnete Wert none<\/code>. Ansonsten, für URI Werte die absolute URI; für attr()<\/code> Werte der resultierende String; für andere Schlüsselwörter wie angegeben.", - "fr": "Sur les éléments, le résultat du calcul est toujours normal<\/code>. Sur {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}}, si normal<\/code> est spécifié, cela donnera none<\/code>. Sinon, pour les valeurs d'URI, on aura l'URI absolue ; pour les valeurs attr()<\/code>, on aura la chaine résultante ; pour les autres mots-clé, ce sera comme spécifié.", - "ja": "通常要素で使われると常に normal<\/code>。{{cssxref(\"::before\")}} 及び {{cssxref(\"::after\")}} では: normal<\/code> の指定があれば計算値は none<\/code>。指定がなければ、
  • URI 値は、絶対的 URI となる
  • attr()<\/code> 値は、計算値の文字列となる
  • その他のキーワードについては指定どおり
", - "ru": "На элементах всегда вычисляется как normal<\/code>. На {{cssxref(\"::before\")}} и {{cssxref(\"::after\")}}, если normal<\/code> указано, интерпретируется как none<\/code>. Иначе, для значений URI, абсолютного URI; для значений attr()<\/code> - результирующая строка; для других ключевых слов, как указано." + "en-US": "On elements, always computes to normal. On {{cssxref(\"::before\")}} and {{cssxref(\"::after\")}}, if normal is specified, computes to none. Otherwise, for URI values, the absolute URI; for attr() values, the resulting string; for other keywords, as specified.", + "de": "Bei Elementen ist der berechnete Wert immer normal. Falls bei {{cssxref(\"::before\")}} und {{cssxref(\"::after\")}} normal angegeben ist, ist der berechnete Wert none. Ansonsten, für URI Werte die absolute URI; für attr() Werte der resultierende String; für andere Schlüsselwörter wie angegeben.", + "fr": "Sur les éléments, le résultat du calcul est toujours normal. Sur {{cssxref(\"::before\")}} et {{cssxref(\"::after\")}}, si normal est spécifié, cela donnera none. Sinon, pour les valeurs d'URI, on aura l'URI absolue ; pour les valeurs attr(), on aura la chaine résultante ; pour les autres mots-clé, ce sera comme spécifié.", + "ja": "通常要素で使われると常に normal。{{cssxref(\"::before\")}} 及び {{cssxref(\"::after\")}} では: normal の指定があれば計算値は none。指定がなければ、
  • URI 値は、絶対的 URI となる
  • attr() 値は、計算値の文字列となる
  • その他のキーワードについては指定どおり
", + "ru": "На элементах всегда вычисляется как normal. На {{cssxref(\"::before\")}} и {{cssxref(\"::after\")}}, если normal указано, интерпретируется как none. Иначе, для значений URI, абсолютного URI; для значений attr() - результирующая строка; для других ключевых слов, как указано." }, "autoOrRectangle": { - "en-US": "auto<\/code> if specified as auto<\/code>, otherwise a rectangle with four values, each of which is auto<\/code> if specified as auto<\/code> or the computed length otherwise", - "de": "auto<\/code>, falls als auto<\/code> angegeben, ansonsten ein Rechteck mit vier Werten, von denen jeder auto<\/code> ist, falls als auto<\/code> angegeben, ansonsten die berechnete Länge", - "fr": "auto<\/code> si spécifié comme auto<\/code>, sinon un rectangle avec quatre valeurs dont chacune vaut auto<\/code> si elles sont spécifiées comme auto<\/code> sinon, la longueur calculée", + "en-US": "auto if specified as auto, otherwise a rectangle with four values, each of which is auto if specified as auto or the computed length otherwise", + "de": "auto, falls als auto angegeben, ansonsten ein Rechteck mit vier Werten, von denen jeder auto ist, falls als auto angegeben, ansonsten die berechnete Länge", + "fr": "auto si spécifié comme auto, sinon un rectangle avec quatre valeurs dont chacune vaut auto si elles sont spécifiées comme auto sinon, la longueur calculée", "ja": "auto 指定されていれば auto、それ以外は 4 つの値をともなう矩形。矩形の場合、各値は auto 指定されていれば auto、それ以外では計算値", - "ru": "auto<\/code>, если указано как auto<\/code>, иначе прямоугольник с четырьмя значениями, каждое из которых auto<\/code>, если указаны как auto<\/code> или вычисленная длина в противном случае" + "ru": "auto, если указано как auto, иначе прямоугольник с четырьмя значениями, каждое из которых auto, если указаны как auto или вычисленная длина в противном случае" }, "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent": { "en-US": "as the specified value, except for positioned and floating elements and the root element. In both cases the computed value may be a keyword other than the one specified.", @@ -1334,10 +1334,10 @@ "ru": "как указанное значение, применяется к каждому свойству этой короткой записи." }, "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified": { - "en-US": "as defined for {{cssxref(\"basic-shape\")}} (with\u00a0{{cssxref(\"shape-box\")}} following, if supplied), the\u00a0{{cssxref(\"image\")}} with its URI made absolute, otherwise as specified.", - "de": "wie definiert für {{cssxref(\"basic-shape\")}} (gefolgt von\u00a0{{cssxref(\"shape-box\")}}, falls angegeben), dem\u00a0{{cssxref(\"image\")}}, dessen URI absolut gemacht wurde, ansonsten wie angegeben.", + "en-US": "as defined for {{cssxref(\"basic-shape\")}} (with {{cssxref(\"shape-box\")}} following, if supplied), the {{cssxref(\"image\")}} with its URI made absolute, otherwise as specified.", + "de": "wie definiert für {{cssxref(\"basic-shape\")}} (gefolgt von {{cssxref(\"shape-box\")}}, falls angegeben), dem {{cssxref(\"image\")}}, dessen URI absolut gemacht wurde, ansonsten wie angegeben.", "fr": "comme défini pour {{cssxref(\"basic-shape\")}} (avec {{cssxref(\"shape-box\")}} qui suit s'il est utilisé), l'{{cssxref(\"image\")}} avec son URI rendue absolue, sinon, comme spécifié.", - "ru": "как определено для {{cssxref(\"basic-shape\")}} (c\u00a0{{cssxref(\"shape-box\")}} последующим, если передается), \u00a0{{cssxref(\"image\")}} с его абсолютным URI, если другое не указано" + "ru": "как определено для {{cssxref(\"basic-shape\")}} (c {{cssxref(\"shape-box\")}} последующим, если передается),  {{cssxref(\"image\")}} с его абсолютным URI, если другое не указано" }, "perGrammar": { "en-US": "per grammar", @@ -1363,10 +1363,10 @@ "ru": "нормализованный угол" }, "absoluteURIOrNone": { - "en-US": "absolute URI or none<\/code>", - "de": "absolute URI oder none<\/code>", - "fr": "une URI absolue ou none<\/code>", - "ru": "абсолютный URI или none<\/code>" + "en-US": "absolute URI or none", + "de": "absolute URI oder none", + "fr": "une URI absolue ou none", + "ru": "абсолютный URI или none" }, "absoluteLengthOrPercentage": { "en-US": "for {{cssxref(\"length\")}} the absolute value, otherwise a percentage", @@ -1401,10 +1401,10 @@ "ru": "длина или проценты перед ключевым словом, если присутствуют оба" }, "percentagesOrLengthsFollowedByFill": { - "en-US": "the percentages or lengths, eventually followed by the keyword fill<\/code>", - "de": "die Prozentwerte oder Längen gefolgt vom Schlüsselwort fill<\/code>", - "fr": "les pourcentages ou les longueurs, éventuellement suivis par le mot-clé fill<\/code>", - "ru": "проценты или длины, в конечном счете, следует ключевое слово fill<\/code>" + "en-US": "the percentages or lengths, eventually followed by the keyword fill", + "de": "die Prozentwerte oder Längen gefolgt vom Schlüsselwort fill", + "fr": "les pourcentages ou les longueurs, éventuellement suivis par le mot-clé fill", + "ru": "проценты или длины, в конечном счете, следует ключевое слово fill" }, "createsStackingContext": { "en-US": "Creates stacking context", diff --git a/package.json b/package.json index 141bdb18..0f85c62d 100644 --- a/package.json +++ b/package.json @@ -20,13 +20,11 @@ }, "homepage": "https://developer.mozilla.org", "devDependencies": { - "ajv": "^5.0.1", - "jsonlint": "~1.6.2" + "ajv": "^5.0.1" }, "scripts": { - "validate-schema": "node test/validate-schema", - "lint-json": "find css l10n -name \\*.json | xargs -I {} jsonlint -q {}", + "lint": "node test/lint", "travis": "npm test", - "test": "npm run lint-json && npm run validate-schema" + "test": "npm run lint" } } diff --git a/test/lint.js b/test/lint.js new file mode 100644 index 00000000..98da1b1f --- /dev/null +++ b/test/lint.js @@ -0,0 +1,90 @@ +var fs = require('fs'); +var path = require('path'); +var Ajv = require('ajv'); +var ajv = new Ajv({ $data: true, allErrors: true }); +var dictPaths = ['css', 'l10n']; +var hasErrors = false; + +ajv.addKeyword('property-reference', { + $data: true, + metaSchema: { type: 'object' }, + validate: function(schema, data, parentSchema) { + var valid = schema.hasOwnProperty(data); + if (!valid) { + // TODO: make a verbose message when invalid + // throw new Error('wrong reference') + } + return valid; + } +}); + +function jsonDiff(actual, expected) { + var actualLines = actual.split(/\n/); + var expectedLines = expected.split(/\n/); + + for (var i = 0; i < actualLines.length; i++) { + if (actualLines[i] !== expectedLines[i]) { + return [ + '#' + i, + ' Actual: ' + actualLines[i], + ' Expected: ' + expectedLines[i] + ].join('\n'); + } + } +} + +function checkStyle(filename) { + var actual = fs.readFileSync(filename, 'utf-8').trim(); + var expected = JSON.stringify(JSON.parse(actual), null, 2); + + if (actual === expected) { + console.log(' Style – OK'); + } else { + hasErrors = true; + console.log(' Style – Error on line ' + jsonDiff(actual, expected)); + } +} + +function checkSchema(dataFilename) { + var schemaFilename = dataFilename.replace(/\.json/i, '.schema.json'); + + if (fs.existsSync(schemaFilename)) { + var valid = ajv.validate( + require(schemaFilename), + require(dataFilename) + ); + + if (valid) { + console.log(' JSON Schema – OK'); + } else { + hasErrors = true; + console.log(' JSON Schema – ' + ajv.errors.length + ' error(s)\n ' + + ajv.errorsText(ajv.errors, { + separator: '\n ', + dataVar: 'item' + }) + ); + } + } +} + +dictPaths.forEach(function(dir) { + var absDir = path.resolve(path.join(__dirname, '..', dir)); + + fs.readdirSync(absDir).forEach(function(filename) { + if (path.extname(filename) === '.json') { + var absFilename = path.join(absDir, filename); + + console.log(dir + '/' + filename); + + checkStyle(absFilename) + checkSchema(absFilename); + + console.log(); + } + }); +}); + +if (hasErrors) { + process.exit(1); +} diff --git a/test/validate-schema.js b/test/validate-schema.js deleted file mode 100644 index 67a32f08..00000000 --- a/test/validate-schema.js +++ /dev/null @@ -1,56 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var Ajv = require('ajv'); -var ajv = new Ajv({ $data: true, allErrors: true }); -var dictPaths = ['css']; -var hasErrors = false; - -ajv.addKeyword('property-reference', { - $data: true, - metaSchema: { type: 'object' }, - validate: function(schema, data, parentSchema) { - var valid = schema.hasOwnProperty(data); - if (!valid) { - // TODO: make a verbose message when invalid - // throw new Error('wrong reference') - } - return valid; - } -}); - -dictPaths.forEach(function(dir) { - var absDir = path.resolve(path.join(__dirname, '..', dir)); - - fs.readdirSync(absDir).forEach(function(filename) { - if (/\.schema\.json$/.test(filename)) { - var dataFilename = filename.replace(/\.schema\.json$/, '.json'); - var absSchemaFilename = path.join(absDir, filename); - var absDataFilename = path.join(absDir, dataFilename); - var header = dir + '/' + dataFilename; - - var valid = ajv.validate( - require(absSchemaFilename), - require(absDataFilename) - ); - - if (valid) { - console.log(header + ' - OK'); - } else { - hasErrors = true; - console.log( - header + ' errors:\n ' + - ajv.errorsText(ajv.errors, { - separator: '\n ', - dataVar: 'item' - }) - ); - } - - console.log(); - } - }); -}); - -if (hasErrors) { - process.exit(1); -}