diff --git a/1edtech-examples/model/model_with_localizations.lines b/1edtech-examples/model/model_with_localizations.lines new file mode 100644 index 0000000000..a8920c0700 --- /dev/null +++ b/1edtech-examples/model/model_with_localizations.lines @@ -0,0 +1,67 @@ +Model test01 2022-03-24 v0p1 "s:Draft" "t:Test Model 01" "Test model 01" "l:en-US" + +Package DataClasses DataModel + + Class Thing Unordered false [] + Property id UUID 1 + Property startDate DateZ 1 + Property endDate DateZ 0..1 + + Class Thang Unordered false [] + Property id UUID 1 + Property thingRef UUIDRef 1 + Property size Integer 0..1 + +Package PrimitiveTypes DataModel + //some includes from the common data model + Includes [String, Date, NormalizedString, Integer] + +Package DerivedTypes DataModel + //some includes from the common data model + Includes [DateZ, UUID, UUIDRef, Identifier, Reference] + + +Package BaseService ServiceModel REST /ims/test/v0p1 + + Interface Things "t:The Thing Endpoints" "n:note1" "n:note2" + + Operation getThingById GET /thing/{id} "Get a Thing by ID" + Param id in Path NormalizedString 1 "The sourced ID of the thing" + Response 200 Thing + Responses errors + + Operation getAllThings GET /things "Get all the Things" + Params commonQueryParams in + Response 200 Thing 0..* paging + Response Default String + + Interface Thangs "t:The Thang Endpoints" + + Operation addThang POST /thang Thang "Add a single Thang" + Response 202 + Params commonResponseHeaders out + Response Default String + + Operation addThangs POST /thangs Thang 1..* "Add multiple Thangs" + Response 202 + Params commonResponseHeaders out + Param X-Header-Baz out Header String 0..1 + Responses errors + + //a reusable group of query parameters + ParamList commonQueryParams + Param query1 in Query String 1 + Param query2 in Query Integer 0..1 + + //a reusable group of response parameters + ParamList commonResponseHeaders + Param X-Header-Foo out Header String 0..1 + Param X-Header-Bar out Header Integer 0..1 + + //a reusable group of responses + ResponseList errors + Response 404 + Response 402 + Response Default String 0..1 + +Localizations ca-ES http://localhost:8000/1edtech-examples/model/model_with_localizations_ca_ES.lines diff --git a/1edtech-examples/model/model_with_localizations_ca_ES.lines b/1edtech-examples/model/model_with_localizations_ca_ES.lines new file mode 100644 index 0000000000..f76b3f8fa5 --- /dev/null +++ b/1edtech-examples/model/model_with_localizations_ca_ES.lines @@ -0,0 +1,29 @@ +Model test01 "t:Model de prova 01" "Model de prova 01" + +Package DataClasses "Classes de dades" + + Class Thing "Cosa" + Property id "identificador" + Property startDate "Data d'inici" + Property endDate "Data de finalització" + + Class Thang "Thang" + Property id "identificador" + Property thingRef "referència a Cosa" + Property size "mida" + + +Package BaseService "Servei Base" + + Interface Things "t:Operacions sobre Cosa" "n:primera nota" "n:segona nota" + + Operation getThingById "Obtenir una Cosa per ID" + Param id "ID de la cosa" + + Operation getAllThings "Obtenir totes les coses" + + Interface Thangs "t:Operacions sobre Thang" + + Operation addThang "Afegir un Thang" + + Operation addThangs "Afegir múltiples Thangs" diff --git a/1edtech-examples/mps_ca.html b/1edtech-examples/mps_ca.html new file mode 100644 index 0000000000..0c872cccfe --- /dev/null +++ b/1edtech-examples/mps_ca.html @@ -0,0 +1,123 @@ + + + + + + + Exemple d'especificació 1EdTech + + + + + + + + + + + + + + +
+

Resum

+

Resum molt simple.

+
+ Per que aquest exemple funcioni correctament s'ha de carregar al MPS el model definit a + model/model_with_localizations.lines. Aquest model pressuposa que el servidor + respec està arrencat en el port 8000. +
+
+ In order to work properly, the model defined at model/model_with_localizations.lines + must be sideloaded into MPS. This model assumes respec server is running on port 8000. +
+
+
+

Conformitat

+
+
+

Terminologia

+
+
Authorization Server
+
Un servidor d'autorització.
+
Resource Server
+
Un servidor de recursos.
+
credential equality and comparison
+
Un algoritme.
+
+
+
+

Integritat

+

Aquesta especificació empra els termes definits a l'especificació [[DATA-INTEGRITY]].

+
+
+

Sigantures

+
+ + +
+
+ +
+
+

Tipus derivats del Common Data Model.

+
+
+ + + + + diff --git a/src/1edtech/abstract.js b/src/1edtech/abstract.js index 740eed169a..fc9fbff651 100644 --- a/src/1edtech/abstract.js +++ b/src/1edtech/abstract.js @@ -2,9 +2,12 @@ // Module 1edtech/abstract // Handle the abstract section properly. import { html } from "../core/import-maps.js"; -import { showWarning } from "../core/utils.js"; +import { getIntlData, showWarning } from "../core/utils.js"; export const name = "1edtech/abstract"; +import localizationStrings from "./translations/abstract.js"; +const l10n = getIntlData(localizationStrings); + /** * Handles checking for the abstract, and inserts a temp one if not present. */ @@ -14,7 +17,7 @@ export async function run() { showWarning("Document should have one element with 'abstract'", name); // insert a temp abstract abstract = html`
-

To be removed

+

${l10n.to_be_removed}

`; document.body.prepend(abstract); } @@ -35,6 +38,6 @@ export async function run() { return; } abstractHeading = document.createElement("h2"); - abstractHeading.textContent = "Abstract"; + abstractHeading.textContent = l10n.abstract; abstract.prepend(abstractHeading); } diff --git a/src/1edtech/conformance.js b/src/1edtech/conformance.js index cad0f5e93e..91dd423478 100644 --- a/src/1edtech/conformance.js +++ b/src/1edtech/conformance.js @@ -8,10 +8,12 @@ // - Use slightly modified conformance text. // // Note: Run after inlines so the conformance section has an id and NormativeReferences is available. -import { htmlJoinAnd, showError, showWarning } from "../core/utils.js"; +import { getIntlData, htmlJoinAnd, showError, showWarning } from "../core/utils.js"; import { html } from "../core/import-maps.js"; import { renderInlineCitation } from "../core/render-biblio.js"; import { rfc2119Usage } from "../core/inlines.js"; +import localizationStrings from "./translations/conformance.js"; +const l10n = getIntlData(localizationStrings); export const name = "1edtech/conformance"; @@ -53,28 +55,20 @@ function getNormativeText(conf) { const plural = terms.length > 1; const content = html`

- As well as sections marked as non-normative, all authoring guidelines, - diagrams, examples, and notes in this specification are non-normative. - Everything else in this specification is normative. + ${l10n.normative_text_paragraph_1}

${terms.length ? html`

- The key word${plural ? "s" : ""} ${[keywords]} in this document - ${plural ? "are" : "is"} to be interpreted as described in - ${renderInlineCitation("RFC2119")}. + ${plural ? `${l10n.the_plural} ${l10n.key_words}` : `${l10n.the} ${l10n.key_word}`} + ${[keywords]} + ${l10n.keywords_paragraph + .replace("{0}", plural ? l10n.are : l10n.is) + .replace("{1}", renderInlineCitation("RFC2119"))}

` : null} -

- An implementation of this specification that fails to implement a - MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT - prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED - statements constitute a best practice. Ignoring a best practice does not - violate conformance but a decision to disregard such guidance should be - carefully considered. MAY/OPTIONAL statements indicate that implementers - are entirely free to choose whether or not to implement the option. -

`; +

${l10n.normative_text_implementation}

`; if (conf.skipCertGuideConformanceRef || conf.specType == "cert") { return content; @@ -82,9 +76,7 @@ function getNormativeText(conf) { return html`${content}

- The Conformance and Certification Guide - for this specification may introduce greater normative constraints than - those defined here for specific service or implementation categories. + ${l10n.normative_text_certification_constraints}

`; } @@ -101,14 +93,8 @@ function getInformativeText(conf) { } return html`

- This document is an informative resource in the Document Set of the - ${conf.mainSpecTitle ? conf.mainSpecTitle : ""} specification - ${conf.mainSpecBiblioKey - ? renderInlineCitation(conf.mainSpecBiblioKey) - : ""}. - As such, it does not include any normative requirements. Occurrences in this - document of terms such as MAY, MUST, MUST NOT, SHOULD or RECOMMENDED have no - impact on the conformance criteria for implementors of this specification. + ${l10n.informative_text_paragraph_1.replace("{0}", conf.mainSpecTitle ? conf.mainSpecTitle : "").replace("{1}", conf.mainSpecBiblioKey ? renderInlineCitation(conf.mainSpecBiblioKey) : "")}. + ${l10n.informative_text_paragraph_2}

`; } diff --git a/src/1edtech/contrib.js b/src/1edtech/contrib.js index f213620322..0b2cd91b4d 100644 --- a/src/1edtech/contrib.js +++ b/src/1edtech/contrib.js @@ -1,6 +1,10 @@ // @ts-check import { toHTMLNode } from "./utils.js"; +import { getIntlData } from "../core/utils.js"; + +import localizationStrings from "./translations/contrib.js"; +const l10n = getIntlData(localizationStrings); export const name = "1edtech/contrib"; @@ -10,14 +14,14 @@ export async function run(conf) { if (conf.specType !== "errata") { const useRoles = hasRoles(conf.contributors); const contrib = toHTMLNode(`
-

List of Contributors

-

The following individuals contributed to the development of this document:

- +

${l10n.title}

+

${l10n.intro}

+
- - - ${useRoles ? `` : ``} + + + ${useRoles ? `` : ``} ${personsToTableRows(conf.contributors, useRoles)} diff --git a/src/1edtech/mps.js b/src/1edtech/mps.js index c7f703b3fe..ec403fc1fd 100644 --- a/src/1edtech/mps.js +++ b/src/1edtech/mps.js @@ -16,13 +16,16 @@ import jsonSchemasTemplate from "./templates/jsonSchemasTemplate.js"; import openApiSchemaTemplate from "./templates/openApiSchemaTemplate.js"; import operationTemplate from "./templates/operationTemplate.js"; import serviceModelTemplate from "./templates/serviceModelTemplate.js"; -import { showError } from "../core/utils.js"; +import { getIntlData, showError } from "../core/utils.js"; import stereoTypeTemplate from "./templates/stereoTypeTemplate.js"; import { sub } from "../core/pubsubhub.js"; import embeddedSelectionTemplate from "./templates/embeddedSelectionTemplate.js"; +import localizationStrings from "./translations/mps.js"; export const name = "1edtech/mps"; +const l10n = getIntlData(localizationStrings); +const locale = document.documentElement.lang; /** * Get the MPS API KEY from the configuration. * @@ -175,7 +178,7 @@ async function getModel(config, source, id) { const query = JSON.stringify({ query: ` { - modelByID(id: "${id}", source: ${source ?? "CORE"}) { + modelByID(id: "${id}", source: ${source ?? "CORE"}, locale: "${locale}") { id id name @@ -848,7 +851,7 @@ ${JSON.stringify(sampleData, null, 2)} parentElem.append(sample); } else { parentElem.append( - html`

Could not get sample data. See developer console for details.

` + html`

${l10n.error_sample_data}

` ); } } @@ -1028,14 +1031,14 @@ async function validateExample(config, ajv, pre) { pre.insertAdjacentElement( "beforebegin", html`
-

NOTE: This example contains invalid JSON for ${schemaId}.

+

${l10n.error_invalid_json.replace("{0}", schemaId)}.

NameOrganizationRole${l10n.name}${l10n.organization}${l10n.role}
- - - - - ${config.showPrivacyAnnotations ? html`` : null} + + + + + ${config.showPrivacyAnnotations ? html`` : null} @@ -49,7 +53,7 @@ function renderExtensibility(config, classData) { if (classData.isExtensible) { return html` `; } else { diff --git a/src/1edtech/templates/dataModelTemplate.js b/src/1edtech/templates/dataModelTemplate.js index 2fa1738c41..c89a6cc2af 100644 --- a/src/1edtech/templates/dataModelTemplate.js +++ b/src/1edtech/templates/dataModelTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/dataModelTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render the header, notes, and issues for a MPS Model. This template @@ -12,7 +16,7 @@ import { html } from "../../core/import-maps.js"; */ export default (dataModel, title, id) => { if (dataModel) { - title = title ?? `${dataModel.name} Data Model`; + title = title ?? `${l10n.data_model_name.replace("{0}", dataModel.name)}`; id = (id ?? dataModel.id).replace(/\./g, "-"); return html`

${title}

${dataModel.documentation.issues.map(renderIssue)} diff --git a/src/1edtech/templates/embeddedSelectionTemplate.js b/src/1edtech/templates/embeddedSelectionTemplate.js index 247b4c3e44..bf1823063e 100644 --- a/src/1edtech/templates/embeddedSelectionTemplate.js +++ b/src/1edtech/templates/embeddedSelectionTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote, renderType } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/embeddedSelectionTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render an EmbeddedSelection class. @@ -15,12 +19,12 @@ export default (classData, title) => {

${classData.documentation.description}

${classData.documentation.issues.map(renderIssue)} ${classData.documentation.notes.map(renderNote)} -

The ultimate representation of this class is a choice of exactly one of the classes in the following set:

+

${l10n.intro}

PropertyTypeDescriptionMultiplicityPrivacy${l10n.Property}${l10n.Type}${l10n.Description}${l10n.Multiplicity}${l10n.Privacy}
- This class can be extended with additional properties. + ${l10n.ClassExtensibility}
- - + + diff --git a/src/1edtech/templates/enumerationTemplate.js b/src/1edtech/templates/enumerationTemplate.js index 5b86b1a121..db6d71b763 100644 --- a/src/1edtech/templates/enumerationTemplate.js +++ b/src/1edtech/templates/enumerationTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote, renderTerm } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/enumerationTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render an Enumeration, ExtEnum, or Vocabulary class. @@ -11,7 +15,7 @@ import { html } from "../../core/import-maps.js"; export default (classData, title) => { if (classData && classData.properties) { const suffix = - classData.stereoType === "Vocabulary" ? "Vocabulary" : "Enumeration"; + classData.stereoType === "Vocabulary" ? l10n.Vocabulary : l10n.Enumeration; title = title ?? `${classData.name} ${suffix}`; return html`

${title}

${classData.documentation.description}

@@ -20,18 +24,15 @@ export default (classData, title) => {
TypeDescription${l10n.Type}${l10n.Description}
- - + + ${classData.properties.map(renderTerm)} ${classData.stereoType === "EnumExt" ? html` - + ` : html``} diff --git a/src/1edtech/templates/footers.js b/src/1edtech/templates/footers.js index 02b8b84652..2acda673b9 100644 --- a/src/1edtech/templates/footers.js +++ b/src/1edtech/templates/footers.js @@ -1,37 +1,27 @@ // @ts-check import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/footers.js"; +const l10n = getIntlData(localizationStrings); export default conf => { return html``; diff --git a/src/1edtech/templates/headers.js b/src/1edtech/templates/headers.js index 4beef46e28..41b3de7fba 100644 --- a/src/1edtech/templates/headers.js +++ b/src/1edtech/templates/headers.js @@ -1,7 +1,10 @@ /* eslint-disable prettier/prettier */ // @ts-check import { html } from "../../core/import-maps.js"; -import { showWarning } from "../../core/utils.js"; +import { getIntlData, showWarning } from "../../core/utils.js"; + +import localizationStrings from "../translations/headers.js"; +const l10n = getIntlData(localizationStrings); const name = "1edtech/templates/headers"; @@ -15,26 +18,26 @@ function getStatusString(conf) { } // for generic docs, have a generic desc if (conf.specType === "doc") { - return "This is an informative 1EdTech document that may be revised at any time."; + return l10n.generic; } if (conf.specType === "proposal") { - return "This is a proposal that may be revised at any time."; + return l10n.proposal; } // specStatus: See 1edtech/config.js for known values switch (conf.specStatus) { case "Proposal": - return "This document is for review and comment by 1EdTech Contributing Members."; + return l10n.proposal_status; case "Base Document": - return "This document is for review and comment by 1EdTech Contributing Members."; + return l10n.base_doc_status; case "Candidate Final": - return "This document is for review and adoption by the 1EdTech membership."; + return l10n.candidate_final_status; case "Candidate Final Public": - return "This document is for review and adoption by the 1EdTech membership."; + return l10n.candidate_final_status; case "Final Release": - return "This document is made available for adoption by the public community at large."; + return l10n.final_status; default: // 1edtech/config.js will issue error for unknown values - return `Unknown specStatus: "${conf.specStatus}"`; + return l10n.unknown_status.replace("{0}", conf.specStatus); } } @@ -70,7 +73,7 @@ function showLinkData(data) { function renderSpecVersion(conf) { if (conf.specType !== "doc" && conf.specType !== "proposal") { return html`
- ${conf.specStatus}
Spec Version ${conf.specVersion} + ${conf.specStatus}
${l10n.spec_version.replace("{0}", conf.specVersion)}
`; } } @@ -78,7 +81,7 @@ function renderSpecVersion(conf) { function renderSpecStatus(conf) { if (conf.specType !== "doc" && conf.specType !== "proposal") { return html`${conf.specStatus}`; @@ -89,31 +92,31 @@ function renderVersionTable(conf) { if (conf.specType !== "doc" && conf.specType !== "proposal") { return html`
TermDescription${l10n.Term}${l10n.Description}
- This enumeration can be extended with new, proprietary terms. - The new terms must start with the substring 'ext:'. - ${l10n.EnumerationExtensibility}
+ title="${l10n.version_table_title}"> - + - + - + - + ${conf.specNature === "normative" ? html` - + - + ` : null @@ -124,14 +127,14 @@ function renderVersionTable(conf) { } else { return html`
Document Version:${l10n.document_version}: ${conf.docVersion}
Date Issued:${l10n.date_issued}: ${conf.specDate}
Status:${l10n.status}: ${getStatusString(conf)}
This version:${l10n.this_version}: ${conf.thisURL}
Latest version:${l10n.latest_version}: ${conf.latestURI}
Errata:${l10n.errata}: ${conf.errataURL}
+ title="${l10n.version_table_title}"> - + - + @@ -142,12 +145,12 @@ function renderVersionTable(conf) { function renderCopyright() { return html`

- © ${new Date().getFullYear()} 1EdTech™ Consortium, Inc. All Rights Reserved. + © ${new Date().getFullYear()} 1EdTech™ Consortium, Inc. ${l10n.copyright_tag}

- Trademark information: - http://www.imsglobal.org/copyright.html + ${l10n.trademark_information}: + https://www.1edtech.org/about/legal

`; @@ -156,47 +159,31 @@ function renderCopyright() { function renderDisclosure(conf) { if (conf.specType === "proposal") { return html`
-

Proposals

-

- Proposals are made available for the purposes of Project Group / Task - Force only and should not be distributed outside of the 1EdTech Contributing - Membership without the express written consent of 1EdTech. Provision of - any work documents outside of the project group/ task force will revoke - all privileges as an Invited Guest. Any documents provided - non-participants will be done by 1EdTech only on the 1EdTech public - website when the documents become publicly available. +

${l10n.proposals}

+

${l10n.proposals_disclosure}

`; } else { return html`

- Use of this specification to develop products or services is governed by - the license with 1EdTech found on the 1EdTech website: - - http://www.imsglobal.org/speclicense.html + https://www.1edtech.org/standards/specification-license.

- Permission is granted to all parties to use excerpts from this document - as needed in producing requests for proposals. + ${l10n.disclosure_granted_permissions_text}

- The limited permissions granted above are perpetual and will not be - revoked by 1EdTech or its successors or assigns. + ${l10n.disclosure_granted_permissions_time_text}

- THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND - IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. - ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE - IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS - MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY - IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, - DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION. + ${l10n.disclosure_warranty_text}

- Public contributions, comments and questions can be posted here: - - http://www.imsglobal.org/forums/ims-glc-public-forums-and-resources + ${l10n.disclosure_contributions_text} + + support@1edtech.org .

`; @@ -205,25 +192,14 @@ function renderDisclosure(conf) { function renderIpr(conf) { return html`
-

IPR and Distribution Notice

+

${l10n.ipr_header}

- Recipients of this document are requested to submit, with their - comments, notification of any relevant patent claims or other - intellectual property rights of which they may be aware that might be - infringed by any implementation of the specification set forth in this - document, and to provide supporting documentation. + ${l10n.ipr_intro}

- 1EdTech takes no position regarding the validity or scope of any - intellectual property or other rights that might be claimed to pertain - implementation or use of the technology described in this document or - the extent to which any license under such rights might or might not be - available; neither does it represent that it has made any effort to - identify any such rights. Information on 1EdTech's procedures with respect - to rights in 1EdTech specifications can be found at the 1EdTech Intellectual - Property Rights webpage: - - http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf + https://www.1edtech.org/sites/default/files/media/docs/2023/imsipr_policyFinal.pdf .

@@ -233,16 +209,15 @@ function renderIpr(conf) { function renderIprTable(conf) { if (conf.iprs) { return html`

- The following participating organizations have made explicit license - commitments to this specification: + ${l10n.ipr_table_intro}

Date Issued:${l10n.date_issued}: ${conf.specDate}
Status:${l10n.status}: ${getStatusString(conf)}
- - - - + + + + @@ -269,7 +244,7 @@ export default conf => { 1EdTech logo diff --git a/src/1edtech/templates/jsonSchemasTemplate.js b/src/1edtech/templates/jsonSchemasTemplate.js index 9f27f4e097..e17f68a3b5 100644 --- a/src/1edtech/templates/jsonSchemasTemplate.js +++ b/src/1edtech/templates/jsonSchemasTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/jsonSchemasTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render the header, notes, and issues for a MPS Model. This template @@ -12,7 +16,7 @@ import { html } from "../../core/import-maps.js"; */ export default (dataModel, title, id) => { if (dataModel) { - title = title ?? `${dataModel.name} JSON Schema`; + title = title ?? `${l10n.json_schema_name.replace("{0}", dataModel.name)}`; id = (id ?? dataModel.id).replace(/\./g, "-"); return html`

${title}

${dataModel.documentation.issues.map(renderIssue)} diff --git a/src/1edtech/templates/operationTemplate.js b/src/1edtech/templates/operationTemplate.js index 1c9718512b..93d238057e 100644 --- a/src/1edtech/templates/operationTemplate.js +++ b/src/1edtech/templates/operationTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote as renderNote } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/operationTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render the header, description, notes, and issues for a MPS RestOperation object. @@ -30,7 +34,7 @@ export default (config, rootPath, operation, title) => { * @returns {HTMLElement[]} The rendered request as HTML elements. */ function renderRequest(config, rootPath, operation) { - return html`
Request
+ return html`
${l10n.Request}
${renderUrl(rootPath, operation)} ${renderRequestParameters(config, operation)} ${renderRequestBodies(config, operation)}`; @@ -68,16 +72,16 @@ function renderRequestParameters(config, operation) { return html`
Org nameDate election madeNecessary claimsType${l10n.org_name}${l10n.date_election_made}${l10n.necessary_claims}${l10n.type}
- - - - + + + + ${config.showPrivacyAnnotations - ? html`` + ? html`` : null} @@ -102,16 +106,16 @@ function renderRequestBodies(config, operation) { return html`
- Request header, path, and query parameters + ${l10n.request_parameter_header}
ParameterParameter TypeDescriptionRequired${l10n.Parameter}${l10n.Parameter_Type}${l10n.Description}${l10n.Required}Confidentiality Level${l10n.confidentiality_level}
- - - - + + + + ${config.showPrivacyAnnotations - ? html`` + ? html`` : null} @@ -166,20 +170,20 @@ function renderParameter(config, parameter) { function renderResponses(config, operation) { const responses = operation.responses.flatMap(mergeResponseBodies); - return html`
Responses
+ return html`
${l10n.Responses}
- Allowed request content types + ${l10n.request_body_header}
Content-Type HeaderContent TypeContent DescriptionContent Required${l10n.Content_Type_Header}${l10n.Content_Type}${l10n.Content_Description}${l10n.Content_Required}Confidentiality Level${l10n.confidentiality_level}
- - - - + + + + ${config.showPrivacyAnnotations - ? html`` + ? html`` : null} @@ -226,7 +230,7 @@ function mergeResponseBodies(response) { function renderRequired(value) { if (value?.cardinality) - return value.cardinality.value.includes("ZERO") ? "Optional" : "Required"; + return value.cardinality.value.includes("ZERO") ? l10n.Optional : l10n.Required; } /** @@ -258,7 +262,7 @@ function renderParmeterType(parameter) { parameter.value.stereoType === "Enumeration" || parameter.value.stereoType === "EnumExt" ) { - name += " Enumeration"; + name = l10n.enumeration_name.replace("{0}", name); } name = html`${name}`; return name; @@ -274,7 +278,7 @@ function renderBodyType(body) { body.type.stereoType === "Enumeration" || body.type.stereoType === "EnumExt" ) { - name += " Enumeration"; + name = l10n.enumeration_name.replace("{0}", name); } name = html`${name}`; return name; diff --git a/src/1edtech/templates/serviceModelTemplate.js b/src/1edtech/templates/serviceModelTemplate.js index b1be4ee80b..d27447926c 100644 --- a/src/1edtech/templates/serviceModelTemplate.js +++ b/src/1edtech/templates/serviceModelTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/serviceModelTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render the header, description, notes, and issues for a MPS RestService object. @@ -11,7 +15,7 @@ import { html } from "../../core/import-maps.js"; */ export default (serviceModel, title, headerId) => { if (serviceModel) { - title = title ?? `${serviceModel.name} Service Model`; + title = title ?? `${l10n.service_model_name.replace("{0}", serviceModel.name)}`; headerId = (headerId ?? serviceModel.id).replace(/\./g, "-"); return html`

${title}

${serviceModel.documentation.issues.map(renderIssue)} diff --git a/src/1edtech/templates/stereoTypeTemplate.js b/src/1edtech/templates/stereoTypeTemplate.js index c228a4022f..c4d6a8a38c 100644 --- a/src/1edtech/templates/stereoTypeTemplate.js +++ b/src/1edtech/templates/stereoTypeTemplate.js @@ -1,6 +1,10 @@ // @ts-check import { renderIssue, renderNote } from "./templateUtils.js"; import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/stereoTypeTemplate.js"; +const l10n = getIntlData(localizationStrings); /** * Render a table of types with the same stereotype. @@ -26,8 +30,8 @@ export default (dataModel, stereoType) => { return html`
- Allowed response codes and content types + ${l10n.request_header}
Status CodeContent-Type HeaderContent TypeContent DescriptionContent Required${l10n.Content_Type_Header}${l10n.Content_Type}${l10n.Content_Description}${l10n.Content_Required}Confidentiality Level${l10n.confidentiality_level}
- - + + diff --git a/src/1edtech/templates/templateUtils.js b/src/1edtech/templates/templateUtils.js index 94f405c0c2..9845148cfa 100644 --- a/src/1edtech/templates/templateUtils.js +++ b/src/1edtech/templates/templateUtils.js @@ -1,5 +1,9 @@ // @ts-check import { html } from "../../core/import-maps.js"; +import { getIntlData } from "../../core/utils.js"; + +import localizationStrings from "../translations/templateUtils.js"; +const l10n = getIntlData(localizationStrings); /** * Render a MPS issue as a Respec issue. @@ -27,7 +31,7 @@ export function renderNote(note) { */ export function renderPrivacyImplicationDoc(config, doc) { if (config.showPrivacyAnnotations && doc) { - return html`
Privacy implication: ${doc}
`; + return html`
${l10n.privacy_implication}: ${doc}
`; } } /** @@ -59,7 +63,7 @@ export function renderType(type) { type.stereoType === "Enumeration" || type.stereoType === "EnumExt" ) { - name += " Enumeration"; + name = l10n.enumeration_name.replace("{0}", name); } name = html`${name}`; return name; diff --git a/src/1edtech/translations/1edtech.js b/src/1edtech/translations/1edtech.js deleted file mode 100644 index 1ec85831a3..0000000000 --- a/src/1edtech/translations/1edtech.js +++ /dev/null @@ -1,80 +0,0 @@ -export default { - en: { - privacy_section_header: "Privacy", - privacy_implications: "Privacy Implications", - privacy_implications_paragraph: - "All of the privacy implications contained within this Information Model are described in this Section. All of the corresponding concepts and methods for these privacy annotations are defined in the Privacy Framework.", - confidentiality_level: "Confidentiality Level", - confidentiality_level_paragram: - "All of the privacy classification of the exchanged payloads are described in this Section.", - ACCESSIBILITY_label: "Accessibility", - ACCESSIBILITY_def: - "denotes information about the accessibility personal needs and preferences of the user", - ANALYTICS_label: "Analytics", - ANALYTICS_def: - "denotes information that will be used to support the creation of learning analytics", - CONTAINER_label: "Container", - CONTAINER_def: - "denotes that the child attributes have privacy-sensitive information", - CREDENTIALS_label: "Credentials", - CREDENTIALS_def: - "denotes access control information for the use e.g. password, private key, etc.", - CREDENTIALSIDREF_label: "CredentialsIdRef", - CREDENTIALSIDREF_def: - "denotes reference to/use of an identifier to credentials information for the user", - DEMOGRAPHICS_label: "Demographics", - DEMOGRAPHICS_def: - "denotes information about the demographics of the user e.g. ethnicity, gender, etc.", - EXTENSION_label: "Extension", - EXTENSION_def: - "denotes that proprietary information can be included and so this MAY contain privacy-sensitive information", - FINANCIAL_label: "Financial", - FINANCIAL_def: - "denotes that the information is of a financial nature e.g. bank account, financial aid status, etc.", - IDENTIFIER_label: "Identifier", - IDENTIFIER_def: - "denotes a unique identifier that has been assigned, by some third party, to the user e.g. passport number, social security number, etc.", - IDENTIFIERREF_label: "IdentifierRef", - IDENTIFIERREF_def: - "denotes reference to/use of a unique identifier that has been assigned, by some third party, to the user", - INSURANCE_label: "Insurance/Assurance", - INSURANCE_def: - "denotes that the information is about the insurance life-assurance nature, e.g. type of insurance, etc.", - LEGAL_label: "Legal", - LEGAL_def: - "denotes that the information is of a legal or judicial nature e.g. Will, prison record, etc.", - MEDICAL_label: "Medical/Healthcare", - MEDICAL_def: - "denotes that the information is of a medical, or healthcare-related nature e.g. allergies, blood-type, mobility needs, etc.", - NA_label: "N/A", - NA_def: - "denotes that there are NO PRIVACY IMPLICATIONS for this attribute (this is the default setting)", - OTHER_label: "Other", - OTHER_def: - "denotes privacy sensitive information that is NOT covered by one of the other categories", - QUALIFICATION_label: "Qualification/Certification", - QUALIFICATION_def: - "denotes that the information is about education qualifications, skill-set certifications, microcredentials, etc.", - PERSONAL_label: "Personal", - PERSONAL_def: - "denotes personal information about the user e.g. name, address, etc.", - SOURCEDID_label: "SourcedId", - SOURCEDID_def: - "denotes the interoperability unique identifier that has been assigned and MUST be present for the correct usage of the corresponding 1EdTech specification", - SOURCEDIDREF_label: "SourcedIdRef", - SOURCEDIDREF_def: - "denotes reference to/use of the interoperability unique identifier, sourcedId, to link/point to an associated 1EdTech object", - UNRESTRICTED_label: "unrestricted", - UNRESTRICTED_def: - "there are no privacy concerns (this is the default value).", - NORMAL_label: "normal", - NORMAL_def: - "denotes that privacy sensitive data could be included and so all best practices to secure this data should be used.", - RESTRICTED_label: "restricted", - RESTRICTED_def: - "denotes that some of the data is more sensitive than usual or that many attributes information that when used together create increased vulnerability for identification of the associated individual or group.", - VERYRESTRICTED_label: "veryrestricted", - VERYRESTRICTED_def: - "denotes that the request could contain very sensitive privacy data. Depending on the capabilities of the Provider this very sensitive data may be obfuscated or may not even be present.", - }, -}; diff --git a/src/1edtech/translations/abstract.js b/src/1edtech/translations/abstract.js new file mode 100644 index 0000000000..2c2edc9a70 --- /dev/null +++ b/src/1edtech/translations/abstract.js @@ -0,0 +1,14 @@ +export default { + en: { + abstract: "Abstract", + to_be_removed: "To be removed" + }, + es : { + abstract: "Resumen", + to_be_removed: "Para borrar" + }, + ca : { + abstract: "Resume", + to_be_removed: "Per esborrar" + } +}; diff --git a/src/1edtech/translations/classTemplate.js b/src/1edtech/translations/classTemplate.js new file mode 100644 index 0000000000..d68c842b3f --- /dev/null +++ b/src/1edtech/translations/classTemplate.js @@ -0,0 +1,26 @@ +export default { + en: { + Property: "Property", + Type: "Type", + Description: "Description", + Multiplicity: "Multiplicity", + Privacy: "Privacy", + ClassExtensibility: "This class can be extended with additional properties." + }, + es: { + Property: "Propiedad", + Type: "Tipo", + Description: "Descripción", + Multiplicity: "Cardinalidad", + Privacy: "Privacidad", + ClassExtensibility: "Esta clase se puede extender con propiedades adicionales." + }, + ca: { + Property: "Propietat", + Type: "Tipus", + Description: "Descripció", + Multiplicity: "Cardinalitat", + Privacy: "Privacitat", + ClassExtensibility: "Aquesta classe es pot ampliar amb propietats adicionals." + } +}; diff --git a/src/1edtech/translations/conformance.js b/src/1edtech/translations/conformance.js new file mode 100644 index 0000000000..e737aed5b8 --- /dev/null +++ b/src/1edtech/translations/conformance.js @@ -0,0 +1,44 @@ +export default { + en: { + informative_text_paragraph_1: "This document is an informative resource in the Document Set of the {0} specification {1}", + informative_text_paragraph_2: "As such, it does not include any normative requirements. Occurrences in this document of terms such as MAY, MUST, MUST NOT, SHOULD or RECOMMENDED have no impact on the conformance criteria for implementors of this specification.", + normative_text_paragraph_1: "As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.", + key_word: "key word", + key_words: "key words", + is: "is", + are: "are", + the: "The", + the_plural: "The", + keywords_paragraph: "in this document ${0} to be interpreted as described in ${1}.", + normative_text_implementation: "An implementation of this specification that fails to implement a MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED statements constitute a best practice. Ignoring a best practice does not violate conformance but a decision to disregard such guidance should be carefully considered. MAY/OPTIONAL statements indicate that implementers are entirely free to choose whether or not to implement the option.", + normative_text_certification_constraints: "The Conformance and Certification Guide for this specification may introduce greater normative constraints than those defined here for specific service or implementation categories." + }, + es: { + informative_text_paragraph_1: "Este documento es un recurso informativo dentro del Set de Documentos de la especificación {0} {1}", + informative_text_paragraph_2: "Como tal, no incluye ningún requisito normativo. Las ocurrencias en este documento de términos como PUEDE, DEBE, NO DEBE, DEBERÍA o RECOMENDADO no tienen ningún impacto en los criterios de conformidad para los implementadores de esta especificación.", + normative_text_paragraph_1: "Así como las secciones marcadas como no normativas, todas las directrices de autoría, diagramas, ejemplos y notas en esta especificación no son normativas. Todo lo demás en esta especificación es normativo.", + key_word: "palabra clave", + key_words: "palabras clave", + is: "es", + are: "son", + the: "La", + the_plural: "Las", + keywords_paragraph: "en este documento ${0} interpretadas tal y como se describe en ${1}.", + normative_text_implementation: "Una implementación de esta especificación que no implementa un requisito de DEBE/REQUERIDO/DEBERIA o no cumple con una prohibición de DEBE/NO DEBE se considera no conforme. Las declaraciones DEBERÍA/NO DEBERÍA/RECOMENDADO constituyen una buena práctica. Ignorar una buena práctica no viola la conformidad, pero la decisión de ignorar dicha guía debe considerarse cuidadosamente. Las declaraciones MAY/OPCIONAL indican que los implementadores son completamente libres de elegir si implementar o no la opción.", + normative_text_certification_constraints: "La Guía de Conformidad y Certificación para esta especificación puede introducir restricciones normativas mayores que las definidas aquí para categorías específicas de servicio o implementación." + }, + ca: { + informative_text_paragraph_1: "Aquest document és un recurs informatiu dins del Set de Documents de l'especificació {1}", + informative_text_paragraph_2: "Com a tal, no inclou cap requisit normatiu. Les ocurrències en aquest document de termes com POT, HA DE, NO HA DE, o RECOMENAT no tenen cap impacte en els criteris de conformitat per als implementadors d'aquesta especificació.", + normative_text_paragraph_1: "A més de les seccions marcades com a no normatives, totes les directrius d'autoria, diagrames, exemples i notes en aquesta especificació són no normatives. Tota la resta en aquesta especificació és normativa.", + key_word: "paraula clau", + key_words: "paraules clau", + is: "és", + are: "són", + the: "La", + the_plural: "Les", + keywords_paragraph: "dins aquest document ${0} interpretades tal i com es descriu a ${1}.", + normative_text_implementation: "Una implementació d'aquesta especificació que no implementi un requisit HA DE/REQUERIT/HAURIA DE o que no compleixi amb una prohibició HA DE/NO HA DE es considera inconformant. Les declaracions HAURIA DE/NO HAURIA DE/RECOMENAT constitueixen una bona práctica. Ignorar una bona pràctica no viola la conformitat, però s'ha de tenir en compte amb cura la decisió d'ignorar aquesta orientació. Les declaracions POT/OPCIONAL indiquen que els implementadors són totalment lliures de triar si implementar o no l'opció.", + normative_text_certification_constraints: "La Guia de Conformitat i Certificació per a aquesta especificació pot introduir restriccions normatives més grans que les definides aquí per a categories específiques de serveis o d'implementació." + } +}; diff --git a/src/1edtech/translations/contrib.js b/src/1edtech/translations/contrib.js new file mode 100644 index 0000000000..b1f9b67c8c --- /dev/null +++ b/src/1edtech/translations/contrib.js @@ -0,0 +1,26 @@ +export default { + en: { + title: "List of Contributors", + intro: "The following individuals contributed to the development of this document:", + summary: "The list of contributors to this work.", + name: "Name", + organization: "Organization", + role: "Role" + }, + es : { + title: "Lista de Colaboradores", + intro: "Las siguientes personas contribuyeron al desarrollo de este documento:", + summary: "La lista de colaboradores de este trabajo.", + name: "Nombre", + organization: "Organización", + role: "Rol" + }, + ca : { + title: "Llista de Col·laboradors", + intro: "Les persones següents van contribuir al desenvolupament d'aquest treball:", + summary: "La llista de col·laboradors d'aquest treball.", + name: "Nomb", + organization: "Organització", + role: "Rol" + } +}; diff --git a/src/1edtech/translations/dataModelTemplate.js b/src/1edtech/translations/dataModelTemplate.js new file mode 100644 index 0000000000..a5c69a72c5 --- /dev/null +++ b/src/1edtech/translations/dataModelTemplate.js @@ -0,0 +1,11 @@ +export default { + en: { + data_model_name: "{0} Data Model" + }, + es: { + data_model_name: "Modelo de Datos {0}" + }, + ca: { + data_model_name: "Model de Dades {0}" + } +}; diff --git a/src/1edtech/translations/embeddedSelectionTemplate.js b/src/1edtech/translations/embeddedSelectionTemplate.js new file mode 100644 index 0000000000..73402f2f32 --- /dev/null +++ b/src/1edtech/translations/embeddedSelectionTemplate.js @@ -0,0 +1,17 @@ +export default { + en: { + intro: "The ultimate representation of this class is a choice of exactly one of the classes in the following set:", + Type: "Type", + Description: "Description" + }, + es: { + intro: "La representación definitiva de esta clase es exactamente una de las siguientes clases:", + Type: "Tipo", + Description: "Descripción" + }, + ca: { + intro: "La representació definitiva d'aquesta classe és exactament una de les següents classes:", + Type: "Tipus", + Description: "Descripció" + } +}; diff --git a/src/1edtech/translations/enumerationTemplate.js b/src/1edtech/translations/enumerationTemplate.js new file mode 100644 index 0000000000..fd85e657ee --- /dev/null +++ b/src/1edtech/translations/enumerationTemplate.js @@ -0,0 +1,23 @@ +export default { + en: { + Vocabulary: "Vocabulary", + Enumeration: "Enumeration", + Term: "Term", + Description: "Description", + EnumerationExtensibility: "This enumeration can be extended with new, proprietary terms.\nThe new terms must start with the substring 'ext:'." + }, + es: { + Vocabulary: "Vocabulario", + Enumeration: "Enumeración", + Term: "Término", + Description: "Descripción", + EnumerationExtensibility: "Esta enumeración se puede extender con términos nuevos i/o propietarios.\nLos términos nuevos deben empezar con la subcadena 'ext:'." + }, + ca: { + Vocabulary: "Vocabulari", + Enumeration: "Enumeració", + Term: "Terme", + Description: "Descripció", + EnumerationExtensibility: "Aquesta enumeració es pot ampliar amb termes nous i/o propietari.\nEls nous termes han de començar per la subcadena 'ext:'." + } +}; diff --git a/src/1edtech/translations/footers.js b/src/1edtech/translations/footers.js new file mode 100644 index 0000000000..f65342c695 --- /dev/null +++ b/src/1edtech/translations/footers.js @@ -0,0 +1,35 @@ +export default { + en: { + warranty_1: "is publishing the information contained in this document (\"Specification\") for purposes of scientific, experimental, and scholarly collaboration only.", + warranty_2: "1EdTech makes no warranty or representation regarding the accuracy or completeness of the Specification.", + warranty_3: "This material is provided on an \"As Is\" and \"As Available\" basis.", + warranty_4: "The Specification is at all times subject to change and revision without notice.", + warranty_5: "It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.", + warranty_6: "1EdTech would appreciate receiving your comments and suggestions.", + contact_url: "Please contact 1EdTech through our website at", + contact_document: "Please refer to Document Name", + contact_date: "Date" + }, + es: { + warranty_1: "publica la información contenida en este documento (\"Especificación\") solo con fines de colaboración científica, experimental y académica.", + warranty_2: "1EdTech no ofrece ninguna garantía ni representación con respecto a la exactitud o integridad de la Especificación.", + warranty_3: "Este material se proporciona tal cual.", + warranty_4: "La especificación está sujeta en todo momento a cambios y revisiones sin previo aviso.", + warranty_5: "Es su exclusiva responsabilidad evaluar la utilidad, precisión e integridad de la Especificación en lo que respecta a usted.", + warranty_6: "1EdTech agradecería recibir sus comentarios y sugerencias.", + contact_url: "Póngase en contacto con 1EdTech a través de nuestro sitio web en", + contact_document: "Por favor mencione el Nombre del Documento", + contact_date: "Fecha" + }, + ca: { + warranty_1: "publica la informació continguda en aquest document (\"Especificació\") només amb finalitats de col·laboració científica, experimental i acadèmica.", + warranty_2: "1EdTech no ofereix cap garantia ni representació sobre l'exactitud o integritat de l'especificació.", + warranty_3: "Este material se proporciona tal cual.", + warranty_4: "L'Especificació està en tot moment subjecta a canvis i revisions sense previ avís.", + warranty_5: "És la seva única responsabilitat avaluar la utilitat, exactitud i integritat de l'especificació tal com es relaciona amb vostè.", + warranty_6: "1EdTech agrairia rebre els seus comentaris i suggeriments.", + contact_url: "Contacteu amb 1EdTech a través de la nostra pàgina web", + contact_document: "Si us plau, mencioni el Nom del Document", + contact_date: "Data" + } +}; diff --git a/src/1edtech/translations/headers.js b/src/1edtech/translations/headers.js new file mode 100644 index 0000000000..cb5d951ced --- /dev/null +++ b/src/1edtech/translations/headers.js @@ -0,0 +1,110 @@ +export default { + en: { + generic: "This is an informative 1EdTech document that may be revised at any time.", + proposal: "This is a proposal that may be revised at any time.", + proposal_status: "This document is for review and comment by 1EdTech Contributing Members.", + base_doc_status: "This document is for review and comment by 1EdTech Contributing Members.", + candidate_final_status: "This document is for review and adoption by the 1EdTech membership.", + final_status: "This document is made available for adoption by the public community at large.", + unknown_status: "Unknown specStatus: \"{0}\"", + spec_version: "Spec Version {0}", + final: "final", + version_table_title: "Version/Release Details", + document_version: "Document Version", + date_issued: "Date Issued", + status: "Status", + this_version: "This version", + latest_version: "Latest version", + errata: "Errata", + copyright_tag: "All Rights Reserved.", + trademark_information: "Trademark information", + logo_alt: "1EdTech logo", + ipr_header: "IPR and Distribution Notice", + ipr_intro: "Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.", + ipr_text: "1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on 1EdTech's procedures with respect to rights in 1EdTech specifications can be found at the 1EdTech Intellectual Property Rights webpage", + ipr_table_intro: "The following participating organizations have made explicit license commitments to this specification:", + org_name: "Org name", + date_election_made: "Date election made", + necessary_claims: "Necessary claims", + type: "Type", + proposals: "Proposals", + proposals_disclosure: " Proposals are made available for the purposes of Project Group / Task Force only and should not be distributed outside of the 1EdTech Contributing Membership without the express written consent of 1EdTech. Provision of any work documents outside of the project group/ task force will revoke all privileges as an Invited Guest. Any documents provided non-participants will be done by 1EdTech only on the 1EdTech public website when the documents become publicly available.", + disclosure_license_link_text: "Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website", + disclosure_granted_permissions_text: "Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.", + disclosure_granted_permissions_time_text: "The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.", + disclosure_warranty_text: "THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.", + disclosure_contributions_text: "Public contributions, comments and questions should be directed to" + }, + es: { + generic: "Este es un documento informativo de 1EdTech que puede ser revisado en cualquier momento.", + proposal: "Esta es una propuesta que puede ser revisada en cualquier momento.", + proposal_status: "Este documento es para revisión y comentarios de los Miembros Contribuyentes de 1EdTech.", + base_doc_status: "Este documento es para revisión y comentarios de los Miembros Contribuyentes de 1EdTech.", + candidate_final_status: "Este documento es para revisión y adopción por parte de los miembros de 1EdTech.", + final_status: "Este documento está disponible para adopción por parte de la comunidad pública en general.", + unknown_status: "Estado desconocido specStatus: \"{0}\"", + spec_version: "Versión de la Especificación {0}", + final: "final", + version_table_title: "Detalles de la Versión/Lanzamiento", + document_version: "Versión del Documento", + date_issued: "Fecha de Emisión", + status: "Estado", + this_version: "Esta versión", + latest_version: "Última versión", + errata: "Erratas", + copyright_tag: "Todos los derechos reservados.", + trademark_information: "Información de marca registrada", + logo_alt: "Logo de 1EdTech", + ipr_header: "Aviso de Propiedad Intelectual y Distribución", + ipr_intro: "Se solicita a los destinatarios de este documento que presenten, junto con sus comentarios, notificación de cualquier reclamación de patente relevante u otros derechos de propiedad intelectual de los que puedan tener conocimiento y que puedan ser infringidos por cualquier implementación de la especificación establecida en este documento, y que proporcionen documentación de apoyo.", + ipr_text: "1EdTech no toma posición respecto a la validez o alcance de cualquier propiedad intelectual u otros derechos que puedan ser reclamados en relación con la implementación o uso de la tecnología descrita en este documento o la medida en que cualquier licencia bajo tales derechos pueda o no estar disponible; tampoco representa que haya hecho algún esfuerzo para identificar tales derechos. La información sobre los procedimientos de 1EdTech con respecto a los derechos en las especificaciones de 1EdTech se puede encontrar en la página web de Derechos de Propiedad Intelectual de 1EdTech", + ipr_table_intro: "Las siguientes organizaciones participantes han hecho compromisos de licencia explícitos para esta especificación:", + org_name: "Nombre de la organización", + date_election_made: "Fecha de elección", + necessary_claims: "Reclamaciones necesarias", + type: "Tipo", + proposals: "Propuestas", + proposals_disclosure: "Las propuestas están disponibles solo para los propósitos del Grupo de Proyecto / Grupo de Trabajo y no deben ser distribuidas fuera de la Membresía Contribuyente de 1EdTech sin el consentimiento expreso por escrito de 1EdTech. La provisión de cualquier documento de trabajo fuera del grupo de proyecto/grupo de trabajo revocará todos los privilegios como Invitado Invitado. Cualquier documento proporcionado a no participantes será hecho por 1EdTech solo en el sitio web público de 1EdTech cuando los documentos se hagan públicamente disponibles.", + disclosure_license_link_text: "El uso de esta especificación para desarrollar productos o servicios está regido por la licencia con 1EdTech que se encuentra en el sitio web de 1EdTech", + disclosure_granted_permissions_text: "Se concede permiso a todas las partes para usar extractos de este documento según sea necesario para producir solicitudes de propuestas.", + disclosure_granted_permissions_time_text: "Los permisos limitados otorgados anteriormente son perpetuos y no serán revocados por 1EdTech o sus sucesores o cesionarios.", + disclosure_warranty_text: "ESTA ESPECIFICACIÓN SE OFRECE SIN NINGUNA GARANTÍA DE NINGÚN TIPO, Y EN PARTICULAR, SE RENUNCIA EXPRESAMENTE A CUALQUIER GARANTÍA DE NO INFRACCIÓN. CUALQUIER USO DE ESTA ESPECIFICACIÓN SE HARÁ ENTERAMENTE BAJO EL RIESGO DEL IMPLEMENTADOR, Y NI EL CONSORCIO, NI NINGUNO DE SUS MIEMBROS O REMITENTES, TENDRÁN NINGUNA RESPONSABILIDAD DE NINGÚN TIPO ANTE NINGÚN IMPLEMENTADOR O TERCERO POR CUALQUIER DAÑO DE CUALQUIER NATURALEZA, DIRECTA O INDIRECTAMENTE, QUE SURJA DEL USO DE ESTA ESPECIFICACIÓN.", + disclosure_contributions_text: "Las contribuciones públicas, comentarios y preguntas deben dirigirse a" + }, + ca: { + generic: "Aquest és un document informatiu de 1EdTech que pot ser revisat en qualsevol moment.", + proposal: "Aquesta és una proposta que pot ser revisada en qualsevol moment.", + proposal_status: "Aquest document és per a revisió i comentaris dels Membres Contribuents de 1EdTech.", + base_doc_status: "Aquest document és per a revisió i comentaris dels Membres Contribuents de 1EdTech.", + candidate_final_status: "Aquest document és per a revisió i adopció pels membres de 1EdTech.", + final_status: "Aquest document està disponible per a l'adopció per part de la comunitat pública en general.", + unknown_status: "Estat desconegut specStatus: \"{0}\"", + spec_version: "Versió de l'Especificació {0}", + final: "final", + version_table_title: "Detalls de la Versió/Llançament", + document_version: "Versió del Document", + date_issued: "Data d'Emissió", + status: "Estat", + this_version: "Aquesta versió", + latest_version: "Última versió", + errata: "Errates", + copyright_tag: "Tots els drets reservats.", + trademark_information: "Informació de marca registrada", + logo_alt: "Logotip de 1EdTech", + ipr_header: "Avís de Propietat Intel·lectual i Distribució", + ipr_intro: "Es demana als destinataris d'aquest document que presentin, juntament amb els seus comentaris, notificació de qualsevol reclamació de patent rellevant o altres drets de propietat intel·lectual dels quals puguin tenir coneixement i que puguin ser infringits per qualsevol implementació de l'especificació establerta en aquest document, i que proporcionin documentació de suport.", + ipr_text: "1EdTech no pren posició respecte a la validesa o abast de qualsevol propietat intel·lectual o altres drets que puguin ser reclamats en relació amb la implementació o ús de la tecnologia descrita en aquest document o la mesura en què qualsevol llicència sota aquests drets pugui o no estar disponible; tampoc representa que hagi fet cap esforç per identificar aquests drets. La informació sobre els procediments de 1EdTech respecte als drets en les especificacions de 1EdTech es pot trobar a la pàgina web de Drets de Propietat Intel·lectual de 1EdTech", + ipr_table_intro: "Les següents organitzacions participants han fet compromisos de llicència explícits per a aquesta especificació:", + org_name: "Nom de l'organització", + date_election_made: "Data de l'elecció", + necessary_claims: "Reclamacions necessàries", + type: "Tipus", + proposals: "Propostes", + proposals_disclosure: "Les propostes estan disponibles només per als propòsits del Grup de Projecte / Grup de Treball i no s'han de distribuir fora de la Membresia Contribuent de 1EdTech sense el consentiment exprés per escrit de 1EdTech. La provisió de qualsevol document de treball fora del grup de projecte/grup de treball revocarà tots els privilegis com a Convidat Convidat. Qualsevol document proporcionat a no participants serà fet per 1EdTech només al lloc web públic de 1EdTech quan els documents es facin públicament disponibles.", + disclosure_license_link_text: "L'ús d'aquesta especificació per desenvolupar productes o serveis està regit per la llicència amb 1EdTech que es troba al lloc web de 1EdTech", + disclosure_granted_permissions_text: "Es concedeix permís a totes les parts per utilitzar extractes d'aquest document segons sigui necessari per produir sol·licituds de propostes.", + disclosure_granted_permissions_time_text: "Els permisos limitats atorgats anteriorment són perpetus i no seran revocats per 1EdTech o els seus successors o cessionaris.", + disclosure_warranty_text: "AQUESTA ESPECIFICACIÓ S'OFEREIX SENSE CAP GARANTIA DE CAP TIPUS, I EN PARTICULAR, ES RENUNCIA EXPRESSAMENT A QUALSEVOL GARANTIA DE NO INFRACCIÓ. QUALSSEVOL ÚS D'AQUESTA ESPECIFICACIÓ ES FARÀ ENTERAMENT SOTA EL RISC DE L'IMPLEMENTADOR, I NI EL CONSORCI, NI CAP DELS SEUS MEMBRES O REMITENTS, TINDRAN CAP RESPONSABILITAT DE CAP TIPUS DAVANT DE CAP IMPLEMENTADOR O TERCER PER QUALSEVOL DANY DE QUALSEVOL NATURALESA, DIRECTA O INDIRECTAMENT, QUE SORGEIXI DE L'ÚS D'AQUESTA ESPECIFICACIÓ.", + disclosure_contributions_text: "Les contribucions públiques, comentaris i preguntes s'han de dirigir a" + } +}; diff --git a/src/1edtech/translations/jsonSchemasTemplate.js b/src/1edtech/translations/jsonSchemasTemplate.js new file mode 100644 index 0000000000..c3b559b71b --- /dev/null +++ b/src/1edtech/translations/jsonSchemasTemplate.js @@ -0,0 +1,11 @@ +export default { + en: { + json_schema_name: "{0} JSON Schema", + }, + es : { + json_schema_name: "JSON Schema {0}", + }, + ca : { + json_schema_name: "JSON Schema {0}", + } +}; diff --git a/src/1edtech/translations/mps.js b/src/1edtech/translations/mps.js new file mode 100644 index 0000000000..c6040cf250 --- /dev/null +++ b/src/1edtech/translations/mps.js @@ -0,0 +1,26 @@ +export default { + en: { + error_sample_data: "Could not get sample data. See developer console for details.", + error_invalid_json: "NOTE: This example contains invalid JSON for ${0}.", + error_json_additional_property: " (additional property: \"{0}\")", + error_missing_model: "Missing Model id", + error_missing_stereotype: "Missing StereoType", + error_missing_service_model: "Missing ServiceModel id" + }, + es: { + error_sample_data: "No se pudo obtener datos de ejemplo. Mire la consola de desarrollo para más detalles.", + error_invalid_json: "NOTA: Este ejemplo contiene JSON inválido por ${0}.", + error_json_additional_property: " (propiedad adicional: \"{0}\")", + error_missing_model: "Modelo no encontrado", + error_missing_stereotype: "Esterotipo no encontrado", + error_missing_service_model: "Model de Servicio no encontrado" + }, + ca: { + error_sample_data: "No s'han pogut obtenir dades d'exemple. Miri la consola de desenvolupament per a més detalls.", + error_invalid_json: "NOTA: Aquest exemple conté JSON invàlid per ${0}.", + error_json_additional_property: " (propietat adicional: \"{0}\")", + error_missing_model: "Model no trobat", + error_missing_stereotype: "Esterotip no tobat", + error_missing_service_model: "Model de Servei no trobat", + } +}; diff --git a/src/1edtech/translations/operationTemplate.js b/src/1edtech/translations/operationTemplate.js new file mode 100644 index 0000000000..9733aa3419 --- /dev/null +++ b/src/1edtech/translations/operationTemplate.js @@ -0,0 +1,50 @@ +export default { + en: { + enumeration_name: "{0} Enumeration", + Request: "Request", + Parameter: "Parameter", + Parameter_Type: "Parameter Type", + Required: "Required", + request_parameter_header: "Request header, path, and query parameters", + Optional: "Optional", + request_body_header: "Allowed request content types", + Content_Type_Header: "Content-Type Header", + Content_Type: "Content Type", + Content_Description: "Content Description", + Content_Required: "Content Required", + Responses: "Responses", + request_header: "Allowed response codes and content types", + }, + es : { + enumeration_name: "Enumeración {0}", + Request: "Petición", + Parameter: "Parámetro", + Parameter_Type: "Tipo de Parámetro", + Required: "Obligatorio", + request_parameter_header: "Parámetros en la cabecera, path y query de la petición", + Optional: "Opcional", + request_body_header: "Content types permitidos en la petición", + Content_Type_Header: "Cabecera Content-Type", + Content_Type: "Tipo de Contenido", + Content_Description: "Descripción del Contenido", + Content_Required: "Contenido Obligatorio", + Responses: "Respuestas", + request_header: "Códigos y Content types permitidos en la respuesta", + }, + ca : { + enumeration_name: "Enumeració {0}", + Request: "Petició", + Parameter: "Paràmetre", + Parameter_Type: "Tipus de Paràmetre", + Required: "Obligatori", + request_parameter_header: "Paràmetres dins la capcelera, path i query de la petició", + Optional: "Opcional", + request_body_header: "Content types permesos a la petició", + Content_Type_Header: "Capcelera Content-Type", + Content_Type: "Tipus de Contingut", + Content_Description: "Descripció del Contingut", + Content_Required: "Contingut Obligatori", + Responses: "Respostes", + request_header: "Codis i Content types permesos a la resposta", + } +}; diff --git a/src/1edtech/translations/privacy.js b/src/1edtech/translations/privacy.js new file mode 100644 index 0000000000..018c1664f4 --- /dev/null +++ b/src/1edtech/translations/privacy.js @@ -0,0 +1,237 @@ +export default { + en: { + privacy_section_header: "Privacy", + privacy_implications: "Privacy Implications", + privacy_implications_paragraph: + "All of the privacy implications contained within this Information Model are described in this Section. All of the corresponding concepts and methods for these privacy annotations are defined in the Privacy Framework.", + confidentiality_level: "Confidentiality Level", + confidentiality_level_paragraph: + "All of the privacy classification of the exchanged payloads are described in this Section.", + ACCESSIBILITY_label: "Accessibility", + ACCESSIBILITY_def: + "denotes information about the accessibility personal needs and preferences of the user", + ANALYTICS_label: "Analytics", + ANALYTICS_def: + "denotes information that will be used to support the creation of learning analytics", + CONTAINER_label: "Container", + CONTAINER_def: + "denotes that the child attributes have privacy-sensitive information", + CREDENTIALS_label: "Credentials", + CREDENTIALS_def: + "denotes access control information for the use e.g. password, private key, etc.", + CREDENTIALSIDREF_label: "CredentialsIdRef", + CREDENTIALSIDREF_def: + "denotes reference to/use of an identifier to credentials information for the user", + DEMOGRAPHICS_label: "Demographics", + DEMOGRAPHICS_def: + "denotes information about the demographics of the user e.g. ethnicity, gender, etc.", + EXTENSION_label: "Extension", + EXTENSION_def: + "denotes that proprietary information can be included and so this MAY contain privacy-sensitive information", + FINANCIAL_label: "Financial", + FINANCIAL_def: + "denotes that the information is of a financial nature e.g. bank account, financial aid status, etc.", + IDENTIFIER_label: "Identifier", + IDENTIFIER_def: + "denotes a unique identifier that has been assigned, by some third party, to the user e.g. passport number, social security number, etc.", + IDENTIFIERREF_label: "IdentifierRef", + IDENTIFIERREF_def: + "denotes reference to/use of a unique identifier that has been assigned, by some third party, to the user", + INSURANCE_label: "Insurance/Assurance", + INSURANCE_def: + "denotes that the information is about the insurance life-assurance nature, e.g. type of insurance, etc.", + LEGAL_label: "Legal", + LEGAL_def: + "denotes that the information is of a legal or judicial nature e.g. Will, prison record, etc.", + MEDICAL_label: "Medical/Healthcare", + MEDICAL_def: + "denotes that the information is of a medical, or healthcare-related nature e.g. allergies, blood-type, mobility needs, etc.", + NA_label: "N/A", + NA_def: + "denotes that there are NO PRIVACY IMPLICATIONS for this attribute (this is the default setting)", + OTHER_label: "Other", + OTHER_def: + "denotes privacy sensitive information that is NOT covered by one of the other categories", + QUALIFICATION_label: "Qualification/Certification", + QUALIFICATION_def: + "denotes that the information is about education qualifications, skill-set certifications, microcredentials, etc.", + PERSONAL_label: "Personal", + PERSONAL_def: + "denotes personal information about the user e.g. name, address, etc.", + SOURCEDID_label: "SourcedId", + SOURCEDID_def: + "denotes the interoperability unique identifier that has been assigned and MUST be present for the correct usage of the corresponding 1EdTech specification", + SOURCEDIDREF_label: "SourcedIdRef", + SOURCEDIDREF_def: + "denotes reference to/use of the interoperability unique identifier, sourcedId, to link/point to an associated 1EdTech object", + UNRESTRICTED_label: "unrestricted", + UNRESTRICTED_def: + "there are no privacy concerns (this is the default value).", + NORMAL_label: "normal", + NORMAL_def: + "denotes that privacy sensitive data could be included and so all best practices to secure this data should be used.", + RESTRICTED_label: "restricted", + RESTRICTED_def: + "denotes that some of the data is more sensitive than usual or that many attributes information that when used together create increased vulnerability for identification of the associated individual or group.", + VERYRESTRICTED_label: "veryrestricted", + VERYRESTRICTED_def: + "denotes that the request could contain very sensitive privacy data. Depending on the capabilities of the Provider this very sensitive data may be obfuscated or may not even be present." + }, + es: { + privacy_section_header: "Privacidad", + privacy_implications: "Implicaciones de Privacidad", + privacy_implications_paragraph: + "Todas las implicaciones de privacidad referentes a este Modelo de Información se describen en esta Sección. Todos los conceptos y métodos correspondientes a estas anotaciones de privacidad están definidas en el Framework de Privacidad.", + confidentiality_level: "Nivel de Confidencialidad", + confidentiality_level_paragraph: + "Toda la clasificación de privacidad de los datos intercambiados se describen en esta Sección.", + ACCESSIBILITY_label: "Accessibility", + ACCESSIBILITY_def: + "denota información sobre las necesidades y preferencias personales sobre accesibilidad del usuario", + ANALYTICS_label: "Analytics", + ANALYTICS_def: + "denota información que será usada para la creación de analíticas de aprendizaje", + CONTAINER_label: "Container", + CONTAINER_def: + "denota que los atributos decendentes contienen información sensible respecto a la privacidad", + CREDENTIALS_label: "Credentials", + CREDENTIALS_def: + "denota información de control de acceso del usuario, p. ej. contraseña, llave privada, etc.", + CREDENTIALSIDREF_label: "CredentialsIdRef", + CREDENTIALSIDREF_def: + "denota referencia hacia / uso de un identificador de información de credenciales del usuario.", + DEMOGRAPHICS_label: "Demographics", + DEMOGRAPHICS_def: + "denota información demográfica del usuario, p. ej. raza, género, etc.", + EXTENSION_label: "Extension", + EXTENSION_def: + "denota que puede incluir información propietaria y, por lo tanto, PUEDE contener información sensible respecto a la privacidad", + FINANCIAL_label: "Financial", + FINANCIAL_def: + "denota que la información es de naturaleza financiera, p. ej. cuentas bancarias, estado financiero, etc.", + IDENTIFIER_label: "Identifier", + IDENTIFIER_def: + "denota un identificador único que ha sido asignado, por algún tercero, al usuario, p. ej. pasaporte, número de la seguridad social, nif, etc.", + IDENTIFIERREF_label: "IdentifierRef", + IDENTIFIERREF_def: + "denota referencia hacia/uso de un identificador único que ha sido asignado, por algún tercero, al usuario.", + INSURANCE_label: "Insurance/Assurance", + INSURANCE_def: + "denota que la información es de naturaleza aseguradora, p. ej. tipo de seguro, etc.", + LEGAL_label: "Legal", + LEGAL_def: + "denota que la información es de naturaleza legal o judicial, p. ej. Testamento, antecedentes penales, etc.", + MEDICAL_label: "Medical/Healthcare", + MEDICAL_def: + "denota que la información es de naturaleza médica o relacionada con la salud, p. ej. alergias, grupo sanguíneo, necesidades de movilidad, etc.", + NA_label: "N/A", + NA_def: + "denota que NO HAY IMPLICACIONES DE PRIVACIDAD para este atributo (este es el valor por defecto)", + OTHER_label: "Other", + OTHER_def: + "denota información sensible con respecto a la privacidad que NO está contenida en una de las otras categorías", + QUALIFICATION_label: "Qualification/Certification", + QUALIFICATION_def: + "denota que la información es sobre calificaciones educativas, certificaciones, microcredenciales, etc.", + PERSONAL_label: "Personal", + PERSONAL_def: + "denota información personal sobre el usuario, p. ej. nombre, dirección, etc.", + SOURCEDID_label: "SourcedId", + SOURCEDID_def: + "denota el identificador único de interoperabilidad que ha sido asignado y DEBE estar presente para el uso correcto de la especificación 1EdTech correspondiente", + SOURCEDIDREF_label: "SourcedIdRef", + SOURCEDIDREF_def: + "denota referencia hacia/uso de el identificador único de interoperabilidad, sourcedId, para enlazar/apuntar a un objeto 1EdTech asociado", + UNRESTRICTED_label: "unrestricted", + UNRESTRICTED_def: + "No hay problemas de privacidad (este es el valor por defecto).", + NORMAL_label: "normal", + NORMAL_def: + "denota que datos sensibles con respecto a la privacidad pueden ser incluidos y, por tanto, deben usarse todas las medidas para securizar esta información.", + RESTRICTED_label: "restricted", + RESTRICTED_def: + "denota que algunos de los datos son más sensibles de lo habitual o que contiene atributos que usados conjuntamente incrementan la vulnerabilidad de identificar al individuo o grupo asociado.", + VERYRESTRICTED_label: "veryrestricted", + VERYRESTRICTED_def: + "denota que la petición puede contener datos muy sensibles con respecto a la privacidad. Dependiendo de las capacidades del Proveedor estos datos extremadamente sensibles pueden ofuscarse o incluso no estar presentes." + }, + ca: { + privacy_section_header: "Privacitat", + privacy_implications: "Implicacions de Privacitat", + privacy_implications_paragraph: + "Totes les implicacions de privacitat referents a aquest Model d'Informació es descriuen en aquesta Secció. Tots els conceptes i mètodes corresponents a aquestes anotacions de privacitat estan definides en el Framework de Privacitat.", + confidentiality_level: "Nivell de Confidencialitat", + confidentiality_level_paragraph: + "Tota la classificació de privacitat de les dades intercanviades es descriuen en aquesta Secció.", + ACCESSIBILITY_label: "Accessibility", + ACCESSIBILITY_def: + "denota informació sobre les necessitats i preferències personals sobre accessibilitat de l'usuari", + ANALYTICS_label: "Analytics", + ANALYTICS_def: + "denota informació que serà usada per a la creació d'analítiques d'aprenentatge", + CONTAINER_label: "Container", + CONTAINER_def: + "denota que els atributs descendents contenen informació sensible respecte a la privacitat", + CREDENTIALS_label: "Credentials", + CREDENTIALS_def: + "denota informació de control de accés de l'usuari, p. ex.. contrasenya, clau privada, etc.", + CREDENTIALSIDREF_label: "CredentialsIdRef", + CREDENTIALSIDREF_def: + "denota referència cap a / ús d'un identificador de informació de credencials de l'usuari.", + DEMOGRAPHICS_label: "Demographics", + DEMOGRAPHICS_def: + "denota informació demogràfica de l'usuari, p. ex.. raça, gènere, etc.", + EXTENSION_label: "Extension", + EXTENSION_def: + "denota que pot incloure informació propietària i, per això, POT contenir informació sensible respecte a la privacitat", + FINANCIAL_label: "Financial", + FINANCIAL_def: + "denota que la informació és de naturalesa financera, p. ex.. comptes bancaris, estat financer, etc.", + IDENTIFIER_label: "Identifier", + IDENTIFIER_def: + "denota un identificador únic que ha estat assignat, per algun tercer, a l'usuari, p. ex. passaport, número de la seguretat social, nif, etc.", + IDENTIFIERREF_label: "IdentifierRef", + IDENTIFIERREF_def: + "denota referència cap a / ús d'un identificador únic que ha estat assignat, per algun tercer, a l'usuari.", + INSURANCE_label: "Insurance/Assurance", + INSURANCE_def: + "denota que la informació és de naturalesa asseguradora, e.g. tipus d'assegurança, etc.", + LEGAL_label: "Legal", + LEGAL_def: + "denota que la informació és de naturalesa legal o judicial, p. ex. Testament, antecedents penals, etc.", + MEDICAL_label: "Medical/Healthcare", + MEDICAL_def: + "denota que la informació és de naturalesa mèdica o relacionada amb la salut, p. ex. al·lèrgies, grup sanguini, necessitats de mobilitat, etc.", + NA_label: "N/A", + NA_def: + "denota que NO HI HA IMPLICACIONS DE PRIVACITAT per aquest atribut (aquest és el valor per defecte)", + OTHER_label: "Other", + OTHER_def: + "denota informació sensible respecte a la privacitat que NO està dins d'una de les altres categories", + QUALIFICATION_label: "Qualification/Certification", + QUALIFICATION_def: + "denota que la informació es sobre qualificacions educatives, certificacions, microcredencials, etc.", + PERSONAL_label: "Personal", + PERSONAL_def: + "denota informació personal sobre l'usuari, p. ex. nom, adreça, etc.", + SOURCEDID_label: "SourcedId", + SOURCEDID_def: + "denota l'identificador únic d'interoperabilitat que ha estat assignat i HA D'estar present per el correcte ús l'especificació 1EdTech corresponent", + SOURCEDIDREF_label: "SourcedIdRef", + SOURCEDIDREF_def: + "denota referència cap a / ús d'un identificador únic d'interoperabilitat, sourcedId, per enllçar/apuntar cap a un objecte 1EdTech associat", + UNRESTRICTED_label: "unrestricted", + UNRESTRICTED_def: + "No hi ha problemes de privacitat (aquest és el valor per defecte).", + NORMAL_label: "normal", + NORMAL_def: + "denota que dades sensibles respecte a la privacitat poden ser inclosos i, per tant, han d'emprar-se totes les mesures per protegir la informació.", + RESTRICTED_label: "restricted", + RESTRICTED_def: + "denota que algunes de les dades són més sensibles de l'habitual o que conté atributs que, emprats conjuntament, incrementen la vulnerabilitat d'identificar a l'individu o grup associat.", + VERYRESTRICTED_label: "veryrestricted", + VERYRESTRICTED_def: + "denota que la petició pot contenir dades molt sensibles respecte a la privacitat. Depenent de les capacitats del Proveïdor aquestes dades extremadament sensibles poden ofuscar-se o inclús no estar presents." + } + +}; diff --git a/src/1edtech/translations/serviceModelTemplate.js b/src/1edtech/translations/serviceModelTemplate.js new file mode 100644 index 0000000000..20d9a28c2d --- /dev/null +++ b/src/1edtech/translations/serviceModelTemplate.js @@ -0,0 +1,11 @@ +export default { + en: { + service_model_name: "{0} Service Model", + }, + es : { + service_model_name: "Modelo de Servicio {0}", + }, + ca : { + service_model_name: "Model de Servei {0}", + } +}; diff --git a/src/1edtech/translations/stereoTypeTemplate.js b/src/1edtech/translations/stereoTypeTemplate.js new file mode 100644 index 0000000000..a3eaac90d0 --- /dev/null +++ b/src/1edtech/translations/stereoTypeTemplate.js @@ -0,0 +1,14 @@ +export default { + en: { + Type: "Type", + Description: "Description", + }, + es : { + Type: "Tipo", + Description: "Descripción", + }, + ca : { + Type: "Tipus", + Description: "Descripció", + } +}; diff --git a/src/1edtech/translations/templateUtils.js b/src/1edtech/translations/templateUtils.js new file mode 100644 index 0000000000..daa7af9fb5 --- /dev/null +++ b/src/1edtech/translations/templateUtils.js @@ -0,0 +1,14 @@ +export default { + en: { + privacy_implication: "Privacy Implication", + enumeration_name: "{0} Enumeration", + }, + es : { + privacy_implication: "Implicación de Privacidad", + enumeration_name: "Enumeración {0}", + }, + ca : { + privacy_implication: "Implicació de Privacitat", + enumeration_name: "Enumeració {0}", + } +};
TypeDescription${l10n.Type}${l10n.Description}