diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/casa.json b/Projects/Superalgos/Schemas/Docs-Concepts/casa.json
index ddb71ab55..7de9d40bf 100644
--- a/Projects/Superalgos/Schemas/Docs-Concepts/casa.json
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/casa.json
@@ -10,11 +10,13 @@
"translations": [
{
"language": "RU",
- "text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Vaina"
+ "text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Vaina",
+ "style": "Text"
},
{
"language": "ES",
- "text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Vaina"
+ "text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Vaina",
+ "style": "Text"
}
]
},
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/vaina.json b/Projects/Superalgos/Schemas/Docs-Concepts/vaina.json
index ced787a00..e6f4a3499 100644
--- a/Projects/Superalgos/Schemas/Docs-Concepts/vaina.json
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/vaina.json
@@ -1,17 +1,21 @@
{
"type": "Vaina",
"definition": {
- "text": "Write here the definition of this Concept.",
+ "text": "Write here the definition of this Concept. Updated. Again.",
"translations": [
{
"language": "ES",
- "text": "Escribe aqui la definición de este proyecto."
+ "text": "Escribe aqui la definición de este proyecto. Actualizado. De nuevo.",
+ "style": "Definition",
+ "updated": 1609084415700
},
{
"language": "RU",
- "text": "Esto es una Vainuska "
+ "text": "Esto es una Vainuska ",
+ "style": "Definition"
}
- ]
+ ],
+ "updated": 1609084340848
},
"paragraphs": [
{
@@ -20,11 +24,13 @@
"translations": [
{
"language": "RU",
- "text": "Esto esta escrito en ruso."
+ "text": "Esto esta escrito en ruso.",
+ "style": "Text"
},
{
"language": "ES",
- "text": "Esto esta en espaniol."
+ "text": "Esto esta en espaniol.",
+ "style": "Text"
}
]
},
diff --git a/Projects/Superalgos/UI/Spaces/Docs-Space/DocsSpace.js b/Projects/Superalgos/UI/Spaces/Docs-Space/DocsSpace.js
index c5febb442..61e9ca218 100644
--- a/Projects/Superalgos/UI/Spaces/Docs-Space/DocsSpace.js
+++ b/Projects/Superalgos/UI/Spaces/Docs-Space/DocsSpace.js
@@ -382,8 +382,8 @@ function newSuperalgosDocSpace() {
}
function changeLanguage(pLanguage) {
- window.localStorage.setItem('Docs Language', language)
language = pLanguage
+ window.localStorage.setItem('Docs Language', language)
let languageLabel = UI.projects.superalgos.utilities.languages.getLaguageLabel(language)
navigateTo('Superalgos', 'Topic', 'Docs In ' + languageLabel)
}
@@ -1956,6 +1956,7 @@ function newSuperalgosDocSpace() {
function addDefinitionTable(docsSchemaDocument, idPrefix, category, project, type) {
if (docsSchemaDocument.definition !== undefined) {
let definitionText = getTextBasedOnLanguage(docsSchemaDocument.definition)
+ definitionText = definitionText + addWarningIfTranslationIsOutdated(docsSchemaDocument.definition)
if (category === 'Topic' || category === 'Concept') {
HTML = HTML + '
Summary: ' + addToolTips(definitionText) + '
'
@@ -2876,6 +2877,7 @@ function newSuperalgosDocSpace() {
innerHTML = addCodeToCamelCase(innerHTML)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Title': {
@@ -2884,6 +2886,7 @@ function newSuperalgosDocSpace() {
role = ''
key = key + '-title'
innerHTML = getTextBasedOnLanguage(paragraph)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Subtitle': {
@@ -2892,6 +2895,7 @@ function newSuperalgosDocSpace() {
role = ''
key = key + '-subtitle'
innerHTML = getTextBasedOnLanguage(paragraph)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Note': {
@@ -2902,6 +2906,7 @@ function newSuperalgosDocSpace() {
innerHTML = getTextBasedOnLanguage(paragraph)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Success': {
@@ -2912,6 +2917,7 @@ function newSuperalgosDocSpace() {
innerHTML = getTextBasedOnLanguage(paragraph)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Important': {
@@ -2922,6 +2928,7 @@ function newSuperalgosDocSpace() {
innerHTML = getTextBasedOnLanguage(paragraph)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Warning': {
@@ -2932,6 +2939,7 @@ function newSuperalgosDocSpace() {
innerHTML = getTextBasedOnLanguage(paragraph)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Error': {
@@ -2940,6 +2948,7 @@ function newSuperalgosDocSpace() {
role = 'role="alert"'
key = key + '-error'
innerHTML = getTextBasedOnLanguage(paragraph)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Callout': {
@@ -2950,6 +2959,7 @@ function newSuperalgosDocSpace() {
innerHTML = getTextBasedOnLanguage(paragraph)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Summary': {
@@ -2960,6 +2970,7 @@ function newSuperalgosDocSpace() {
innerHTML = getTextBasedOnLanguage(paragraph)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'List': {
@@ -2973,12 +2984,13 @@ function newSuperalgosDocSpace() {
innerHTML = addCodeToCamelCase(innerHTML)
innerHTML = addItalics(innerHTML)
innerHTML = addToolTips(innerHTML)
+ innerHTML = innerHTML + addWarningIfTranslationIsOutdated(paragraph)
break
}
case 'Table': {
styleClass = ''
prefix = ''
+ sufix = '' + addWarningIfTranslationIsOutdated(paragraph)
role = ''
key = key + '-table'
innerHTML = getTextBasedOnLanguage(paragraph)
@@ -3334,6 +3346,25 @@ function newSuperalgosDocSpace() {
return HTML
}
+ function addWarningIfTranslationIsOutdated(paragraph) {
+ if (paragraph === undefined) { return '' }
+ if (paragraph.updated === undefined) { return '' }
+ if (paragraph.translations === undefined) { return '' }
+ if (paragraph.translations.length === 0) { return '' }
+ for (let i = 0; i < paragraph.translations.length; i++) {
+ let translation = paragraph.translations[i]
+ if (translation.updated === undefined) { continue }
+ if (translation.language === language) {
+ if (paragraph.updated < translation.updated) {
+ return ''
+ } else {
+ return ' Warning!!! This translation is outdated. English version is... ' + paragraph.text + ' Please update this translation.'
+ }
+ }
+ }
+ return ''
+ }
+
function getTextBasedOnLanguage(paragraph) {
if (paragraph === undefined) { return }
if (paragraph.translations === undefined) { return paragraph.text }
@@ -3348,6 +3379,7 @@ function newSuperalgosDocSpace() {
function setTextBasedOnLanguage(paragraph, text) {
if (language === DEFAULT_LANGUAGE) {
paragraph.text = text
+ paragraph.updated = (new Date()).valueOf()
return
} else {
/*
@@ -3365,12 +3397,14 @@ function newSuperalgosDocSpace() {
let translation = paragraph.translations[i]
if (translation.language === language) {
translation.text = text
+ translation.updated = (new Date()).valueOf()
return
}
}
let translation = {
language: language,
- text: text
+ text: text,
+ updated: (new Date()).valueOf()
}
paragraph.translations.push(translation)
return