Skip to content

Commit c840734

Browse files
authored
Spanish translation: Editor- Editor Accessibility- Timer (#1567)
* Editor translation for ARIA labels * Timer translation for ARIA labels * Remove unused i18next import * Editor KeyUp translation
1 parent d126821 commit c840734

File tree

5 files changed

+59
-17
lines changed

5 files changed

+59
-17
lines changed

client/modules/IDE/components/Editor.jsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
22
import React from 'react';
33
import CodeMirror from 'codemirror';
44
import beautifyJS from 'js-beautify';
5+
import { withTranslation } from 'react-i18next';
56
import 'codemirror/mode/css/css';
67
import 'codemirror/addon/selection/active-line';
78
import 'codemirror/addon/lint/lint';
@@ -136,7 +137,7 @@ class Editor extends React.Component {
136137
}, 1000));
137138

138139
this._cm.on('keyup', () => {
139-
const temp = `line ${parseInt((this._cm.getCursor().line) + 1, 10)}`;
140+
const temp = this.props.t('Editor.KeyUpLineNumber', { lineNumber: parseInt((this._cm.getCursor().line) + 1, 10) });
140141
document.getElementById('current-line').innerHTML = temp;
141142
});
142143

@@ -317,14 +318,14 @@ class Editor extends React.Component {
317318
<section className={editorSectionClass} >
318319
<header className="editor__header">
319320
<button
320-
aria-label="Open Sketch files navigation"
321+
aria-label={this.props.t('Editor.OpenSketchARIA')}
321322
className="sidebar__contract"
322323
onClick={this.props.collapseSidebar}
323324
>
324325
<LeftArrowIcon focusable="false" aria-hidden="true" />
325326
</button>
326327
<button
327-
aria-label="Close sketch files navigation"
328+
aria-label={this.props.t('Editor.CloseSketchARIA')}
328329
className="sidebar__expand"
329330
onClick={this.props.expandSidebar}
330331
>
@@ -335,7 +336,7 @@ class Editor extends React.Component {
335336
{this.props.file.name}
336337
<span className="editor__unsaved-changes">
337338
{this.props.unsavedChanges ?
338-
<UnsavedChangesDotIcon role="img" aria-label="Sketch has unsaved changes" focusable="false" /> :
339+
<UnsavedChangesDotIcon role="img" aria-label={this.props.t('Editor.UnsavedChangesARIA')} focusable="false" /> :
339340
null}
340341
</span>
341342
</span>
@@ -403,12 +404,13 @@ Editor.propTypes = {
403404
showRuntimeErrorWarning: PropTypes.func.isRequired,
404405
hideRuntimeErrorWarning: PropTypes.func.isRequired,
405406
runtimeErrorWarningVisible: PropTypes.bool.isRequired,
406-
provideController: PropTypes.func.isRequired
407+
provideController: PropTypes.func.isRequired,
408+
t: PropTypes.func.isRequired
407409
};
408410

409411
Editor.defaultProps = {
410412
isUserOwner: false,
411413
consoleEvents: [],
412414
};
413415

414-
export default Editor;
416+
export default withTranslation()(Editor);

client/modules/IDE/components/EditorAccessibility.jsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import PropTypes from 'prop-types';
22
import React from 'react';
3+
import { withTranslation } from 'react-i18next';
34

45
class EditorAccessibility extends React.Component {
56
componentDidMount() {
@@ -17,14 +18,14 @@ class EditorAccessibility extends React.Component {
1718
</li>));
1819
});
1920
} else {
20-
messages.push(<li key={0}> There are no lint messages </li>);
21+
messages.push(<li key={0}>{this.props.t('EditorAccessibility.NoLintMessages')}</li>);
2122
}
2223
return (
2324
<div className="editor-accessibility">
2425
<ul className="editor-lintmessages" title="lint messages">
2526
{messages}
2627
</ul>
27-
<p> Current line
28+
<p> {this.props.t('EditorAccessibility.CurrentLine')}
2829
<span className="editor-linenumber" aria-live="polite" aria-atomic="true" id="current-line"> </span>
2930
</p>
3031
</div>
@@ -39,6 +40,7 @@ EditorAccessibility.propTypes = {
3940
message: PropTypes.string.isRequired,
4041
id: PropTypes.number.isRequired
4142
})).isRequired,
43+
t: PropTypes.func.isRequired
4244
};
4345

44-
export default EditorAccessibility;
46+
export default withTranslation()(EditorAccessibility);

client/modules/IDE/components/Timer.jsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import differenceInMilliseconds from 'date-fns/difference_in_milliseconds';
33
import distanceInWordsToNow from 'date-fns/distance_in_words_to_now';
44
import PropTypes from 'prop-types';
55
import React from 'react';
6+
import { withTranslation } from 'react-i18next';
67

78
class Timer extends React.Component {
89
constructor(props) {
@@ -23,17 +24,19 @@ class Timer extends React.Component {
2324
showSavedTime() {
2425
const now = new Date();
2526
if (Math.abs(differenceInMilliseconds(now, this.props.projectSavedTime) < 10000)) {
26-
return 'Saved: just now';
27+
return this.props.t('Timer.SavedJustNow');
2728
} else if (differenceInMilliseconds(now, this.props.projectSavedTime) < 20000) {
28-
return 'Saved: 15 seconds ago';
29+
return this.props.t('Timer.Saved15Seconds');
2930
} else if (differenceInMilliseconds(now, this.props.projectSavedTime) < 30000) {
30-
return 'Saved: 25 seconds ago';
31+
return this.props.t('Timer.Saved25Seconds');
3132
} else if (differenceInMilliseconds(now, this.props.projectSavedTime) < 46000) {
32-
return 'Saved: 35 seconds ago';
33+
return this.props.t('Timer.Saved35Seconds');
3334
}
34-
return `Saved: ${distanceInWordsToNow(this.props.projectSavedTime, {
35+
36+
const timeAgo = distanceInWordsToNow(this.props.projectSavedTime, {
3537
includeSeconds: true
36-
})} ago`;
38+
});
39+
return this.props.t('Timer.SavedAgo', { timeAgo });
3740
}
3841

3942
render() {
@@ -51,11 +54,12 @@ class Timer extends React.Component {
5154

5255
Timer.propTypes = {
5356
projectSavedTime: PropTypes.string.isRequired,
54-
isUserOwner: PropTypes.bool
57+
isUserOwner: PropTypes.bool,
58+
t: PropTypes.func.isRequired
5559
};
5660

5761
Timer.defaultProps = {
5862
isUserOwner: false
5963
};
6064

61-
export default Timer;
65+
export default withTranslation()(Timer);

translations/locales/en-US/translations.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,5 +474,22 @@
474474
"Title": "p5.js Web Editor | My sketches",
475475
"AnothersTitle": "p5.js Web Editor | {{anotheruser}}'s sketches",
476476
"NoCollections": "No collections."
477+
},
478+
"Editor": {
479+
"OpenSketchARIA": "Open Sketch files navigation",
480+
"CloseSketchARIA": "Close Sketch files navigation",
481+
"UnsavedChangesARIA": "Sketch has unsaved changes",
482+
"KeyUpLineNumber": "line {{lineNumber}}"
483+
},
484+
"EditorAccessibility": {
485+
"NoLintMessages": "There are no lint messages ",
486+
"CurrentLine": " Current line"
487+
},
488+
"Timer": {
489+
"SavedJustNow": "Saved: just now",
490+
"Saved15Seconds": "Saved: 15 seconds ago",
491+
"Saved25Seconds": "Saved: 25 seconds ago",
492+
"Saved35Seconds": "Saved: 35 seconds ago",
493+
"SavedAgo": "Saved: {{timeAgo}} ago"
477494
}
478495
}

translations/locales/es-419/translations.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,5 +474,22 @@
474474
"Title": "p5.js Web Editor | Mis bosquejos",
475475
"AnothersTitle": "Editor Web p5.js | Bosquejos de {{anotheruser}}",
476476
"NoCollections": "No hay colecciones."
477+
},
478+
"Editor": {
479+
"OpenSketchARIA": "Abrir navegación de archivos de bosquejo",
480+
"CloseSketchARIA": "Cerrar navegación de archivos de bosquejo",
481+
"UnsavedChangesARIA": "El bosquejo tiene cambios sin guardar",
482+
"KeyUpLineNumber": "línea {{lineNumber}}"
483+
},
484+
"EditorAccessibility": {
485+
"NoLintMessages": "No hay mensajes de Lint",
486+
"CurrentLine": " Línea actual"
487+
},
488+
"Timer": {
489+
"SavedJustNow": "Guardado: justo ahora",
490+
"Saved15Seconds": "Guardado: hace 15 segundos",
491+
"Saved25Seconds": "Guardado: hace 25 segundos",
492+
"Saved35Seconds": "Guardado: hace 35 segundos",
493+
"SavedAgo": "Guardado: hace {{timeAgo}}"
477494
}
478495
}

0 commit comments

Comments
 (0)