changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "empty": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "description": "Dot-path keys of that layer.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "propertyNames": {
+ "description": "Layer name.",
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "description": "Locale → layer → the keys behind summary.emptyKeys. Present only when the caller asked for them.",
+ "propertyNames": {
+ "description": "Locale code.",
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "emptyInReference": {
+ "additionalProperties": {
+ "description": "Dot-path keys of that layer.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": "Layer → keys whose value is empty in the reference locale itself, so there is nothing to translate from. Present only alongside empty, and only when there are any.",
+ "propertyNames": {
+ "description": "Layer name.",
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "layers": {
+ "description": "Coverage per layer, summed over the locales checked.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "completion": {
+ "description": "translated ÷ total as a percentage, 0–100.",
+ "type": "number"
+ },
+ "consumedBy": {
+ "description": "Apps whose declared layers include this one. Empty means either no app information exists or nothing consumes the layer.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "empty": {
+ "description": "Of those, the ones present with an empty-string value.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "layer": {
+ "description": "Layer name.",
+ "type": "string"
+ },
+ "missing": {
+ "description": "Of those, the ones absent from the locale file.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "stale": {
+ "description": "Keys of this layer, over the locales checked, whose value was written from source text that has changed since. Present only when a translation memory lockfile exists.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Keys the reference locale defines in this layer, times the locales checked.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "translated": {
+ "description": "Of those, the ones holding a non-empty value.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "layer",
+ "total",
+ "translated",
+ "missing",
+ "empty",
+ "completion",
+ "consumedBy"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "locales": {
+ "description": "Coverage per locale, protected locales included and marked.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "code": {
+ "description": "Canonical locale code, e.g. \"en-US\". This is the spelling to pass back to another call.",
+ "type": "string"
+ },
+ "completion": {
+ "description": "translated ÷ total as a percentage, 0–100.",
+ "type": "number"
+ },
+ "empty": {
+ "description": "Keys present with an empty-string value — scaffolded and never filled. They render as nothing, and are never reported as missing.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "excludedFromOverall": {
+ "const": true,
+ "description": "Present when the locale is kept out of summary.completionPercent, which is what protection means for the overall figure.",
+ "type": "boolean"
+ },
+ "file": {
+ "description": "Locale file name, e.g. \"en-US.json\". Absent for directory-per-locale layouts such as Laravel.",
+ "type": "string"
+ },
+ "language": {
+ "description": "BCP-47 language tag, e.g. \"en-GB\". Absent when the framework config carries none.",
+ "type": "string"
+ },
+ "missing": {
+ "description": "Keys absent from this locale's files.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "name": {
+ "description": "Human-readable language name, e.g. \"Deutsch\". Absent unless the framework config names one.",
+ "type": "string"
+ },
+ "protected": {
+ "const": true,
+ "description": "Present when the locale is listed in protectedLocales, so translation leaves it alone.",
+ "type": "boolean"
+ },
+ "stale": {
+ "description": "Keys whose value was written from source text that has changed since, per the translation memory. Present only when a lockfile exists; translate with overwriteStale refreshes them.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Keys the reference locale defines in the scanned layers.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "translated": {
+ "description": "Keys this locale holds a non-empty value for.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "code",
+ "total",
+ "translated",
+ "missing",
+ "empty",
+ "completion"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "summary": {
+ "additionalProperties": false,
+ "description": "Project-wide coverage in one object. This is what comes back when the full result is diverted to a file.",
+ "properties": {
+ "completionPercent": {
+ "description": "Overall completion, 0–100, protected locales excluded. The counter the completion gate reads.",
+ "type": "number"
+ },
+ "emptyKeys": {
+ "description": "Of those, the ones present with an empty-string value.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "layersScanned": {
+ "description": "Layer names the scan covered.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "localesChecked": {
+ "description": "Number of locales measured, protected ones included.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "missingKeys": {
+ "description": "Of those, the ones absent from their locale file.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "protectedLocales": {
+ "description": "Canonical codes kept out of the overall figure because they are maintained by hand.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "referenceLocale": {
+ "additionalProperties": false,
+ "description": "The locale coverage was measured against.",
+ "properties": {
+ "code": {
+ "description": "Canonical locale code, e.g. \"en-US\". This is the spelling to pass back to another call.",
+ "type": "string"
+ },
+ "file": {
+ "description": "Locale file name, e.g. \"en-US.json\". Absent for directory-per-locale layouts such as Laravel.",
+ "type": "string"
+ },
+ "language": {
+ "description": "BCP-47 language tag, e.g. \"en-GB\". Absent when the framework config carries none.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Human-readable language name, e.g. \"Deutsch\". Absent unless the framework config names one.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code"
+ ],
+ "type": "object"
+ },
+ "staleCount": {
+ "description": "Of those, the ones written from source text that has changed since, per the translation memory. Present only when a lockfile exists.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "totalKeys": {
+ "description": "Keys expected across every checked locale and layer.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "translatedKeys": {
+ "description": "Of those, the ones holding a non-empty value.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "unconsumedLayers": {
+ "description": "Scanned layers no app consumes — keys nothing can render. Empty unless the project declares more than one app.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "referenceLocale",
+ "layersScanned",
+ "unconsumedLayers",
+ "localesChecked",
+ "protectedLocales",
+ "totalKeys",
+ "translatedKeys",
+ "missingKeys",
+ "emptyKeys",
+ "completionPercent"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "locales",
+ "layers",
+ "summary"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "reportFile": {
+ "description": "Absolute path the full JSON result was written to. Read the file for the findings; the summary below is all that came back.",
+ "type": "string"
+ },
+ "summary": {
+ "additionalProperties": false,
+ "description": "The counts from the full result, so a caller can act on them without reading the file.",
+ "properties": {
+ "completionPercent": {
+ "description": "Overall completion, 0–100, protected locales excluded. The counter the completion gate reads.",
+ "type": "number"
+ },
+ "emptyKeys": {
+ "description": "Of those, the ones present with an empty-string value.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "layersScanned": {
+ "description": "Layer names the scan covered.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "localesChecked": {
+ "description": "Number of locales measured, protected ones included.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "missingKeys": {
+ "description": "Of those, the ones absent from their locale file.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "protectedLocales": {
+ "description": "Canonical codes kept out of the overall figure because they are maintained by hand.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "referenceLocale": {
+ "additionalProperties": false,
+ "description": "The locale coverage was measured against.",
+ "properties": {
+ "code": {
+ "description": "Canonical locale code, e.g. \"en-US\". This is the spelling to pass back to another call.",
+ "type": "string"
+ },
+ "file": {
+ "description": "Locale file name, e.g. \"en-US.json\". Absent for directory-per-locale layouts such as Laravel.",
+ "type": "string"
+ },
+ "language": {
+ "description": "BCP-47 language tag, e.g. \"en-GB\". Absent when the framework config carries none.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Human-readable language name, e.g. \"Deutsch\". Absent unless the framework config names one.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code"
+ ],
+ "type": "object"
+ },
+ "staleCount": {
+ "description": "Of those, the ones written from source text that has changed since, per the translation memory. Present only when a lockfile exists.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "totalKeys": {
+ "description": "Keys expected across every checked locale and layer.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "translatedKeys": {
+ "description": "Of those, the ones holding a non-empty value.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "unconsumedLayers": {
+ "description": "Scanned layers no app consumes — keys nothing can render. Empty unless the project declares more than one app.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "referenceLocale",
+ "layersScanned",
+ "unconsumedLayers",
+ "localesChecked",
+ "protectedLocales",
+ "totalKeys",
+ "translatedKeys",
+ "missingKeys",
+ "emptyKeys",
+ "completionPercent"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "reportFile",
+ "summary"
+ ],
+ "type": "object"
+ }
+ ],
+ "type": "object"
+}