From 9240c2d47f52f321ed5ff7638643096e4e0c937d Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Thu, 28 Nov 2024 15:11:59 +1300 Subject: [PATCH 01/13] schema: Reference meta-schema in $schema keyword --- schema/dereferenced-release-schema.json | 2 +- schema/record-package-schema.json | 2 +- schema/record-schema.json | 2 +- schema/release-package-schema.json | 2 +- schema/release-schema.json | 2 +- schema/versioned-release-validation-schema.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/schema/dereferenced-release-schema.json b/schema/dereferenced-release-schema.json index f71c5592f..645f36439 100644 --- a/schema/dereferenced-release-schema.json +++ b/schema/dereferenced-release-schema.json @@ -1,6 +1,6 @@ { "id": "https://standard.open-contracting.org/schema/1__1__5/release-schema.json", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "title": "Schema for an Open Contracting Release", "description": "OCDS is used for contracts in public procurement (including design contests), concessions, public-private partnerships, government asset sales and other contexts. A \"release\" describes a single contracting or planning process at a particular point in time. One process may be described by many releases. A release may repeat or update the information provided in previous releases about the process.\\n\\nA \"compiled release\" follows the same structure as a release, but combines information about a contracting or planning process from multiple points in time into a single summary.\\n\\nOCDS defines a \"contracting process\" as: \"All the actions aimed at implementing one or more contracts. This covers tendering, awarding, contracting and implementation. It does not include actions linked to planning, as these are often less structured and may be linked to multiple contracting processes. In multi-stage procedures (e.g. framework agreements with reopening of competition), each round of competition is treated as a separate contracting process.\\n\\nProcedures that failed and were restarted are considered new processes.\\n\\nBoundaries between processes (e.g. whether two contracts result from a single process or from two processes) are set by buyers depending on their needs (e.g. efficient division of labor, clear communication with the market) and legislation (e.g. rules on using procedures and lots).\"\\n\\nOCDS defines a \"planning process\" as: \"All the actions aimed at planning one or more contracting processes. This covers, for example, need identification, budget planning, and market research.\\n\\nPlanning processes are often less structured than contracting processes, so one or more planning processes may lead to one or more contracting processes.\"", "type": "object", diff --git a/schema/record-package-schema.json b/schema/record-package-schema.json index a674737b0..fc2b023c9 100644 --- a/schema/record-package-schema.json +++ b/schema/record-package-schema.json @@ -1,6 +1,6 @@ { "id": "https://standard.open-contracting.org/schema/1__1__5/record-package-schema.json", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "title": "Schema for an Open Contracting Record package", "description": "The record package contains a list of records along with some publishing metadata.", "type": "object", diff --git a/schema/record-schema.json b/schema/record-schema.json index 7ab011891..c324c1743 100644 --- a/schema/record-schema.json +++ b/schema/record-schema.json @@ -1,6 +1,6 @@ { "id": "https://standard.open-contracting.org/schema/1__2__0/record-schema.json", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "title": "Record", "description": "A record aggregates releases with the same open contracting process identifier (ocid). There should be a single record per ocid per [distribution](https://www.w3.org/TR/vocab-dcat-2/#Class:Distribution), where a distribution might be a specific API endpoint or a specific bulk download file.", "type": "object", diff --git a/schema/release-package-schema.json b/schema/release-package-schema.json index 9700ebb37..d5ac36367 100644 --- a/schema/release-package-schema.json +++ b/schema/release-package-schema.json @@ -1,6 +1,6 @@ { "id": "https://standard.open-contracting.org/schema/1__1__5/release-package-schema.json", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "title": "Schema for an Open Contracting Release Package", "description": "The release package contains a list of releases along with some publishing metadata.", "type": "object", diff --git a/schema/release-schema.json b/schema/release-schema.json index 46f3ea6d8..4880cbc81 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -1,6 +1,6 @@ { "id": "https://standard.open-contracting.org/schema/1__1__5/release-schema.json", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "title": "Schema for an Open Contracting Release", "description": "OCDS is used for contracts in public procurement (including design contests), concessions, public-private partnerships, government asset sales and other contexts. A \"release\" describes a single contracting or planning process at a particular point in time. One process may be described by many releases. A release may repeat or update the information provided in previous releases about the process.\\n\\nA \"compiled release\" follows the same structure as a release, but combines information about a contracting or planning process from multiple points in time into a single summary.\\n\\nOCDS defines a \"contracting process\" as: \"All the actions aimed at implementing one or more contracts. This covers tendering, awarding, contracting and implementation. It does not include actions linked to planning, as these are often less structured and may be linked to multiple contracting processes. In multi-stage procedures (e.g. framework agreements with reopening of competition), each round of competition is treated as a separate contracting process.\\n\\nProcedures that failed and were restarted are considered new processes.\\n\\nBoundaries between processes (e.g. whether two contracts result from a single process or from two processes) are set by buyers depending on their needs (e.g. efficient division of labor, clear communication with the market) and legislation (e.g. rules on using procedures and lots).\"\\n\\nOCDS defines a \"planning process\" as: \"All the actions aimed at planning one or more contracting processes. This covers, for example, need identification, budget planning, and market research.\\n\\nPlanning processes are often less structured than contracting processes, so one or more planning processes may lead to one or more contracting processes.\"", "type": "object", diff --git a/schema/versioned-release-validation-schema.json b/schema/versioned-release-validation-schema.json index 55b8de369..fcc994bb7 100644 --- a/schema/versioned-release-validation-schema.json +++ b/schema/versioned-release-validation-schema.json @@ -1,6 +1,6 @@ { "id": "https://standard.open-contracting.org/schema/1__1__5/versioned-release-validation-schema.json", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "title": "Schema for a compiled, versioned Open Contracting Release.", "description": "OCDS is used for contracts in public procurement (including design contests), concessions, public-private partnerships, government asset sales and other contexts. A \"release\" describes a single contracting or planning process at a particular point in time. One process may be described by many releases. A release may repeat or update the information provided in previous releases about the process.\\n\\nA \"compiled release\" follows the same structure as a release, but combines information about a contracting or planning process from multiple points in time into a single summary.\\n\\nOCDS defines a \"contracting process\" as: \"All the actions aimed at implementing one or more contracts. This covers tendering, awarding, contracting and implementation. It does not include actions linked to planning, as these are often less structured and may be linked to multiple contracting processes. In multi-stage procedures (e.g. framework agreements with reopening of competition), each round of competition is treated as a separate contracting process.\\n\\nProcedures that failed and were restarted are considered new processes.\\n\\nBoundaries between processes (e.g. whether two contracts result from a single process or from two processes) are set by buyers depending on their needs (e.g. efficient division of labor, clear communication with the market) and legislation (e.g. rules on using procedures and lots).\"\\n\\nOCDS defines a \"planning process\" as: \"All the actions aimed at planning one or more contracting processes. This covers, for example, need identification, budget planning, and market research.\\n\\nPlanning processes are often less structured than contracting processes, so one or more planning processes may lead to one or more contracting processes.\"", "type": "object", From a563017c216f804f9906c63917796fdbc7e655d1 Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Thu, 28 Nov 2024 16:04:41 +1300 Subject: [PATCH 02/13] docs/schema/index.md: Describe metaschema --- docs/schema/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/schema/index.md b/docs/schema/index.md index bee616bb8..7548d0a7e 100644 --- a/docs/schema/index.md +++ b/docs/schema/index.md @@ -8,6 +8,10 @@ The [release schema reference](reference) provides guidance on using each of the OCDS data must follow the I-JSON (Internet JSON) specification in [RFC7493](https://tools.ietf.org/html/rfc7493), according to which JSON text must be encoded using [UTF-8](https://en.wikipedia.org/wiki/UTF-8), and which introduces a number of requirements for numbers, objects and dates. +## Metaschema + +The schemas are described by the metaschema, which is an extended version of [JSON Schema Draft 4](https://json-schema.org/specification-links#draft-4). The metaschema adds keywords related to [codelists](codelists), [deprecation](../governance/deprecation) and [merging](merging). You can [download the metaschema in JSON format](../../build/current_lang/meta-schema.json). + ```{toctree} :hidden: From 43df7841a779b9cd5c7a86be3918b9f7721f07ba Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Thu, 28 Nov 2024 16:05:02 +1300 Subject: [PATCH 03/13] schema/metaschema/meta-schema-patch.json: Add titles and descriptions --- schema/metaschema/meta-schema-patch.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/schema/metaschema/meta-schema-patch.json b/schema/metaschema/meta-schema-patch.json index 8f6a8d70f..866daecb2 100644 --- a/schema/metaschema/meta-schema-patch.json +++ b/schema/metaschema/meta-schema-patch.json @@ -1,13 +1,19 @@ { "properties": { "$ref": { + "title": "URI Reference", + "description": "A reference to a statically identified schema. This keyword must be set to an absolute URI or a relative reference as defined by [RFC 3986](https://www.rfc-editor.org/info/rfc3986), where its fragment (if any) can consist of a JSON Pointer as defined by [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901).", "type": "string" }, "omitWhenMerged": { + "title": "Omit when merged", + "description": "Whether the field must be discarded during merging.", "type": "boolean", "default": false }, "deprecated": { + "title": "Deprecated", + "description": "Information about the deprecation of this field.", "type": "object", "additionalProperties": false, "required": [ @@ -16,21 +22,30 @@ ], "properties": { "deprecatedVersion": { + "title": "Deprecated version", + "description": "The OCDS version in which this field was first deprecated.", "type": "string" }, "description": { + "title": "Description", + "description": "A description of the reason for this field's deprecation.", "type": "string" } } }, "codelist": { + "title": "Codelist", + "description": "The CSV file that defines the codes in the codelist that this field refers to.", "type": "string" }, "openCodelist": { + "title": "Whether the codelist that this field refers to is an open codelist.", "type": "boolean", "default": false }, "wholeListMerge": { + "title": "Whole list merge", + "description": "Whether the field's value must be treated as a literal when merging.", "type": "boolean", "default": false } From 96fc930a7393e71ae06528cdbb4b4bd92823fe1c Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Fri, 29 Nov 2024 14:23:30 +1300 Subject: [PATCH 04/13] schema/meta-schema.json: Add titles and descriptions --- schema/meta-schema.json | 16 ++++++++++++++++ schema/metaschema/meta-schema-patch.json | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/schema/meta-schema.json b/schema/meta-schema.json index 9045cc754..0697b1ec6 100644 --- a/schema/meta-schema.json +++ b/schema/meta-schema.json @@ -210,13 +210,19 @@ "$ref": "#" }, "$ref": { + "title": "URI Reference", + "description": "A reference to a statically identified schema. This keyword must be set to an absolute URI or a relative reference as defined by [RFC 3986](https://www.rfc-editor.org/info/rfc3986), where its fragment (if any) can consist of a JSON Pointer as defined by [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901).", "type": "string" }, "omitWhenMerged": { + "title": "Omit when merged", + "description": "Whether the field must be discarded during merging.", "type": "boolean", "default": false }, "deprecated": { + "title": "Deprecated", + "description": "Information about the deprecation of this field.", "type": "object", "additionalProperties": false, "required": [ @@ -225,21 +231,31 @@ ], "properties": { "deprecatedVersion": { + "title": "Deprecated version", + "description": "The OCDS version in which this field was first deprecated.", "type": "string" }, "description": { + "title": "Description", + "description": "A description of the reason for this field's deprecation.", "type": "string" } } }, "codelist": { + "title": "Codelist", + "description": "The CSV file that defines the codes in the codelist that this field refers to.", "type": "string" }, "openCodelist": { + "title": "Open codelist", + "description": "Whether the codelist that this field refers to is an open codelist.", "type": "boolean", "default": false }, "wholeListMerge": { + "title": "Whole list merge", + "description": "Whether the field's value must be treated as a literal when merging.", "type": "boolean", "default": false } diff --git a/schema/metaschema/meta-schema-patch.json b/schema/metaschema/meta-schema-patch.json index 866daecb2..687860f1e 100644 --- a/schema/metaschema/meta-schema-patch.json +++ b/schema/metaschema/meta-schema-patch.json @@ -39,7 +39,8 @@ "type": "string" }, "openCodelist": { - "title": "Whether the codelist that this field refers to is an open codelist.", + "title": "Open codelist", + "description": "Whether the codelist that this field refers to is an open codelist.", "type": "boolean", "default": false }, From 15d16cdd6019c07230913953f9cd8f5fd6e37cd7 Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Fri, 29 Nov 2024 14:23:45 +1300 Subject: [PATCH 05/13] Translate metaschema --- babel_ocds_metaschema.cfg | 1 + docs/conf.py | 4 ++++ include/common.mk | 4 ++++ include/config.mk | 1 + 4 files changed, 10 insertions(+) create mode 100644 babel_ocds_metaschema.cfg diff --git a/babel_ocds_metaschema.cfg b/babel_ocds_metaschema.cfg new file mode 100644 index 000000000..f3db6964c --- /dev/null +++ b/babel_ocds_metaschema.cfg @@ -0,0 +1 @@ +[ocds_metaschema: schema/metaschema/meta-schema-patch.json] diff --git a/docs/conf.py b/docs/conf.py index c4daa25d7..e8c0748fa 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -146,6 +146,8 @@ def setup(app): headers = ["Title", "Description", "Extension"] # The gettext domain for schema translations. Should match the domain in the `pybabel compile` command. schema_domain = f"{gettext_domain_prefix}schema" + # The gettext domain for metaschema translations. Should match the domain in the `pybabel compile` command. + metaschema_domain = f"{gettext_domain_prefix}metaschema" # The gettext domain for codelist translations. Should match the domain in the `pybabel compile` command. codelists_domain = f"{gettext_domain_prefix}codelists" @@ -158,6 +160,8 @@ def setup(app): [ # The glob patterns in `babel_ocds_schema.cfg` should match these filenames. (glob(str(standard_dir / "*-schema.json")), standard_build_dir, schema_domain), + # The glob patterns in `babel_ocds_metaschema.cfg` should match these filenames. + (glob(str(standard_dir / "metaschema" / "meta-schema-patch.json")), standard_build_dir, metaschema_domain), # The glob patterns in `babel_ocds_codelist.cfg` should match these. (glob(str(standard_dir / "codelists" / "*.csv")), standard_build_dir / "codelists", codelists_domain), ], diff --git a/include/common.mk b/include/common.mk index 424e82269..d57911ac5 100644 --- a/include/common.mk +++ b/include/common.mk @@ -43,6 +43,10 @@ extract_codelists: $(POT_DIR) extract_schema: $(POT_DIR) pybabel extract -F babel_ocds_schema.cfg . -o $(POT_DIR)/$(DOMAIN_PREFIX)schema.pot +.PHONY: extract_metaschema +extract_metaschema: $(POT_DIR) + pybabel extract -F babel_ocds_metaschema.cfg . -o $(POT_DIR)/$(DOMAIN_PREFIX)metaschema.pot + # The codelist CSV files and JSON Schema files must be present for the `csv-table-no-translate` and `jsonschema` # directives to succeed, but the contents of the files have no effect on the generated .pot files. # See https://www.sphinx-doc.org/en/master/usage/builders/index.html#sphinx.builders.gettext.MessageCatalogBuilder diff --git a/include/config.mk b/include/config.mk index 8be5c3709..bbe225a2e 100644 --- a/include/config.mk +++ b/include/config.mk @@ -40,6 +40,7 @@ PDF_DELAY=20000 .PHONY: compile compile: pybabel compile --use-fuzzy -d $(LOCALE_DIR) -D $(DOMAIN_PREFIX)schema + pybabel compile --use-fuzzy -d $(LOCALE_DIR) -D $(DOMAIN_PREFIX)metaschema pybabel compile --use-fuzzy -d $(LOCALE_DIR) -D $(DOMAIN_PREFIX)codelists # Put local targets below. From 82d58315bbd6ea89f6cdc2b9127333eb2e87ef49 Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Fri, 29 Nov 2024 14:23:58 +1300 Subject: [PATCH 06/13] docs/schema/index.md: Add metaschema table --- docs/schema/index.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/schema/index.md b/docs/schema/index.md index 7548d0a7e..5b8b81a74 100644 --- a/docs/schema/index.md +++ b/docs/schema/index.md @@ -8,10 +8,6 @@ The [release schema reference](reference) provides guidance on using each of the OCDS data must follow the I-JSON (Internet JSON) specification in [RFC7493](https://tools.ietf.org/html/rfc7493), according to which JSON text must be encoded using [UTF-8](https://en.wikipedia.org/wiki/UTF-8), and which introduces a number of requirements for numbers, objects and dates. -## Metaschema - -The schemas are described by the metaschema, which is an extended version of [JSON Schema Draft 4](https://json-schema.org/specification-links#draft-4). The metaschema adds keywords related to [codelists](codelists), [deprecation](../governance/deprecation) and [merging](merging). You can [download the metaschema in JSON format](../../build/current_lang/meta-schema.json). - ```{toctree} :hidden: @@ -25,3 +21,14 @@ identifiers codelists conformance_and_extensions ``` + +## Metaschema + +The schemas are described by the metaschema, which is an extended version of [JSON Schema Draft 4](https://json-schema.org/specification-links#draft-4). The metaschema adds keywords related to [codelists](codelists), [deprecation](../governance/deprecation) and [merging](merging). You can [download the metaschema in JSON format](../../build/current_lang/meta-schema.json). + +````{dropdown} View the metaschema + +```{jsonschema} ../../build/current_lang/meta-schema-patch.json +``` + +```` From 0b95afc96471729adcbd81b26244166cb3678a9a Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Fri, 29 Nov 2024 14:45:56 +1300 Subject: [PATCH 07/13] Translate metaschema --- babel_ocds_metaschema.cfg | 2 +- include/common.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/babel_ocds_metaschema.cfg b/babel_ocds_metaschema.cfg index f3db6964c..eb72ae3cb 100644 --- a/babel_ocds_metaschema.cfg +++ b/babel_ocds_metaschema.cfg @@ -1 +1 @@ -[ocds_metaschema: schema/metaschema/meta-schema-patch.json] +[ocds_schema: schema/metaschema/meta-schema-patch.json] diff --git a/include/common.mk b/include/common.mk index d57911ac5..90b4c4d63 100644 --- a/include/common.mk +++ b/include/common.mk @@ -55,7 +55,7 @@ extract_markdown: current_lang.en sphinx-build -nW --keep-going -q -b gettext $(DOCS_DIR) $(POT_DIR) .PHONY: extract -extract: extract_theme extract_codelists extract_schema $(EXTRACT_TARGETS) extract_markdown clean_current_lang +extract: extract_theme extract_codelists extract_schema extract_metaschema $(EXTRACT_TARGETS) extract_markdown clean_current_lang $(TRANSLATIONS:.%=docs/locale/%): docs/locale/%: FORCE sphinx-intl update -p $(POT_DIR) -d $(LOCALE_DIR) -l "$*" From 8e7fd05e21d397775492edbf77c8207984eb4f6e Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Fri, 29 Nov 2024 14:56:31 +1300 Subject: [PATCH 08/13] .tx/config: Run make update_txconfig --- .tx/config | 718 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 482 insertions(+), 236 deletions(-) diff --git a/.tx/config b/.tx/config index da5197060..c2beb22ba 100644 --- a/.tx/config +++ b/.tx/config @@ -2,350 +2,596 @@ host = https://www.transifex.com [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:404] -file_filter = docs/locale//LC_MESSAGES/404.po -source_file = build/locale/404.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/404.po +source_file = build/locale/404.pot +type = PO +minimum_perc = 0 +resource_name = 404 +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:codelists] -file_filter = docs/locale//LC_MESSAGES/codelists.po -source_file = build/locale/codelists.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/codelists.po +source_file = build/locale/codelists.pot +type = PO +minimum_perc = 0 +resource_name = codelists +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:governance--deprecation] -file_filter = docs/locale//LC_MESSAGES/governance/deprecation.po -source_file = build/locale/governance/deprecation.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/governance/deprecation.po +source_file = build/locale/governance/deprecation.pot +type = PO +minimum_perc = 0 +resource_name = governance--deprecation +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:governance--index] -file_filter = docs/locale//LC_MESSAGES/governance/index.po -source_file = build/locale/governance/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/governance/index.po +source_file = build/locale/governance/index.pot +type = PO +minimum_perc = 0 +resource_name = governance--index +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:governance--normative] +file_filter = docs/locale//LC_MESSAGES/governance/normative.po +source_file = build/locale/governance/normative.pot +type = PO +minimum_perc = 0 +resource_name = governance--normative +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:governance--translation] +file_filter = docs/locale//LC_MESSAGES/governance/translation.po +source_file = build/locale/governance/translation.pot +type = PO +minimum_perc = 0 +resource_name = governance--translation +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build] -file_filter = docs/locale//LC_MESSAGES/guidance/build.po -source_file = build/locale/guidance/build.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build.po +source_file = build/locale/guidance/build.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--change_history] -file_filter = docs/locale//LC_MESSAGES/guidance/build/change_history.po -source_file = build/locale/guidance/build/change_history.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/change_history.po +source_file = build/locale/guidance/build/change_history.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--change_history +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--data_collection_tools] -file_filter = docs/locale//LC_MESSAGES/guidance/build/data_collection_tools.po -source_file = build/locale/guidance/build/data_collection_tools.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/data_collection_tools.po +source_file = build/locale/guidance/build/data_collection_tools.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--data_collection_tools +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--easy_releases] -file_filter = docs/locale//LC_MESSAGES/guidance/build/easy_releases.po -source_file = build/locale/guidance/build/easy_releases.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/easy_releases.po +source_file = build/locale/guidance/build/easy_releases.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--easy_releases +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--hosting] -file_filter = docs/locale//LC_MESSAGES/guidance/build/hosting.po -source_file = build/locale/guidance/build/hosting.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/hosting.po +source_file = build/locale/guidance/build/hosting.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--hosting +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--merging] -file_filter = docs/locale//LC_MESSAGES/guidance/build/merging.po -source_file = build/locale/guidance/build/merging.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/merging.po +source_file = build/locale/guidance/build/merging.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--merging +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--serialization] -file_filter = docs/locale//LC_MESSAGES/guidance/build/serialization.po -source_file = build/locale/guidance/build/serialization.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/serialization.po +source_file = build/locale/guidance/build/serialization.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--serialization +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--build--system_architectures] -file_filter = docs/locale//LC_MESSAGES/guidance/build/system_architectures.po -source_file = build/locale/guidance/build/system_architectures.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/build/system_architectures.po +source_file = build/locale/guidance/build/system_architectures.pot +type = PO +minimum_perc = 0 +resource_name = guidance--build--system_architectures +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--design] -file_filter = docs/locale//LC_MESSAGES/guidance/design.po -source_file = build/locale/guidance/design.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/design.po +source_file = build/locale/guidance/design.pot +type = PO +minimum_perc = 0 +resource_name = guidance--design +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--design--user_needs] -file_filter = docs/locale//LC_MESSAGES/guidance/design/user_needs.po -source_file = build/locale/guidance/design/user_needs.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/design/user_needs.po +source_file = build/locale/guidance/design/user_needs.pot +type = PO +minimum_perc = 0 +resource_name = guidance--design--user_needs +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--index] -file_filter = docs/locale//LC_MESSAGES/guidance/index.po -source_file = build/locale/guidance/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/index.po +source_file = build/locale/guidance/index.pot +type = PO +minimum_perc = 0 +resource_name = guidance--index +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map] -file_filter = docs/locale//LC_MESSAGES/guidance/map.po -source_file = build/locale/guidance/map.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map.po +source_file = build/locale/guidance/map.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--amendments] -file_filter = docs/locale//LC_MESSAGES/guidance/map/amendments.po -source_file = build/locale/guidance/map/amendments.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/amendments.po +source_file = build/locale/guidance/map/amendments.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--amendments +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--awards_contracts] -file_filter = docs/locale//LC_MESSAGES/guidance/map/awards_contracts.po -source_file = build/locale/guidance/map/awards_contracts.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/awards_contracts.po +source_file = build/locale/guidance/map/awards_contracts.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--awards_contracts +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--beneficial_ownership] -file_filter = docs/locale//LC_MESSAGES/guidance/map/beneficial_ownership.po -source_file = build/locale/guidance/map/beneficial_ownership.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/beneficial_ownership.po +source_file = build/locale/guidance/map/beneficial_ownership.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--beneficial_ownership +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--buyers_suppliers] -file_filter = docs/locale//LC_MESSAGES/guidance/map/buyers_suppliers.po -source_file = build/locale/guidance/map/buyers_suppliers.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/buyers_suppliers.po +source_file = build/locale/guidance/map/buyers_suppliers.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--buyers_suppliers +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--connecting_publications] +file_filter = docs/locale//LC_MESSAGES/guidance/map/connecting_publications.po +source_file = build/locale/guidance/map/connecting_publications.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--connecting_publications +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--contracting_planning_processes] +file_filter = docs/locale//LC_MESSAGES/guidance/map/contracting_planning_processes.po +source_file = build/locale/guidance/map/contracting_planning_processes.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--contracting_planning_processes +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--electronic_catalogues] -file_filter = docs/locale//LC_MESSAGES/guidance/map/electronic_catalogues.po -source_file = build/locale/guidance/map/electronic_catalogues.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/electronic_catalogues.po +source_file = build/locale/guidance/map/electronic_catalogues.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--electronic_catalogues +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--extensions] -file_filter = docs/locale//LC_MESSAGES/guidance/map/extensions.po -source_file = build/locale/guidance/map/extensions.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/extensions.po +source_file = build/locale/guidance/map/extensions.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--extensions +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--framework_agreements] -file_filter = docs/locale//LC_MESSAGES/guidance/map/framework_agreements.po -source_file = build/locale/guidance/map/framework_agreements.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/framework_agreements.po +source_file = build/locale/guidance/map/framework_agreements.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--framework_agreements +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--linked_standards] -file_filter = docs/locale//LC_MESSAGES/guidance/map/linked_standards.po -source_file = build/locale/guidance/map/linked_standards.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/linked_standards.po +source_file = build/locale/guidance/map/linked_standards.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--linked_standards +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--localization] -file_filter = docs/locale//LC_MESSAGES/guidance/map/localization.po -source_file = build/locale/guidance/map/localization.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/localization.po +source_file = build/locale/guidance/map/localization.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--localization +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--milestones] -file_filter = docs/locale//LC_MESSAGES/guidance/map/milestones.po -source_file = build/locale/guidance/map/milestones.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/milestones.po +source_file = build/locale/guidance/map/milestones.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--milestones +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--organization_classifications] -file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_classifications.po -source_file = build/locale/guidance/map/organization_classifications.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_classifications.po +source_file = build/locale/guidance/map/organization_classifications.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--organization_classifications +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--organization_identifiers] -file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_identifiers.po -source_file = build/locale/guidance/map/organization_identifiers.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_identifiers.po +source_file = build/locale/guidance/map/organization_identifiers.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--organization_identifiers +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--organization_personal_identifiers] -file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_personal_identifiers.po -source_file = build/locale/guidance/map/organization_personal_identifiers.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_personal_identifiers.po +source_file = build/locale/guidance/map/organization_personal_identifiers.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--organization_personal_identifiers +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--organization_reference] -file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_reference.po -source_file = build/locale/guidance/map/organization_reference.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/organization_reference.po +source_file = build/locale/guidance/map/organization_reference.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--organization_reference +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--organizational_units] -file_filter = docs/locale//LC_MESSAGES/guidance/map/organizational_units.po -source_file = build/locale/guidance/map/organizational_units.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/organizational_units.po +source_file = build/locale/guidance/map/organizational_units.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--organizational_units +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--pre-qualification] -file_filter = docs/locale//LC_MESSAGES/guidance/map/pre-qualification.po -source_file = build/locale/guidance/map/pre-qualification.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/pre-qualification.po +source_file = build/locale/guidance/map/pre-qualification.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--pre-qualification +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--translations] +file_filter = docs/locale//LC_MESSAGES/guidance/map/translations.po +source_file = build/locale/guidance/map/translations.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--translations +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--map--unsuccessful_processes] -file_filter = docs/locale//LC_MESSAGES/guidance/map/unsuccessful_processes.po -source_file = build/locale/guidance/map/unsuccessful_processes.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/map/unsuccessful_processes.po +source_file = build/locale/guidance/map/unsuccessful_processes.pot +type = PO +minimum_perc = 0 +resource_name = guidance--map--unsuccessful_processes +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--publish] -file_filter = docs/locale//LC_MESSAGES/guidance/publish.po -source_file = build/locale/guidance/publish.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/publish.po +source_file = build/locale/guidance/publish.pot +type = PO +minimum_perc = 0 +resource_name = guidance--publish +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:guidance--publish--quality] -file_filter = docs/locale//LC_MESSAGES/guidance/publish/quality.po -source_file = build/locale/guidance/publish/quality.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/guidance/publish/quality.po +source_file = build/locale/guidance/publish/quality.pot +type = PO +minimum_perc = 0 +resource_name = guidance--publish--quality +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:history--changelog] -file_filter = docs/locale//LC_MESSAGES/history/changelog.po -source_file = build/locale/history/changelog.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/history/changelog.po +source_file = build/locale/history/changelog.pot +type = PO +minimum_perc = 0 +resource_name = history--changelog +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:history--history_and_development] -file_filter = docs/locale//LC_MESSAGES/history/history_and_development.po -source_file = build/locale/history/history_and_development.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/history/history_and_development.po +source_file = build/locale/history/history_and_development.pot +type = PO +minimum_perc = 0 +resource_name = history--history_and_development +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:history--index] -file_filter = docs/locale//LC_MESSAGES/history/index.po -source_file = build/locale/history/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/history/index.po +source_file = build/locale/history/index.pot +type = PO +minimum_perc = 0 +resource_name = history--index +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:index] -file_filter = docs/locale//LC_MESSAGES/index.po -source_file = build/locale/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/index.po +source_file = build/locale/index.pot +type = PO +minimum_perc = 0 +resource_name = index +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:metaschema] +file_filter = docs/locale//LC_MESSAGES/metaschema.po +source_file = build/locale/metaschema.pot +type = PO +minimum_perc = 0 +resource_name = metaschema +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:primer--how] -file_filter = docs/locale//LC_MESSAGES/primer/how.po -source_file = build/locale/primer/how.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/primer/how.po +source_file = build/locale/primer/how.pot +type = PO +minimum_perc = 0 +resource_name = primer--how +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:primer--index] -file_filter = docs/locale//LC_MESSAGES/primer/index.po -source_file = build/locale/primer/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/primer/index.po +source_file = build/locale/primer/index.pot +type = PO +minimum_perc = 0 +resource_name = primer--index +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:primer--next] -file_filter = docs/locale//LC_MESSAGES/primer/next.po -source_file = build/locale/primer/next.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/primer/next.po +source_file = build/locale/primer/next.pot +type = PO +minimum_perc = 0 +resource_name = primer--next +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:primer--releases_and_records] -file_filter = docs/locale//LC_MESSAGES/primer/releases_and_records.po -source_file = build/locale/primer/releases_and_records.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/primer/releases_and_records.po +source_file = build/locale/primer/releases_and_records.pot +type = PO +minimum_perc = 0 +resource_name = primer--releases_and_records +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:primer--what] -file_filter = docs/locale//LC_MESSAGES/primer/what.po -source_file = build/locale/primer/what.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/primer/what.po +source_file = build/locale/primer/what.pot +type = PO +minimum_perc = 0 +resource_name = primer--what +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema] -file_filter = docs/locale//LC_MESSAGES/schema.po -source_file = build/locale/schema.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema.po +source_file = build/locale/schema.pot +type = PO +minimum_perc = 0 +resource_name = schema +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--codelists] -file_filter = docs/locale//LC_MESSAGES/schema/codelists.po -source_file = build/locale/schema/codelists.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/codelists.po +source_file = build/locale/schema/codelists.pot +type = PO +minimum_perc = 0 +resource_name = schema--codelists +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--conformance_and_extensions] -file_filter = docs/locale//LC_MESSAGES/schema/conformance_and_extensions.po -source_file = build/locale/schema/conformance_and_extensions.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/conformance_and_extensions.po +source_file = build/locale/schema/conformance_and_extensions.pot +type = PO +minimum_perc = 0 +resource_name = schema--conformance_and_extensions +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--identifiers] -file_filter = docs/locale//LC_MESSAGES/schema/identifiers.po -source_file = build/locale/schema/identifiers.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/identifiers.po +source_file = build/locale/schema/identifiers.pot +type = PO +minimum_perc = 0 +resource_name = schema--identifiers +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--index] -file_filter = docs/locale//LC_MESSAGES/schema/index.po -source_file = build/locale/schema/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/index.po +source_file = build/locale/schema/index.pot +type = PO +minimum_perc = 0 +resource_name = schema--index +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--merging] -file_filter = docs/locale//LC_MESSAGES/schema/merging.po -source_file = build/locale/schema/merging.pot -source_lang = en -type = PO - -[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--record_package] -file_filter = docs/locale//LC_MESSAGES/schema/record_package.po -source_file = build/locale/schema/record_package.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/merging.po +source_file = build/locale/schema/merging.pot +type = PO +minimum_perc = 0 +resource_name = schema--merging +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--packaging--index] +file_filter = docs/locale//LC_MESSAGES/schema/packaging/index.po +source_file = build/locale/schema/packaging/index.pot +type = PO +minimum_perc = 0 +resource_name = schema--packaging--index +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--packaging--record_package] +file_filter = docs/locale//LC_MESSAGES/schema/packaging/record_package.po +source_file = build/locale/schema/packaging/record_package.pot +type = PO +minimum_perc = 0 +resource_name = schema--packaging--record_package +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--packaging--release_package] +file_filter = docs/locale//LC_MESSAGES/schema/packaging/release_package.po +source_file = build/locale/schema/packaging/release_package.pot +type = PO +minimum_perc = 0 +resource_name = schema--packaging--release_package +replace_edited_strings = false +keep_translations = false + +[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--record] +file_filter = docs/locale//LC_MESSAGES/schema/record.po +source_file = build/locale/schema/record.pot +type = PO +minimum_perc = 0 +resource_name = schema--record +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--records_reference] -file_filter = docs/locale//LC_MESSAGES/schema/records_reference.po -source_file = build/locale/schema/records_reference.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/records_reference.po +source_file = build/locale/schema/records_reference.pot +type = PO +minimum_perc = 0 +resource_name = schema--records_reference +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--reference] -file_filter = docs/locale//LC_MESSAGES/schema/reference.po -source_file = build/locale/schema/reference.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/reference.po +source_file = build/locale/schema/reference.pot +type = PO +minimum_perc = 0 +resource_name = schema--reference +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--release] -file_filter = docs/locale//LC_MESSAGES/schema/release.po -source_file = build/locale/schema/release.pot -source_lang = en -type = PO - -[o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:schema--release_package] -file_filter = docs/locale//LC_MESSAGES/schema/release_package.po -source_file = build/locale/schema/release_package.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/schema/release.po +source_file = build/locale/schema/release.pot +type = PO +minimum_perc = 0 +resource_name = schema--release +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:sphinx] -file_filter = docs/locale//LC_MESSAGES/sphinx.po -source_file = build/locale/sphinx.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/sphinx.po +source_file = build/locale/sphinx.pot +type = PO +minimum_perc = 0 +resource_name = sphinx +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:support--index] -file_filter = docs/locale//LC_MESSAGES/support/index.po -source_file = build/locale/support/index.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/support/index.po +source_file = build/locale/support/index.pot +type = PO +minimum_perc = 0 +resource_name = support--index +replace_edited_strings = false +keep_translations = false [o:open-contracting-partnership-1:p:open-contracting-standard-1-1:r:theme] -file_filter = docs/locale//LC_MESSAGES/theme.po -source_file = build/locale/theme.pot -source_lang = en -type = PO +file_filter = docs/locale//LC_MESSAGES/theme.po +source_file = build/locale/theme.pot +type = PO +minimum_perc = 0 +resource_name = theme +replace_edited_strings = false +keep_translations = false From 3c77dcf9bf1fc264f416cde970f88e398db09054 Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Fri, 29 Nov 2024 14:58:53 +1300 Subject: [PATCH 09/13] docs/schema/index.md: Clarify that the table shows only new keywords --- docs/schema/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/schema/index.md b/docs/schema/index.md index 5b8b81a74..41e93d5cf 100644 --- a/docs/schema/index.md +++ b/docs/schema/index.md @@ -28,6 +28,8 @@ The schemas are described by the metaschema, which is an extended version of [JS ````{dropdown} View the metaschema +The metaschema adds the following keywords: + ```{jsonschema} ../../build/current_lang/meta-schema-patch.json ``` From 017232eeb3365c8a3f2dc7049497e6d82abfeedc Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Thu, 5 Dec 2024 13:59:26 +1300 Subject: [PATCH 10/13] schema/meta-schema.json: Update id --- schema/meta-schema.json | 2 +- schema/metaschema/meta-schema-patch.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/schema/meta-schema.json b/schema/meta-schema.json index 0697b1ec6..6dcb8962e 100644 --- a/schema/meta-schema.json +++ b/schema/meta-schema.json @@ -1,5 +1,5 @@ { - "id": "http://json-schema.org/draft-04/schema#", + "id": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "$schema": "http://json-schema.org/draft-04/schema#", "description": "Core schema meta-schema", "definitions": { diff --git a/schema/metaschema/meta-schema-patch.json b/schema/metaschema/meta-schema-patch.json index 687860f1e..db87f040b 100644 --- a/schema/metaschema/meta-schema-patch.json +++ b/schema/metaschema/meta-schema-patch.json @@ -1,4 +1,5 @@ { + "id": "https://standard.open-contracting.org/schema/1__2__0/meta-schema.json", "properties": { "$ref": { "title": "URI Reference", From 750629121b3a5d3d921291533c3f55400415254d Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Thu, 5 Dec 2024 14:00:11 +1300 Subject: [PATCH 11/13] tests/test_schema_integrity.py: Add test_meta_schema_references --- tests/test_schema_integrity.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/test_schema_integrity.py b/tests/test_schema_integrity.py index c6fdb0f86..6a1356352 100644 --- a/tests/test_schema_integrity.py +++ b/tests/test_schema_integrity.py @@ -3,7 +3,7 @@ """ import json -import os.path +import os import sys import jsonref @@ -38,3 +38,16 @@ def test_meta_schema_is_in_sync(): actual = json.load(f) assert actual == get_metaschema(), "Run: python manage.py pre-commit" + + +def test_meta_schema_references(): + with open("schema/meta-schema.json") as f: + metaschema = json.load(f) + + for file_name in os.listdir("schema"): + if file_name.endswith("-schema.json") and "meta-schema" not in file_name: + file_path = os.path.join("schema", file_name) + with open(file_path) as f: + schema = json.load(f) + + assert schema["$schema"] == metaschema["id"], f"Incorrect $schema in {file_name}: {schema['$schema']}" From e6154fc535bd588188eeec7e0b36ab08aba3389e Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 5 Dec 2024 17:43:26 -0500 Subject: [PATCH 12/13] i18n: Add metaschema.po files --- docs/locale/es/LC_MESSAGES/metaschema.po | 107 +++++++++++++++++++++++ docs/locale/fr/LC_MESSAGES/metaschema.po | 107 +++++++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 docs/locale/es/LC_MESSAGES/metaschema.po create mode 100644 docs/locale/fr/LC_MESSAGES/metaschema.po diff --git a/docs/locale/es/LC_MESSAGES/metaschema.po b/docs/locale/es/LC_MESSAGES/metaschema.po new file mode 100644 index 000000000..76ab7dd49 --- /dev/null +++ b/docs/locale/es/LC_MESSAGES/metaschema.po @@ -0,0 +1,107 @@ +# Spanish translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-12-05 17:36-0500\n" +"PO-Revision-Date: 2024-12-05 17:42-0500\n" +"Last-Translator: FULL NAME \n" +"Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.1\n" + +#. /properties/$ref/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "URI Reference" +msgstr "" + +#. /properties/$ref/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "" +"A reference to a statically identified schema. This keyword must be set " +"to an absolute URI or a relative reference as defined by [RFC " +"3986](https://www.rfc-editor.org/info/rfc3986), where its fragment (if " +"any) can consist of a JSON Pointer as defined by [RFC " +"6901](https://datatracker.ietf.org/doc/html/rfc6901)." +msgstr "" + +#. /properties/omitWhenMerged/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Omit when merged" +msgstr "" + +#. /properties/omitWhenMerged/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whether the field must be discarded during merging." +msgstr "" + +#. /properties/deprecated/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Deprecated" +msgstr "" + +#. /properties/deprecated/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Information about the deprecation of this field." +msgstr "" + +#. /properties/deprecated/properties/deprecatedVersion/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Deprecated version" +msgstr "" + +#. /properties/deprecated/properties/deprecatedVersion/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "The OCDS version in which this field was first deprecated." +msgstr "" + +#. /properties/deprecated/properties/description/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Description" +msgstr "" + +#. /properties/deprecated/properties/description/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "A description of the reason for this field's deprecation." +msgstr "" + +#. /properties/codelist/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Codelist" +msgstr "" + +#. /properties/codelist/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "" +"The CSV file that defines the codes in the codelist that this field " +"refers to." +msgstr "" + +#. /properties/openCodelist/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Open codelist" +msgstr "" + +#. /properties/openCodelist/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whether the codelist that this field refers to is an open codelist." +msgstr "" + +#. /properties/wholeListMerge/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whole list merge" +msgstr "" + +#. /properties/wholeListMerge/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whether the field's value must be treated as a literal when merging." +msgstr "" + diff --git a/docs/locale/fr/LC_MESSAGES/metaschema.po b/docs/locale/fr/LC_MESSAGES/metaschema.po new file mode 100644 index 000000000..9827ec415 --- /dev/null +++ b/docs/locale/fr/LC_MESSAGES/metaschema.po @@ -0,0 +1,107 @@ +# French translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-12-05 17:36-0500\n" +"PO-Revision-Date: 2024-12-05 17:43-0500\n" +"Last-Translator: FULL NAME \n" +"Language: fr\n" +"Language-Team: fr \n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.1\n" + +#. /properties/$ref/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "URI Reference" +msgstr "" + +#. /properties/$ref/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "" +"A reference to a statically identified schema. This keyword must be set " +"to an absolute URI or a relative reference as defined by [RFC " +"3986](https://www.rfc-editor.org/info/rfc3986), where its fragment (if " +"any) can consist of a JSON Pointer as defined by [RFC " +"6901](https://datatracker.ietf.org/doc/html/rfc6901)." +msgstr "" + +#. /properties/omitWhenMerged/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Omit when merged" +msgstr "" + +#. /properties/omitWhenMerged/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whether the field must be discarded during merging." +msgstr "" + +#. /properties/deprecated/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Deprecated" +msgstr "" + +#. /properties/deprecated/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Information about the deprecation of this field." +msgstr "" + +#. /properties/deprecated/properties/deprecatedVersion/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Deprecated version" +msgstr "" + +#. /properties/deprecated/properties/deprecatedVersion/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "The OCDS version in which this field was first deprecated." +msgstr "" + +#. /properties/deprecated/properties/description/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Description" +msgstr "" + +#. /properties/deprecated/properties/description/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "A description of the reason for this field's deprecation." +msgstr "" + +#. /properties/codelist/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Codelist" +msgstr "" + +#. /properties/codelist/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "" +"The CSV file that defines the codes in the codelist that this field " +"refers to." +msgstr "" + +#. /properties/openCodelist/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Open codelist" +msgstr "" + +#. /properties/openCodelist/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whether the codelist that this field refers to is an open codelist." +msgstr "" + +#. /properties/wholeListMerge/title +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whole list merge" +msgstr "" + +#. /properties/wholeListMerge/description +#: schema/metaschema/meta-schema-patch.json:1 +msgid "Whether the field's value must be treated as a literal when merging." +msgstr "" + From 83c5e0cd4ad9261c18256943819397b75b979959 Mon Sep 17 00:00:00 2001 From: Duncan Dewhurst Date: Tue, 10 Dec 2024 12:32:21 +1300 Subject: [PATCH 13/13] Apply suggestions from code review Co-authored-by: Jen Harris <95221058+odscjen@users.noreply.github.com> --- schema/meta-schema.json | 10 +++++----- schema/metaschema/meta-schema-patch.json | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/schema/meta-schema.json b/schema/meta-schema.json index 6dcb8962e..40b3754dd 100644 --- a/schema/meta-schema.json +++ b/schema/meta-schema.json @@ -222,7 +222,7 @@ }, "deprecated": { "title": "Deprecated", - "description": "Information about the deprecation of this field.", + "description": "Information about the deprecation of the field.", "type": "object", "additionalProperties": false, "required": [ @@ -232,24 +232,24 @@ "properties": { "deprecatedVersion": { "title": "Deprecated version", - "description": "The OCDS version in which this field was first deprecated.", + "description": "The OCDS version in which the field was first deprecated.", "type": "string" }, "description": { "title": "Description", - "description": "A description of the reason for this field's deprecation.", + "description": "A description of the reason for the field's deprecation.", "type": "string" } } }, "codelist": { "title": "Codelist", - "description": "The CSV file that defines the codes in the codelist that this field refers to.", + "description": "The CSV file that defines the codes in the codelist that the field refers to.", "type": "string" }, "openCodelist": { "title": "Open codelist", - "description": "Whether the codelist that this field refers to is an open codelist.", + "description": "Whether the codelist that the field refers to is an open codelist.", "type": "boolean", "default": false }, diff --git a/schema/metaschema/meta-schema-patch.json b/schema/metaschema/meta-schema-patch.json index db87f040b..e642345e0 100644 --- a/schema/metaschema/meta-schema-patch.json +++ b/schema/metaschema/meta-schema-patch.json @@ -14,7 +14,7 @@ }, "deprecated": { "title": "Deprecated", - "description": "Information about the deprecation of this field.", + "description": "Information about the deprecation of the field.", "type": "object", "additionalProperties": false, "required": [ @@ -24,24 +24,24 @@ "properties": { "deprecatedVersion": { "title": "Deprecated version", - "description": "The OCDS version in which this field was first deprecated.", + "description": "The OCDS version in which the field was first deprecated.", "type": "string" }, "description": { "title": "Description", - "description": "A description of the reason for this field's deprecation.", + "description": "A description of the reason for the field's deprecation.", "type": "string" } } }, "codelist": { "title": "Codelist", - "description": "The CSV file that defines the codes in the codelist that this field refers to.", + "description": "The CSV file that defines the codes in the codelist that the field refers to.", "type": "string" }, "openCodelist": { "title": "Open codelist", - "description": "Whether the codelist that this field refers to is an open codelist.", + "description": "Whether the codelist that the field refers to is an open codelist.", "type": "boolean", "default": false },