diff --git a/README.md b/README.md index 8d659be5..c0224def 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ A relational algebra calculator * Use `yarn build` to create release build in the `dist` folder * Copy the content of your `dist` folder somewhere outside of the repository * Checkout the branch `gh-pages` -* Remove everything there and pase content of the former `dist` folder +* Remove everything there and paste content of the former `dist` folder * Push to github (the person doing this must be an administrator of the project) ## Contributions diff --git a/src/calc2/components/editorBase.tsx b/src/calc2/components/editorBase.tsx index f14c71ba..ca75252c 100644 --- a/src/calc2/components/editorBase.tsx +++ b/src/calc2/components/editorBase.tsx @@ -1113,6 +1113,7 @@ export class EditorBase extends React.Component { try { const hintsFromLinter = this.props.linterFunction(this, editor, text); + if (hintsFromLinter.length === 0 && this.hinterCache.hintsFromLinter.length === 0) { // no hint recreation needed } @@ -1125,7 +1126,7 @@ export class EditorBase extends React.Component { } catch (e) { const found = []; - + const error = EditorBase._generateErrorFromException(e, 0, 0); const messageWithoutHtml = $('').append(error.message).text(); @@ -1286,6 +1287,7 @@ export class EditorBase extends React.Component { }; if (selectionOnly !== true) { // execute whole text query = editor.getValue(); + } else { // execute selection query = editor.getDoc().getSelection(); @@ -1344,6 +1346,7 @@ export class EditorBase extends React.Component { return `${String.fromCharCode(parseInt(group0.substr(2), 16))}`; }); + // try to get position information from error let location = null; @@ -1380,6 +1383,7 @@ export class EditorBase extends React.Component { */ static buildTranslatedPegJsMessage(expected: PEG.ExpectedItem[], found: string) { function cleanupExpected(expected: PEG.ExpectedItem[]) { + let i = 1; expected.sort((a, b) => { @@ -1433,6 +1437,7 @@ export class EditorBase extends React.Component { } const expectedDescriptions = new Array(expected.length); + // expectedDesc, foundDesc, i; for (let i = 0; i < expected.length; i++) { @@ -1446,7 +1451,6 @@ export class EditorBase extends React.Component { ); const foundDesc = found ? `"${stringEscape(found)}"` : t('editor.pegjs-error.end-of-input'); - return t('editor.pegjs-error.expected-found', { expected: expectedDesc, found: foundDesc }); } diff --git a/src/calc2/components/editorRelalg.tsx b/src/calc2/components/editorRelalg.tsx index 630b6c2f..44acd64c 100644 --- a/src/calc2/components/editorRelalg.tsx +++ b/src/calc2/components/editorRelalg.tsx @@ -185,7 +185,7 @@ export class EditorRelalg extends React.Component { label: '→', onClick: this.replaceText, tooltipTitle: 'calc.editors.ra.toolbar.right-arrow', - tooltip: 'calc.editors.ra.toolbar.right-arrow', + tooltip: 'calc.editors.ra.toolbar.right-arrow-content', }, { label: 'τ', diff --git a/src/calc2/components/editorSql.tsx b/src/calc2/components/editorSql.tsx index 94805b65..18931ab4 100644 --- a/src/calc2/components/editorSql.tsx +++ b/src/calc2/components/editorSql.tsx @@ -64,6 +64,7 @@ export class EditorSql extends React.Component { execFunction={(self: EditorBase, text: string, offset) => { const ast = parseSQLSelect(text); replaceVariables(ast, relations); + if (ast.child === null) { if (ast.assignments.length > 0) { @@ -76,8 +77,10 @@ export class EditorSql extends React.Component { const root = relalgFromSQLAstRoot(ast, relations); + if (root) { root.check(); + self.historyAddEntry(text); @@ -99,6 +102,7 @@ export class EditorSql extends React.Component { linterFunction={(self: EditorBase, editor: CodeMirror.Editor, text: string) => { const hints = []; + const ast = parseSQLSelect(text); replaceVariables(ast, relations); diff --git a/src/calc2/components/raTree.tsx b/src/calc2/components/raTree.tsx index aae772c8..383707f6 100644 --- a/src/calc2/components/raTree.tsx +++ b/src/calc2/components/raTree.tsx @@ -8,6 +8,7 @@ import { Popover } from 'calc2/components/popover'; import classNames from 'classnames'; import { RANode, RANodeBinary, RANodeUnary } from 'db/exec/RANode'; import * as React from 'react'; +import { t } from 'calc2/i18n'; require('./raTree.scss'); // require('./raTreeFamilyTree.scss'); @@ -97,6 +98,10 @@ export class RaTree extends React.Component { ?
{n.getMetaData('inlineRelationDefinition')}
: null } + { + n._execTime ?

{t('calc.result.exec.time')} {n._execTime}ms

:

{t('calc.result.exec.time')} fuck - ms

+ } + ); diff --git a/src/calc2/components/result.tsx b/src/calc2/components/result.tsx index 3de4f1d5..72271942 100644 --- a/src/calc2/components/result.tsx +++ b/src/calc2/components/result.tsx @@ -66,6 +66,7 @@ export class Result extends React.Component { const result = this.result(activeNode); + return (
diff --git a/src/calc2/store/groups.ts b/src/calc2/store/groups.ts index cc99488c..3bf84058 100644 --- a/src/calc2/store/groups.ts +++ b/src/calc2/store/groups.ts @@ -291,17 +291,34 @@ export function loadStaticGroups() { source: 'gist', id: 'c306ecf21c6e6d175508d3ac6b4355e7', }, + + { + maintainerGroup: t('calc.maintainer-groups.hsd'), + maintainer: 'Mareike Focken', + + source: 'gist', + id: 'dd9b9e4a5bd3b9a5265104e4c8f171c6', + }, + { + maintainerGroup: t('calc.maintainer-groups.hsd'), + maintainer: 'Mareike Focken', + + source: 'gist', + id: '7716a847139f098709a88f1835d5b08b', + }, + { + maintainerGroup: t('calc.maintainer-groups.hsd'), + maintainer: 'Mareike Focken', + + source: 'gist', + id: 'd37f667154aec34f5c4954723ae01db9', + }, { maintainerGroup: 'OTH Regensburg', maintainer: 'Johannes Schildgen', - source: 'gist', id: 'd67f16874b528abc6e6c88d07a50b2dc', }, - - - - ]; let first: boolean = true; diff --git a/src/calc2/views/landing.tsx b/src/calc2/views/landing.tsx index 99c50382..67befd0b 100644 --- a/src/calc2/views/landing.tsx +++ b/src/calc2/views/landing.tsx @@ -407,6 +407,16 @@ export class Landing extends React.Component {

Changelog

    +
  • 0.26 - Released 17.07.2022 +
      +
    • Execution time | #156
    • +
    +
  • +
  • 0.25 - Released 08.07.2022 +
      +
    • Increased white space tolerance | #169
    • +
    +
  • 0.24 - Released 17.06.2022
    • Fixed problem when replacing multiple operators | #174
    • diff --git a/src/db/exec/RANode.ts b/src/db/exec/RANode.ts index 2b6f33d7..64b9a5ec 100644 --- a/src/db/exec/RANode.ts +++ b/src/db/exec/RANode.ts @@ -50,6 +50,7 @@ export abstract class RANode { _resultNumRows: number = -1; _wrappedInParentheses: boolean = false; _warnings: Warning[] = []; + _execTime: any; constructor(functionName = '') { this._functionName = functionName; diff --git a/src/db/parser/grammar_ra.pegjs b/src/db/parser/grammar_ra.pegjs index 3269f1e4..bc22226d 100644 --- a/src/db/parser/grammar_ra.pegjs +++ b/src/db/parser/grammar_ra.pegjs @@ -24,7 +24,7 @@ } /** merges the codeInfo objects of a binary operation - * it is asumed that the right node follows the left one + * it is assumed that the right node follows the left one */ function mergeCodeInfo(left, right){ var out = { @@ -336,7 +336,7 @@ differenceOperator { return o; } crossJoinOperator -= _ o:(('⨯' / 'x') { return getNodeInfo('crossJoinOperator'); }) __ += _ o:(('⨯' / 'x') { return getNodeInfo('crossJoinOperator'); }) __? { return o; } / __ o:(('cross'i __ 'join'i) { return getNodeInfo('crossJoinOperator'); }) __ { return o; } @@ -607,7 +607,7 @@ booleanExprWithTrailingWhitspace // multiple (optional) assignments followed by a expression (using the variables) root -= _ a2:(assignment __)* a:assignment _ += _ a2:(assignment __?)* a:assignment _ //toDo: checken, ob whitespace zwingend nötig oder nicht { var assignments = [a]; for(var i in a2){ @@ -624,7 +624,7 @@ root codeInfo: getCodeInfo() }; } -/ _ a:(assignment __)* e:expression? _ +/ _ a:(assignment __?)* e:expression? _ //toDo: checken, ob whitespace zwingend nötig oder nicht { var assignments = []; for(var i = 0; i < a.length; i++){ @@ -661,7 +661,7 @@ groupRoot } tableGroupHeaders -= a:tableGroupHeader b:(__ tableGroupHeader)* += a:tableGroupHeader b:(__? tableGroupHeader)* //toDo: checken, ob whitespace zwingend nötig oder nicht { var headers = []; @@ -709,7 +709,7 @@ tableGroupHeader } tableGroup -= _ headers:tableGroupHeaders a:(__ assignment)+ += _ headers:tableGroupHeaders a:(__? assignment)+ //toDo: checken, ob whitespace zwingend nötig oder nicht { var assignments = []; for(var i = 0; i < a.length; i++){ @@ -925,7 +925,7 @@ division projection -= o:pi a:listOfNamedColumnExpressions __ c:expression_precedence1 += o:pi a:listOfNamedColumnExpressions __? c:expression_precedence1 { operatorPositions.push(o); return { @@ -937,7 +937,7 @@ projection } selection -= o:sigma a:booleanExpr __ c:expression_precedence1 += o:sigma a:booleanExpr __? c:expression_precedence1 { operatorPositions.push(o); return { @@ -949,7 +949,7 @@ selection } renameColumns -= o:rho a:listOfColAssignments __ c:expression_precedence1 += o:rho a:listOfColAssignments __? c:expression_precedence1 { operatorPositions.push(o); return { @@ -961,7 +961,7 @@ renameColumns } renameRelation -= o:rho a:relationName __ c:expression_precedence1 += o:rho a:relationName __? c:expression_precedence1 { operatorPositions.push(o); return { @@ -972,8 +972,9 @@ renameRelation }; } +//toDo: __? oder nicht? groupBy -= o:gamma arg:listOfColumns _ ';' _ arg2:listOfAggFunctionArguments __ c:expression_precedence1 += o:gamma arg:listOfColumns _ ';' _ arg2:listOfAggFunctionArguments __? c:expression_precedence1 { operatorPositions.push(o); return { @@ -984,7 +985,7 @@ groupBy codeInfo: getCodeInfo(), }; } -/ o:gamma (_ ';')? _ arg2:listOfAggFunctionArguments __ child:expression_precedence1 +/ o:gamma (_ ';')? _ arg2:listOfAggFunctionArguments __? child:expression_precedence1 { operatorPositions.push(o); return { @@ -997,7 +998,7 @@ groupBy } orderBy -= o:tau a:listOfOrderByArgs __ c:expression_precedence1 += o:tau a:listOfOrderByArgs __? c:expression_precedence1 //toDo: __? oder nicht? { operatorPositions.push(o); return { diff --git a/src/db/parser/grammar_sql.d.ts b/src/db/parser/grammar_sql.d.ts index c99102ab..5f8a8877 100644 --- a/src/db/parser/grammar_sql.d.ts +++ b/src/db/parser/grammar_sql.d.ts @@ -25,6 +25,7 @@ declare module sqlAst { | rootSql | statement | valueExpr + ; type sqlClause diff --git a/src/db/parser/grammar_sql.pegjs b/src/db/parser/grammar_sql.pegjs index e9061c6c..5af7dd14 100644 --- a/src/db/parser/grammar_sql.pegjs +++ b/src/db/parser/grammar_sql.pegjs @@ -166,7 +166,7 @@ unqualifiedColumnName error(t('db.messages.parser.error-sql-invalid-column-name', {str: a})); return a; } - + relation = a:relationName { @@ -437,8 +437,6 @@ select codeInfo: getCodeInfo() }; } - - orderBy = 'order'i __ 'by'i __ arg:listOfOrderByArgs { diff --git a/src/db/relalg.ts b/src/db/relalg.ts index e3f57f39..3ac5a684 100644 --- a/src/db/relalg.ts +++ b/src/db/relalg.ts @@ -135,6 +135,7 @@ export function queryWithReplacedOperatorsFromAst( const pegParserSql = require('./parser/grammar_sql.pegjs') as any; export function parseSQLSelect(text: string): sqlAst.rootSql { + return pegParserSql.parse( text, { diff --git a/src/db/translate/relalgFromAst.ts b/src/db/translate/relalgFromAst.ts index c9d4b6fa..a9c412ad 100644 --- a/src/db/translate/relalgFromAst.ts +++ b/src/db/translate/relalgFromAst.ts @@ -69,28 +69,31 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { function rec(nRaw: sqlAst.astNode | any): RANode { let node: RANode | null = null; - switch (nRaw.type) { case 'relation': { const n: any = nRaw; + const start = Date.now(); if (typeof (relations[n.name]) === 'undefined') { throw new ExecutionError(i18n.t('db.messages.translate.error-relation-not-found', { name: n.name }), n.codeInfo); } const rel = relations[n.name].copy(); if (n.relAlias === null) { node = rel; + node._execTime = Date.now() - start; break; } node = new RenameRelation(rel, n.relAlias); + node._execTime = Date.now() - start; } break; case 'statement': { + const start = Date.now(); const n: any = nRaw; node = parseStatement(n); - + node._execTime = Date.now() - start; if (n.select.distinct === false) { node.addWarning(i18n.t('db.messages.translate.warning-distinct-missing'), n.codeInfo); } @@ -99,16 +102,20 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { case 'renameRelation': { + const start = Date.now(); const n: any = nRaw; node = new RenameRelation(rec(n.child), n.newRelAlias); + node._execTime = Date.now() - start; } break; case 'relationFromSubstatement': { + const start = Date.now(); const n: any = nRaw; const rel = rec(n.statement); node = new RenameRelation(rel, n.relAlias); + node._execTime = Date.now() - start; } break; @@ -117,20 +124,25 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { case 'rightOuterJoin': case 'fullOuterJoin': { + const start = Date.now(); const n: any = nRaw; const condition: JoinCondition = parseJoinCondition(n.cond); switch (n.type) { case 'innerJoin': node = new InnerJoin(rec(n.child), rec(n.child2), condition); + node._execTime = Date.now() - start; break; case 'leftOuterJoin': node = new LeftOuterJoin(rec(n.child), rec(n.child2), condition); + node._execTime = Date.now() - start; break; case 'rightOuterJoin': node = new RightOuterJoin(rec(n.child), rec(n.child2), condition); + node._execTime = Date.now() - start; break; case 'fullOuterJoin': node = new FullOuterJoin(rec(n.child), rec(n.child2), condition); + node._execTime = Date.now() - start; break; } } @@ -138,6 +150,7 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { case 'crossJoin': { + const start = Date.now(); const n: any = nRaw; // check out size of resulting cross join! const rec1: any = rec(n.child); @@ -150,17 +163,19 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { alert('The CrossJoin may cause the browser to crash. Alternatively try using an INNER JOIN'); } node = new CrossJoin(rec(n.child), rec(n.child2)); - + node._execTime = Date.now() - start; } break; case 'naturalJoin': { + const start = Date.now(); const n: any = nRaw; node = new InnerJoin(rec(n.child), rec(n.child2), { type: 'natural', restrictToColumns: null, }); + node._execTime = Date.now() - start; } break; @@ -168,16 +183,20 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { case 'intersect': case 'except': { + const start = Date.now(); const n: any = nRaw; switch (n.type) { case 'union': node = new Union(rec(n.child), rec(n.child2)); + node._execTime = Date.now() - start; break; case 'intersect': node = new Intersect(rec(n.child), rec(n.child2)); + node._execTime = Date.now() - start; break; case 'except': node = new Difference(rec(n.child), rec(n.child2)); + node._execTime = Date.now() - start; break; } @@ -192,6 +211,7 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { case 'orderBy': { + const start = Date.now(); const n: any = nRaw; const orderCols = []; const orderAsc = []; @@ -202,11 +222,13 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { orderCols.push(new Column(e.col.name, e.col.relAlias)); } node = new OrderBy(rec(n.child), orderCols, orderAsc); + node._execTime = Date.now() - start; } break; case 'limit': { + const start = Date.now(); const n: any = nRaw; const limit = n.limit; const offset = n.offset; @@ -219,6 +241,7 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { if (limit === -1) { // === LIMIT ALL => only offset node = new Selection(rec(n.child), conditionOffset); + node._execTime = Date.now() - start; } else { // limit and offset @@ -227,6 +250,7 @@ export function relalgFromSQLAstRoot(astRoot: sqlAst.rootSql | any, relations: { new ValueExpr.ValueExprGeneric('number', 'constant', [limit + offset]), ]); node = new Selection(rec(n.child), new ValueExpr.ValueExprGeneric('boolean', 'and', [conditionOffset, conditionLimit])); + node._execTime = Date.now() - start; } break; } @@ -465,7 +489,7 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela const col = n.columns[i]; schema.addColumn(col.name, col.relAlias, col.type); } - + const start = Date.now(); const rel = new Relation(n.name); rel.setSchema(schema, true); rel.addRows(n.rows); @@ -473,22 +497,27 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela rel.setMetaData('inlineRelationDefinition', n.codeInfo.text); // TODO: inlineRelationDefinition should be replaced; there should be a generic way to get the definition of a node const node = rel; + node._execTime = Date.now() - start; setAdditionalData(n, node); return node; } case 'selection': { + // TODO: Missing here... + const start = Date.now(); const child = recRANode(n.child); const condition = recValueExpr(n.arg); const node = new Selection(child, condition); setAdditionalData(n, node); + node._execTime = Date.now() - start; return node; } case 'projection': { const child = recRANode(n.child); + const start = Date.now(); const projections: (Column | { name: string | number, relAlias: string, @@ -517,11 +546,13 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela const node = new Projection(child, projections); setAdditionalData(n, node); + node._execTime = Date.now() - start; return node; } case 'orderBy': { + const start = Date.now(); const child = recRANode(n.child); const orderCols: Column[] = []; const orderAsc: boolean[] = []; @@ -535,58 +566,76 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela const node = new OrderBy(child, orderCols, orderAsc); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'groupBy': { + const start = Date.now(); const child = recRANode(n.child); const aggregateFunctions = n.aggregate; const groupByCols = n.group; const node = new GroupBy(child, groupByCols, aggregateFunctions); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'union': { + const start = Date.now(); const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new Union(child, child2); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'intersect': { + const start = Date.now(); const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new Intersect(child, child2); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'division': { + const start = Date.now(); const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new Division(child, child2); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'difference': { + const start = Date.now(); const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new Difference(child, child2); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'renameColumns': { + const start = Date.now(); const ren = new RenameColumns(recRANode(n.child)); for (let i = 0; i < n.arg.length; i++) { @@ -597,19 +646,25 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela const node = ren; setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'renameRelation': { + const start = Date.now(); const child = recRANode(n.child); const node = new RenameRelation(child, n.newRelAlias); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'thetaJoin': { + const start = Date.now(); const condition: JoinCondition = { type: 'theta', joinExpression: recValueExpr(n.arg), @@ -618,20 +673,28 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela const child2 = recRANode(n.child2); const node = new InnerJoin(child, child2, condition); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'crossJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new CrossJoin(child, child2); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'naturalJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new InnerJoin(child, child2, { @@ -639,64 +702,90 @@ export function relalgFromRelalgAstNode(astNode: relalgAst.relalgOperation, rela restrictToColumns: null, }); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'leftSemiJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new SemiJoin(child, child2, true); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'rightSemiJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const node = new SemiJoin(child, child2, false); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'antiJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const condition = parseJoinCondition(n.arg); const node = new AntiJoin(child, child2, condition); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'leftOuterJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const condition = parseJoinCondition(n.arg); const node = new LeftOuterJoin(child, child2, condition); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'rightOuterJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const condition = parseJoinCondition(n.arg); const node = new RightOuterJoin(child, child2, condition); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } case 'fullOuterJoin': { + const start = Date.now(); + const child = recRANode(n.child); const child2 = recRANode(n.child2); const condition = parseJoinCondition(n.arg); const node = new FullOuterJoin(child, child2, condition); setAdditionalData(n, node); + node._execTime = Date.now() - start; + return node; } } diff --git a/src/locales/de.json b/src/locales/de.json index c76122db..7ef3afb3 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,4 +1,223 @@ { + "db.messages.parser.error-duplicate-variable": "Variablenname wurde mehrfach definiert: {{name}}", + "db.messages.parser.error-invalid-date-format": "\"{{str}}\" ist kein g\u00fcltiges Datum; erwartetes Format: YYYY-MM-DD", + "db.messages.parser.error-group-duplicate-header": "mehrfacher header {{name}}", + "db.messages.parser.error-group-unknown-header": "unbekannter header {{name}}", + "db.messages.parser.error-group-header-name-missing": "der Name des Datensatzes fehlt (group: ....)", + "db.messages.parser.error-group-header-name-empty": "der Name des Datensatzes ist leer", + "db.messages.parser.error-group-non-unique-attribute": "nicht eindeutiges Attribut {{name}} in Spalte {{index}}", + "db.messages.parser.error-group-non-unique-group-name": "Der Name der Gruppe {{name}} ist nicht eindeutig.", + "db.messages.parser.error-sql-string-use-single-quotes": "verwenden Sie einfache Anf\u00fchrungszeichen f\u00fcr Zeichenketten", + "db.messages.parser.error-sql-invalid-relation-name": "\"{{str}}\" darf nicht als name einer Relation verwendet werden", + "db.messages.parser.error-sql-invalid-column-name": "\"{{str}}\" darf nicht als name einer Spalte verwendet werden", + "db.messages.parser.error-sql-group-by-missing": "group-by-Klausel fehlt", + "db.messages.parser.error-sql-having-without-group-by": "having-Klausel gefunden doch \"group by\" or Aggregation fehlt", + "db.messages.parser.error-sql-negative-limit": "das Limit muss gr\u00f6\u00dfer oder gleich 0 sein", + "db.messages.parser.error-sqldump-invalid-column-number": "ung\u00fcltige Spaltenanzahl in Zeile {{line}}", + "db.messages.parser.error-sqldump-invalid-type": "ung\u00fcltiger Typ in Zeile {{line}}", + "db.messages.parser.error-sqldump-insert-wrong-number-columns": "Anzahl der Werte != Anzahl der Spalten", + "db.messages.parser.error-valueexpr-like-operand-no-string": "der rechte Operand von LIKE muss ein Zeichenkettenliteral sein", + "db.messages.exec.error-column-not-unique": "Spalte \"{{column}}\" kann wegen mehrdeutigkeit nicht hinzugef\u00fcgt werden", + "db.messages.exec.error-column-not-found-name": "Spalte \"{{column}} wurde im Schema {{schema}} nicht gefunden", + "db.messages.exec.error-column-not-found-index": "Spaltenindex \"{{column}}\" ist ausserhalb des G\u00fcltigkeitsbereichs f\u00fcr Schema {{schema}}; Indizes starten mit 1", + "db.messages.exec.error-column-ambiguous": "Spalte \"{{column}}\" ist mehrdeutig im Schema {{schema}}", + "db.messages.exec.error-column-index-out-of-range": "Spaltenindex \"{{column}}\" ist ausserhalb des G\u00fcltigkeitsbereichs f\u00fcr Schema {{schema}}; Indizes starten mit 1", + "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "Relations alias \"{{alias}}\" kann wegen Mehrdeutigkeit nicht gesetzt werden", + "db.messages.exec.error-could-not-rename-ambiguity": "neuer Name \"{{newName}}\" f\u00fcr \"{{oldName}}\" kann wegen Mehrdeutigkeit nicht gesetzt werden im Schema {{schema}}", + "db.messages.exec.error-schema-a-not-part-of-schema-b": "Schema {{schemaA}} ist nicht Teil von {{schemaB}}", + "db.messages.exec.error-schemas-not-unifiable": "Schemas sind nicht unifiable: Typen oder Anzahl der Attribute ist unterschiedlich: {{schemaA}} and {{schemaB}}", + "db.messages.exec.error-column-not-in-both-schemas": "Spalte \"{{column}}\" kann nicht in beiden Schemas des Joins gefunden werden", + "db.messages.exec.error-condition-must-be-boolean": "Bedingung muss ein boolscher Ausdruck sein", + "db.messages.exec.error-func-not-defined-for-column-type": "{{func}} ist nicht f\u00fcr Datentyp {{colType}} definiert", + "db.messages.exec.error-join-would-produce-non-unique-columns": "Die folgenden Spalten sind teil beider Relationen: {{conflicts}}", + "db.messages.exec.error-no-columns-match-alias-star": "Keine Spalten gefunden f\u00fcr \"{{alias}}.*\"", + "db.messages.exec.error-datatype-not-specified-for-col": "Datentype f\u00fcr Spalte {{index}} (\"{{column}}\") wurde nicht spezifiziert", + "db.messages.exec.error-invalid-projection-error": "ung\u00fcltige Projektion \"{{argument}}\": {{error}}", + "db.messages.exec.error-function-expects-type": "Funktion \"{{func}}\" erwartet Argumente vom Typ \"{{expected}}\" aber \"{{given}}\" gefunden", + "db.messages.exec.error-could-not-compare-different-types": "Werte mit unterschiedlichen Datentypen k\u00f6nnen nicht verglichen werden: {{typeA}} != {{typeB}}", + "db.messages.exec.error-function-expects-arguments-of-same-type": "Funktion {{func}} erwartet, dass alle Argumente den selben Datentyp haben.", + "db.messages.exec.error-case-when-condition-must-be-boolean": "Die Bedingung f\u00fcr ein CASE WHEN muss ein boolscher Ausdruck sein", + "db.messages.exec.error-case-when-expects-results-of-same-type": "CASE WHEN condition THEN result END erwartet dass alle results vom selben Typ sind", + "db.messages.exec.error-invalid-date-format": "\"{{str}}\" ist kein g\u00fcltiges Datum; erwartetes Format: YYYY-MM-DD", + "db.messages.translate.error-relation-not-found": "Relation \"{{name}}\" nicht gefunden", + "db.messages.translate.warning-distinct-missing": "Distinct fehlt", + "db.messages.translate.warning-ignored-all-on-set-operators": "ALL bei Mengenoperatoren wurde ignoriert", + "db.messages.translate.error-variable-name-conflict": "Namenskonflikt: eine Relation mit Namen \"{{name}}\" existiert bereits", + "db.messages.translate.error-variable-cyclic-usage": "Zyklische Verwendung von Variable \"{{name}}\" erkannt", + "editor.codemirror-placeholder": "Abfrage ...\nTastat\u00fcrk\u00fcrzel\n\tAbfrage ausf\u00fchren: [CTRL]+[RETURN]\n\tMarkierten teil der Abfrage ausf\u00fchren: [CTRL]+[SHIFT]+[RETURN]\tAutovervollst\u00e4ndigung: [CTRL]+[SPACE]", + "editor.alert-message-headers.success": "Erfolg", + "editor.alert-message-headers.info": "Info", + "editor.alert-message-headers.warning": "Warnung", + "editor.alert-message-headers.error": "Fehler", + "editor.inline-relation-editor.button-ok": "ok", + "editor.inline-relation-editor.button-cancel": "abbrechen", + "editor.inline-relation-editor.placeholder-column-name-and-types": "spaltenName:datenTyp", + "editor.inline-relation-editor.enter-your-data": "bitte Daten eingeben", + "editor.inline-relation-editor.error-column-name-missing": "Spaltenname fehlt in Spalte {{index}}", + "editor.inline-relation-editor.error-wrong-quoted-string": "Zeichenketten d\u00fcrfen keine doppelten oder einfache Anf\u00fchrungszeichen enthalten", + "editor.error-no-query-found": "keine Abfrage gefunden", + "editor.pegjs-error.or": "oder", + "editor.pegjs-error.no-input-found": "keine Eingabe gefunden", + "editor.pegjs-error.end-of-input": "Ende der Eingabe", + "editor.pegjs-error.expected-found": " Option 1: Erwarte {{expected}} aber {{found}} gefunden. Option 2: Leerzeichen vor der \u00f6ffnenden Klammer '(' des Relationsnamens erforderlich. ", + "editor.error-at-line-x": "in Zeile {{line}}", + "calc.messages.error-query-missing": "keine Abfrage gefunden", + "calc.messages.error-query-missing-assignments-found": "nur Zuweisungen gefunden; die eigentliche Abfrage fehlt Help - Assignments (en)", + "calc.messages.gist-load-success": "gist erfolgreich geladen", + "calc.menu.headline": "Datens\u00e4tze", + "calc.menu.datasets": "Datens\u00e4tze", + "calc.menu.load-gist-headline": "Datensatz aus gist laden", + "calc.menu.load-gist-button": "laden", + "calc.menu.load-gist-insert-placeholder": "gist ID", + "calc.menu.recently-used": "Zuletzt verwendete Gists", + "calc.menu.create-own-dataset-headline": "Eigenen Datensatz erstellen", + "calc.menu.create-own-dataset-text": "Sie k\u00f6nnen Ihren eigenen Datensatz erstellen und ihn mit anderen teilen. Lernen Sie mehr dar\u00fcber im Maintainer Tutorial", + "calc.menu.create-own-dataset-text-link": "Maintainer Tutorial (en)", + "calc.menu.create-own-dataset-button-new": "neuen Datensatz erstellen", + "calc.menu.create-own-dataset-button-modify": "aktuellen Datensatz ab\u00e4ndern", + "calc.navigation.take-a-tour": "Tour starten", + "calc.navigation.feedback": "Feedback", + "calc.navigation.help": "Hilfe (en)", + "calc.navigation.calc": "Rechner", + "calc.navigation.language": "Sprache", + "calc.maintainer-groups.misc": "Diverse", + "calc.maintainer-groups.temp": "Ungespeichert", + "calc.maintainer-groups.uibk": "Universit\u00e4t Innsbruck", + "calc.maintainer-groups.karlsruhe": "Hochschule Karlsruhe", + "calc.maintainer-groups.saarland": "Universit\u00e4t Saarland", + "calc.maintainer-groups.hsd": " Hochschule D\u00fcsseldorf", + "calc.editors.button-history": "Verlauf", + "calc.editors.insert-relation-title": "Einf\u00fcgen", + "calc.editors.insert-relation-tooltip": "Beziehungs- oder Spaltennamen einf\u00fcgen", + "calc.editors.group.tab-name": "Datensatz Editor", + "calc.editors.group.tab-name-short": "DS", + "calc.editors.group.toolbar.import-sql": "SQL-dump importieren", + "calc.editors.group.toolbar.import-sql-content": "SQL-dump importieren", + "calc.editors.group.toolbar.add-new-relation": "neue Relation hinzuf\u00fcgen", + "calc.editors.group.toolbar.add-new-relation-content": "Relationseditor \u00f6ffnen", + "calc.editors.group.button-download": "download query", + "calc.editors.group.button-download-result": "download result", + "calc.editors.group.button-exec": "Vorschau", + "calc.editors.group.button-use": "Datensatz im Editor verwenden", + "calc.editors.group.button-use_plural": "Datensatz im Editor verwenden", + "calc.editors.group.sql-import-group-name-placeholder": "Name des Datensatzes (importiert)", + "calc.editors.group.new-group-example-group": "-- dies ist ein Beispiel\n\ngroup: nameDesDatensatzes \n\n\nA = {\n\ta:string, b:number\n\tbeispiel, 42\n}", + "calc.editors.group.modal-sqldump.modal-title": "SQL-Dump importieren", + "calc.editors.group.modal-sqldump.button-close": "schlie\u00dfen", + "calc.editors.group.modal-sqldump.button-cancel": "abbrechen", + "calc.editors.group.modal-sqldump.button-import-sql": "importieren", + "calc.editors.group.modal-sqldump.description": "Kopieren Sie den SQL-Dump hier her um einen Datensatz daraus zu erstellen.", + "calc.editors.ra.tab-name": "Relationale Algebra", + "calc.editors.ra.tab-name-short": "RelAlg", + "calc.editors.ra.button-execute-query": "Query ausf\u00fchren", + "calc.editors.ra.button-execute-selection": "Markierung ausf\u00fchren", + "calc.editors.ra.button-download": "Download", + "calc.editors.ra.button-download-csv": "Ergebnis (CSV)", + "calc.editors.ra.button-download-jpg": "Ergebnis (JPG)", + "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.toolbar.projection": "Projektion", + "calc.editors.ra.toolbar.projection-content": "π a, b ( A )\n
      pi a, b A", + "calc.editors.ra.toolbar.selection": "Selektion", + "calc.editors.ra.toolbar.selection-content": "σ a < b \u2227 b \u2260 c ( A )\n
      sigma a < b and b != c A", + "calc.editors.ra.toolbar.rename": "Umbenennen (Relationen/Spalten)", + "calc.editors.ra.toolbar.rename-content": "
      σ x.a > 1 ( ρ x ( A ) )
      \n
      σ A.y > 2 ( rho y\u2190a ( A ) )
      ", + "calc.editors.ra.toolbar.right-arrow": "Umbenennung von Spalten (neuer Name rechts)", + "calc.editors.ra.toolbar.right-arrow-content": "
      σ A.y > 2 ( ρ a\u2192y ( A ) )
      ", + "calc.editors.ra.toolbar.rename-columns-operator": "Umbenennung von Spalten", + "calc.editors.ra.toolbar.rename-columns-operator-content": "
      σ A.y > 2 ( ρ y\u2190a ( A ) )
      ", + "calc.editors.ra.toolbar.orderBy": "Sortieren", + "calc.editors.ra.toolbar.orderBy-content": "", + "calc.editors.ra.toolbar.groupBy": "Gruppieren", + "calc.editors.ra.toolbar.groupBy-content": "
      γ a, b; count(c)\u2192c ( A )
      \n
      gamma count(a)->x, sum(b)->y ( A )
      ", + "calc.editors.ra.toolbar.and": "Und", + "calc.editors.ra.toolbar.and-content": "
      σ a < b \u2227 b \u2260 c ( A )
      ", + "calc.editors.ra.toolbar.xor": "Xor", + "calc.editors.ra.toolbar.xor-content": "
      σ a < b \u2295 b \u2260 c ( A )
      ", + "calc.editors.ra.toolbar.or": "Oder", + "calc.editors.ra.toolbar.or-content": "
      σ a < b \u2228 b \u2260 c ( A )
      ", + "calc.editors.ra.toolbar.not": "Verneinung", + "calc.editors.ra.toolbar.not-content": " \u00ac(a < b) ( A )
", + "calc.editors.ra.toolbar.equals": "Gleich", + "calc.editors.ra.toolbar.equals-content": " a = b ( A )
", + "calc.editors.ra.toolbar.not-equals": "Ungleich", + "calc.editors.ra.toolbar.not-equals-content": " a \u2260 'text' ( A )", + "calc.editors.ra.toolbar.greater-or-equals": "Gr\u00f6\u00dfer-Gleich", + "calc.editors.ra.toolbar.greater-or-equals-content": " a \u2265 42 ( A )", + "calc.editors.ra.toolbar.lesser-or-equals": "Kleiner-Gleich", + "calc.editors.ra.toolbar.lesser-or-equals-content": " a \u2264 42 ( A )", + "calc.editors.ra.toolbar.intersect": "Schnittmenge", + "calc.editors.ra.toolbar.intersect-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.union": "Vereinigung", + "calc.editors.ra.toolbar.union-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.division": "Division (Relationen)", + "calc.editors.ra.toolbar.division-content": "
( A ) \u00f7 ( B )
", + "calc.editors.ra.toolbar.subtraction": "Mengendifferenz", + "calc.editors.ra.toolbar.subtraction-content": "
( A ) - ( B )
\n
( A ) \n ( B )
", + "calc.editors.ra.toolbar.cross-join": "cross join (Kreuzprodukt)", + "calc.editors.ra.toolbar.cross-join-content": "
( A ) \u2a2f ( B )
", + "calc.editors.ra.toolbar.natural-join": "natural join / \u03b8-join", + "calc.editors.ra.toolbar.natural-join-content": "
( A ) \u22c8 ( B )
\n
( A ) \u22c8 A.a \u2265 B.a ( B )
", + "calc.editors.ra.toolbar.left-outer-join": "left outer join", + "calc.editors.ra.toolbar.left-outer-join-content": "
( A ) \u27d5 ( B )
\n
( A ) \u27d5 A.a < B.a ( B )
\n", + "calc.editors.ra.toolbar.right-outer-join": "right outer join", + "calc.editors.ra.toolbar.right-outer-join-content": "
( A ) \u27d6 ( B )
\n
( A ) \u27d6 A.a < B.a ( B )
\n", + "calc.editors.ra.toolbar.full-outer-join": "full outer join", + "calc.editors.ra.toolbar.full-outer-join-content": "
( A ) \u27d7 ( B )
\n
( A ) \u27d7 A.a != B.a ( B )
", + "calc.editors.ra.toolbar.left-semi-join": "left semi join", + "calc.editors.ra.toolbar.left-semi-join-content": "
( A ) \u22c9 ( B )
", + "calc.editors.ra.toolbar.right-semi-join": "right semi join", + "calc.editors.ra.toolbar.right-semi-join-content": "
( A ) \u22ca ( B )
", + "calc.editors.ra.toolbar.anti-join": "anti join", + "calc.editors.ra.toolbar.anti-join-content": "
( A ) \u25b7 ( B )
", + "calc.editors.ra.toolbar.assignment": "Zuweisung", + "calc.editors.ra.toolbar.assignment-content": "
X = pi a ( A )\n
Y = pi b ( b )\n
( X ) ( Y )
", + "calc.editors.ra.toolbar.single-line-comment": "Kommentar einzeilig", + "calc.editors.ra.toolbar.single-line-comment-content": "π a, b A -- useful comment", + "calc.editors.ra.toolbar.multi-line-comment": "Kommentar mehrzeilig", + "calc.editors.ra.toolbar.multi-line-comment-content": "/* this is a very,
very long comment */

π a, b A", + "calc.editors.ra.toolbar.inline-relation": "inline-Relation", + "calc.editors.ra.toolbar.inline-relation-content": "σ a = 'test' ({
a:string, b:number, X.c:date
a, 1, 1970-01-01
}
)", + "calc.editors.ra.toolbar.inline-relation-editor": "inline-Relation (Editor)", + "calc.editors.ra.toolbar.inline-relation-editor-content": "eine neue inline-Relation mit dem Editor erstellen", + "calc.editors.ra.toolbar.insert-date": "Datum einf\u00fcgen", + "calc.editors.ra.toolbar.insert-date-content": "σ a < date('1970-01-01') ( A )", + "calc.editors.ra.toolbar.autoreplace-operators.title": "Operatoren ersetzen", + "calc.editors.ra.toolbar.autoreplace-operators.header": "Operatoren automatisch ersetzen", + "calc.editors.ra.toolbar.autoreplace-operators.none": "keine Ersetzung", + "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "pi => \u03c0", + "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "\u03c0 => pi", + "calc.editors.sql.tab-name": "SQL", + "calc.editors.sql.tab-name-short": "SQL", + "calc.editors.sql.button-execute-query": "Query ausf\u00fchren", + "calc.editors.sql.button-execute-selection": "Markierung ausf\u00fchren", + "calc.editors.sql.button-download": "download", + "calc.editors.sql.toolbar.select": "select-Klausel", + "calc.editors.sql.toolbar.select-content": "

SELECT * FROM A

SELECT a, A.b, A.c FROM A
", + "calc.editors.sql.toolbar.from": "from-Klausel", + "calc.editors.sql.toolbar.from-content": "
SELECT *
FROM A, B as b
INNER JOIN C NATURAL
", + "calc.editors.sql.toolbar.where": "where-Klausel", + "calc.editors.sql.toolbar.where-content": "SELECT * FROM A, B
where A.a = B.a or false", + "calc.editors.sql.toolbar.group-by": "group-b-Klausel", + "calc.editors.sql.toolbar.group-by-content": "SELECT a, COUNT(b) as num
FROM A
GROUP BY a", + "calc.editors.sql.toolbar.having": "having-Klausel", + "calc.editors.sql.toolbar.having-content": "SELECT a, SUM(b) as sum
FROM A
GROUP BY a
having sum > 10", + "calc.editors.sql.toolbar.order-by": "order-by-Klausel", + "calc.editors.sql.toolbar.order-by-content": "

SELECT * FROM A ORDER BY a asc, b desc

SELECT * FROM A ORDER BY 1, 2, 3
", + "calc.editors.sql.toolbar.limit": "limit-Klausel", + "calc.editors.sql.toolbar.limit-content": "SELECT * FROM A
LIMIT 10 OFFSET 0", + "calc.editors.sql.toolbar.insert-date": "Datum einf\u00fcgen", + "calc.editors.sql.toolbar.insert-date-content": "select * from A\nwhere a < date(\"1970-01-01\")", + "calc.result.modal.title": "Ergebnis", + "calc.result.modal.close": "Schlie\u00dfen", + "calc.editors.ra.inline-editor.title": "Relation Editor", + "calc.editors.ra.inline-editor.button-download-csv": "CSV downloaden", + "calc.editors.ra.inline-editor.button-upload-csv": "CSV uploaden", + "calc.editors.ra.inline-editor.button-cancel": "Abbrechen", + "calc.editors.ra.inline-editor.button-ok": "Ok", + "calc.editors.ra.inline-editor.row-name": "Name", + "calc.editors.ra.inline-editor.row-type": "Typ", + "calc.editors.ra.inline-editor.input-relation-name": "Relations Name", + "calc.navigation.imprint": "Impressum", "db.messages.parser.error-duplicate-variable": "Variablenname wurde mehrfach definiert: {{name}}", "db.messages.parser.error-invalid-date-format": "\"{{str}}\" ist kein gültiges Datum; erwartetes Format: YYYY-MM-DD", "db.messages.parser.error-group-duplicate-header": "mehrfacher header {{name}}", diff --git a/src/locales/en.json b/src/locales/en.json index a7e4555d..57a5650a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,4 +1,222 @@ { + "db.messages.parser.error-duplicate-variable": "duplicate variable name: {{name}}", + "db.messages.parser.error-invalid-date-format": "\"{{str}}\" is not a valid date; expected format: YYYY-MM-DD", + "db.messages.parser.error-group-duplicate-header": "duplicate header {{name}}", + "db.messages.parser.error-group-unknown-header": "unknown header {{name}}", + "db.messages.parser.error-group-header-name-missing": "the name of the group is missing (group: ....)", + "db.messages.parser.error-group-header-name-empty": "the name of the group must not be empty", + "db.messages.parser.error-group-non-unique-attribute": "non unique attribute {{name{{ in column }}index}}", + "db.messages.parser.error-group-non-unique-group-name": "duplicate group name: {{name}}", + "db.messages.parser.error-sql-string-use-single-quotes": "use single quotes for strings", + "db.messages.parser.error-sql-invalid-relation-name": "\"{{str}}\" must not be used as a relation-name", + "db.messages.parser.error-sql-invalid-column-name": "\"{{str}}\" must not be used as a column-name", + "db.messages.parser.error-sql-group-by-missing": "group by is missing", + "db.messages.parser.error-sql-having-without-group-by": "having found but missing \"group by\" or aggregation", + "db.messages.parser.error-sql-negative-limit": "the limit given must be >= 0", + "db.messages.parser.error-sqldump-invalid-column-number": "invalid number of columns in line {{line}}", + "db.messages.parser.error-sqldump-invalid-type": "invalid type in line {{line}}", + "db.messages.parser.error-sqldump-insert-wrong-number-columns": "number of values != number of columns", + "db.messages.parser.error-valueexpr-like-operand-no-string": "right operand of LIKE must be a string literal", + "db.messages.exec.error-column-not-unique": "could not add column \"{{column}}\" because of ambiguity", + "db.messages.exec.error-column-not-found-name": "could not find column \"{{column}}\" in schema {{schema}}", + "db.messages.exec.error-column-not-found-index": "column index \"{{column}}\" is out of range in schema {{schema}}; index starts at 1", + "db.messages.exec.error-column-ambiguous": "column \"{{column}}\" is ambiguous in {{schema}}", + "db.messages.exec.error-column-index-out-of-range": "column index \"{{column}}\" is out of range in {{schema}}; index starts at 1", + "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "could not set relation alias \"{{alias}}\" because of ambiguity", + "db.messages.exec.error-could-not-rename-ambiguity": "could not set new name \"{{newName}}\" for \"{{oldName}}\" because of ambiguity in {{schema}}", + "db.messages.exec.error-schema-a-not-part-of-schema-b": "schema {{schemaA}} is not part of {{schemaB}}", + "db.messages.exec.error-schemas-not-unifiable": "schemas are not unifiable: types are different or size is different: {{schemaA}} and {{schemaB}}", + "db.messages.exec.error-column-not-in-both-schemas": "column \"{{column}}\" can not be found in both schemas of join", + "db.messages.exec.error-condition-must-be-boolean": "condition must be a boolean expression", + "db.messages.exec.error-func-not-defined-for-column-type": "{{func}} not defined for type {{colType}}", + "db.messages.exec.error-join-would-produce-non-unique-columns": "join would result in non unique column names {{conflicts}}", + "db.messages.exec.error-no-columns-match-alias-star": "no columns match \"{{alias}}.*\"", + "db.messages.exec.error-datatype-not-specified-for-col": "datatype for column {{index}} (\"{{column}}\") is not specified", + "db.messages.exec.error-invalid-projection-error": "invalid projection \"{{argument}}\": {{error}}", + "db.messages.exec.error-function-expects-type": "function \"{{func}}\" expects arguments of type \"{{expected}}\" but \"{{given}}\" given", + "db.messages.exec.error-could-not-compare-different-types": "could not compare value if types are different: {{typeA}} != {{typeB}}", + "db.messages.exec.error-function-expects-arguments-of-same-type": "{{func}} expects all arguments to be of the same type", + "db.messages.exec.error-case-when-condition-must-be-boolean": "the condition of a CASE WHEN must be of type boolean", + "db.messages.exec.error-case-when-expects-results-of-same-type": "CASE WHEN condition THEN result END expects all results to be of the same type", + "db.messages.exec.error-invalid-date-format": "\"{{str}}\" is not a valid date; expected format: YYYY-MM-DD", + "db.messages.translate.error-relation-not-found": "could not find relation \"{{name}}\"", + "db.messages.translate.warning-distinct-missing": "DISTINCT is missing", + "db.messages.translate.warning-ignored-all-on-set-operators": "ignored ALL on set operation", + "db.messages.translate.error-variable-name-conflict": "name conflict: relation name \"{{name}}\" already exists", + "db.messages.translate.error-variable-cyclic-usage": "cyclic usage of variable \"{{name}}\" detected", + "editor.codemirror-placeholder": "your query goes here ...\n\nkeyboard shortcuts:\n\texecute statement: [CTRL]+[RETURN]\n\texecute selection: [CTRL]+[SHIFT]+[RETURN]\n\tautocomplete: [CTRL]+[SPACE]\n", + "editor.alert-message-headers.success": "Success", + "editor.alert-message-headers.info": "Info", + "editor.alert-message-headers.warning": "Warning", + "editor.alert-message-headers.error": "Error", + "editor.inline-relation-editor.button-ok": "ok", + "editor.inline-relation-editor.button-cancel": "cancel", + "editor.inline-relation-editor.placeholder-column-name-and-types": "columnName:type", + "editor.inline-relation-editor.enter-your-data": "please enter your data", + "editor.inline-relation-editor.error-column-name-missing": "column name missing in column {{index}}", + "editor.inline-relation-editor.error-wrong-quoted-string": "string must not contain single and double quotes", + "editor.error-no-query-found": "no query found", + "editor.pegjs-error.or": "or", + "editor.pegjs-error.no-input-found": "no input found", + "editor.pegjs-error.end-of-input": "end of input", + "editor.pegjs-error.expected-found": "Option 1: Expected {{expected}} but {{found}} found. Option 2: Whitespace required before opening parenthesis '(' of relationname.", + "editor.error-at-line-x": "at line {{line}}", + "calc.messages.error-query-missing": "no query found", + "calc.messages.error-query-missing-assignments-found": "only assignments found; query is missing Help - Assignments", + "calc.messages.gist-load-success": "gist loaded successfully", + "calc.menu.headline": "load a Dataset", + "calc.menu.datasets": "Datasets", + "calc.menu.load-gist-headline": "Load dataset stored in a gist", + "calc.menu.load-gist-button": "load", + "calc.menu.load-gist-insert-placeholder": "gist ID", + "calc.menu.recently-used": "Recently used gists", + "calc.menu.create-own-dataset-headline": "Create your own Dataset", + "calc.menu.create-own-dataset-text": "You can create your own dataset and share it with others. Learn more about it in the Maintainer Tutorial", + "calc.menu.create-own-dataset-text-link": "Maintainer Tutorial", + "calc.menu.create-own-dataset-button-new": "create new Dataset", + "calc.menu.create-own-dataset-button-modify": "modify current Dataset", + "calc.navigation.take-a-tour": "Take a Tour", + "calc.navigation.feedback": "Feedback", + "calc.navigation.help": "Help", + "calc.navigation.calc": "Calculate", + "calc.navigation.language": "Language", + "calc.maintainer-groups.misc": "Miscellaneous", + "calc.maintainer-groups.temp": "Temporary", + "calc.maintainer-groups.uibk": "University of Innsbruck", + "calc.maintainer-groups.karlsruhe": "Karlsruhe University of Applied Sciences", + "calc.maintainer-groups.saarland": "University of Saarland", + "calc.maintainer-groups.hsd": "University of Applied Sciences D\u00fcsseldorf", + "calc.editors.button-history": "history", + "calc.editors.insert-relation-title": "Insert", + "calc.editors.insert-relation-tooltip": "Insert relation or column names", + "calc.editors.group.tab-name": "Group Editor", + "calc.editors.group.tab-name-short": "GE", + "calc.editors.group.toolbar.import-sql": "import SQL-dump", + "calc.editors.group.toolbar.import-sql-content": "import SQL-dump", + "calc.editors.group.toolbar.add-new-relation": "add new relation", + "calc.editors.group.toolbar.add-new-relation-content": "open relation editor", + "calc.editors.group.button-download": "download", + "calc.editors.group.button-exec": "preview", + "calc.editors.group.button-use": "use Group in editor", + "calc.editors.group.button-use_plural": "use first Group in editor", + "calc.editors.group.sql-import-group-name-placeholder": "Name of the group (imported from SQL)", + "calc.editors.group.new-group-example-group": "-- this is an example\n\ngroup: nameOfTheNewGroup \n\n\nA = {\n\ta:string, b:number\n\texample, 42\n}", + "calc.editors.group.modal-sqldump.modal-title": "Import SQL-Dump", + "calc.editors.group.modal-sqldump.button-close": "Close", + "calc.editors.group.modal-sqldump.button-cancel": "cancel", + "calc.editors.group.modal-sqldump.button-import-sql": "import SQL", + "calc.editors.group.modal-sqldump.description": "Put your SQL-Dump here to create a group.", + "calc.editors.ra.tab-name": "Relational Algebra", + "calc.editors.ra.tab-name-short": "RelAlg", + "calc.editors.ra.button-execute-query": "execute query", + "calc.editors.ra.button-execute-selection": "execute selection", + "calc.editors.ra.button-download": "download", + "calc.editors.ra.button-download-csv": "Result (CSV)", + "calc.editors.ra.button-download-jpg": "Result (JPG)", + "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.toolbar.projection": "projection", + "calc.editors.ra.toolbar.projection-content": "π a, b ( A )\n
pi a, b A", + "calc.editors.ra.toolbar.selection": "selection", + "calc.editors.ra.toolbar.selection-content": "σ a < b \u2227 b \u2260 c ( A )\n
sigma a < b and b != c A", + "calc.editors.ra.toolbar.rename": "rename relation / rename columns", + "calc.editors.ra.toolbar.rename-content": "
σ x.a > 1 ( ρ x ( A ) )
\n
σ A.y > 2 ( rho y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.right-arrow": "rename columns operator", + "calc.editors.ra.toolbar.right-arrow-content": "
σ A.y > 2 ( ρ a\u2192y ( A ) )
", + "calc.editors.ra.toolbar.rename-columns-operator": "rename columns operator", + "calc.editors.ra.toolbar.rename-columns-operator-content": "
σ A.y > 2 ( ρ y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.orderBy": "order by", + "calc.editors.ra.toolbar.orderBy-content": "
τ a asc, [2] desc ( A )
tau a asc, [2] desc ( A )
", + "calc.editors.ra.toolbar.groupBy": "group by", + "calc.editors.ra.toolbar.groupBy-content": "
γ a, b; count(c)\u2192c ( A )
\n
gamma count(a)->x, sum(b)->y ( A )
", + "calc.editors.ra.toolbar.and": "and", + "calc.editors.ra.toolbar.and-content": "
σ a < b \u2227 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.xor": "xor", + "calc.editors.ra.toolbar.xor-content": "
σ a < b \u2295 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.or": "or", + "calc.editors.ra.toolbar.or-content": "
σ a < b \u2228 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.not": "not", + "calc.editors.ra.toolbar.not-content": "
&sigma", + "calc.editors.ra.toolbar.equals": "equals", + "calc.editors.ra.toolbar.equals-content": "
&sigma", + "calc.editors.ra.toolbar.not-equals": "not equals", + "calc.editors.ra.toolbar.not-equals-content": "
&sigma", + "calc.editors.ra.toolbar.greater-or-equals": "greater or equals", + "calc.editors.ra.toolbar.greater-or-equals-content": "
&sigma", + "calc.editors.ra.toolbar.lesser-or-equals": "lesser or equals", + "calc.editors.ra.toolbar.lesser-or-equals-content": "
&sigma", + "calc.editors.ra.toolbar.intersect": "intersect", + "calc.editors.ra.toolbar.intersect-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.union": "union", + "calc.editors.ra.toolbar.union-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.division": "division", + "calc.editors.ra.toolbar.division-content": "
( A ) \u00f7 ( B )
", + "calc.editors.ra.toolbar.subtraction": "subtraction", + "calc.editors.ra.toolbar.subtraction-content": "
( A ) - ( B )
\n
( A ) \n ( B )
", + "calc.editors.ra.toolbar.cross-join": "cross join", + "calc.editors.ra.toolbar.cross-join-content": "
( A ) \u2a2f ( B )
", + "calc.editors.ra.toolbar.natural-join": "natural join / \u03b8-join", + "calc.editors.ra.toolbar.natural-join-content": "
( A ) \u22c8 ( B )
\n
( A ) \u22c8 A.a \u2265 B.a ( B )
", + "calc.editors.ra.toolbar.left-outer-join": "left outer join", + "calc.editors.ra.toolbar.left-outer-join-content": "
( A ) \u27d5 ( B )
\n
( A ) \u27d5 A.a < B.a ( B )
\n", + "calc.editors.ra.toolbar.right-outer-join": "right outer join", + "calc.editors.ra.toolbar.right-outer-join-content": "
( A ) \u27d6 ( B )
\n
( A ) \u27d6 A.a < B.a ( B )
\n", + "calc.editors.ra.toolbar.full-outer-join": "full outer join", + "calc.editors.ra.toolbar.full-outer-join-content": "
( A ) \u27d7 ( B )
\n
( A ) \u27d7 A.a != B.a ( B )
", + "calc.editors.ra.toolbar.left-semi-join": "left semi join", + "calc.editors.ra.toolbar.left-semi-join-content": "
( A ) \u22c9 ( B )
", + "calc.editors.ra.toolbar.right-semi-join": "right semi join", + "calc.editors.ra.toolbar.right-semi-join-content": "
( A ) \u22ca ( B )
", + "calc.editors.ra.toolbar.anti-join": "anti join", + "calc.editors.ra.toolbar.anti-join-content": "
( A ) \u25b7 ( B )
", + "calc.editors.ra.toolbar.assignment": "assignment", + "calc.editors.ra.toolbar.assignment-content": "
X = pi a ( A )\n
Y = pi b ( b )\n
( X ) ( Y )
", + "calc.editors.ra.toolbar.single-line-comment": "single-line comment", + "calc.editors.ra.toolbar.single-line-comment-content": "π a, b A -- useful comment", + "calc.editors.ra.toolbar.multi-line-comment": "multi-line comment", + "calc.editors.ra.toolbar.multi-line-comment-content": "/* this is a very,
very long comment */

π a, b A", + "calc.editors.ra.toolbar.inline-relation": "inline-relation", + "calc.editors.ra.toolbar.inline-relation-content": "σ a = 'test' ({
a:string, b:number, X.c:date
a, 1, 1970-01-01
}
)", + "calc.editors.ra.toolbar.inline-relation-editor": "inline-relation (editor)", + "calc.editors.ra.toolbar.inline-relation-editor-content": "create a new inline-relation using a built in editor", + "calc.editors.ra.toolbar.insert-date": "insert date", + "calc.editors.ra.toolbar.insert-date-content": "σ a < date('1970-01-01') ( A )", + "calc.editors.ra.toolbar.autoreplace-operators.title": "operator replacement", + "calc.editors.ra.toolbar.autoreplace-operators.header": "automatically replace operators", + "calc.editors.ra.toolbar.autoreplace-operators.none": "no replacement", + "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "pi => \u03c0", + "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "\u03c0 => pi", + "calc.editors.sql.tab-name": "SQL", + "calc.editors.sql.tab-name-short": "SQL", + "calc.editors.sql.button-execute-query": "execute query", + "calc.editors.sql.button-execute-selection": "execute selection", + "calc.editors.sql.button-download": "download", + "calc.editors.sql.toolbar.select": "select clause", + "calc.editors.sql.toolbar.select-content": "

SELECT * FROM A

SELECT a, A.b, A.c FROM A
", + "calc.editors.sql.toolbar.from": "from clause", + "calc.editors.sql.toolbar.from-content": "
SELECT *
FROM A, B as b
INNER JOIN C NATURAL
", + "calc.editors.sql.toolbar.where": "where clause", + "calc.editors.sql.toolbar.where-content": "SELECT * FROM A, B
where A.a = B.a or false", + "calc.editors.sql.toolbar.group-by": "group by clause", + "calc.editors.sql.toolbar.group-by-content": "SELECT a, COUNT(b) as num
FROM A
GROUP BY a", + "calc.editors.sql.toolbar.having": "having clause", + "calc.editors.sql.toolbar.having-content": "SELECT a, SUM(b) as sum
FROM A
GROUP BY a
having sum > 10", + "calc.editors.sql.toolbar.order-by": "order by clause", + "calc.editors.sql.toolbar.order-by-content": "

SELECT * FROM A ORDER BY a asc, b desc

SELECT * FROM A ORDER BY 1, 2, 3
", + "calc.editors.sql.toolbar.limit": "limit clause", + "calc.editors.sql.toolbar.limit-content": "SELECT * FROM A
LIMIT 10 OFFSET 0", + "calc.editors.sql.toolbar.insert-date": "insert date", + "calc.editors.sql.toolbar.insert-date-content": "select * from A\nwhere a < date(\"1970-01-01\")", + "calc.result.modal.title": "Result", + "calc.result.modal.close": "Close", + "calc.editors.ra.inline-editor.title": "Relation Editor", + "calc.editors.ra.inline-editor.button-download-csv": "Result", + "calc.editors.ra.inline-editor.button-upload-csv": "Upload CSV", + "calc.editors.ra.inline-editor.button-cancel": "Cancel", + "calc.editors.ra.inline-editor.button-ok": "Ok", + "calc.editors.ra.inline-editor.row-name": "Name", + "calc.editors.ra.inline-editor.row-type": "Type", + "calc.editors.ra.inline-editor.input-relation-name": "Relation Name", + "calc.navigation.imprint": "Imprint", "db.messages.parser.error-duplicate-variable": "duplicate variable name: {{name}}", "db.messages.parser.error-invalid-date-format": "\"{{str}}\" is not a valid date; expected format: YYYY-MM-DD", "db.messages.parser.error-group-duplicate-header": "duplicate header {{name}}", diff --git a/src/locales/es.json b/src/locales/es.json index 50f807a8..c1e29a5f 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1,4 +1,223 @@ { + "db.messages.parser.error-duplicate-variable": "nombre de variable duplicado: {{name}}", + "db.messages.parser.error-invalid-date-format": "\"{{str}}\" no es una fecha v\u00e1lida; formato esperado: YYYY-MM-DD", + "db.messages.parser.error-group-duplicate-header": "header duplicado {{name}}", + "db.messages.parser.error-group-unknown-header": "header desconocido {{name}}", + "db.messages.parser.error-group-header-name-missing": "el nombre del grupo no se ha encontrado (group: ....)", + "db.messages.parser.error-group-header-name-empty": "el nombre del grupo debe ser rellenado", + "db.messages.parser.error-group-non-unique-attribute": "atributo no \u00fanico {{name}} en columna {{index}}", + "db.messages.parser.error-group-non-unique-group-name": "El nombre del grupo no es \u00fanico.", + "db.messages.parser.error-sql-string-use-single-quotes": "utiliza comillas simples para cadenas de caracteres", + "db.messages.parser.error-sql-invalid-relation-name": "\"{{str}}\" no debe ser utilizado como nombre de relacion", + "db.messages.parser.error-sql-invalid-column-name": "\"{{str}}\" no debe ser utilizado como nombre de columna", + "db.messages.parser.error-sql-group-by-missing": "group by no se encuentra", + "db.messages.parser.error-sql-having-without-group-by": "se ha encontrado pero no se encuentra \"group by\" \u00f3 agregaci\u00f3n", + "db.messages.parser.error-sql-negative-limit": "el l\u00edmite dado debe ser >= 0", + "db.messages.parser.error-sqldump-invalid-column-number": "n\u00famero inv\u00e1lido de columnas en l\u00ednea {{line}}", + "db.messages.parser.error-sqldump-invalid-type": "tipo inv\u00e1lido en l\u00ednea {{line}}", + "db.messages.parser.error-sqldump-insert-wrong-number-columns": "n\u00famero de valores != n\u00famero de columnas", + "db.messages.parser.error-valueexpr-like-operand-no-string": "operando derecho de LIKE debe ser una cadena literal", + "db.messages.exec.error-column-not-unique": "no se pude agregar columna \"{{column}}\" por ambiguedad", + "db.messages.exec.error-column-not-found-name": "no se pude encontrar columna \"{{column}}\" en esquema {{schema}}", + "db.messages.exec.error-column-not-found-index": "\u00edndice de columna \"{{column}}\" est\u00e1 fuera de rango en equema {{schema}}; index starts at 1", + "db.messages.exec.error-column-ambiguous": "columna \"{{column}}\" es ambigua en esquema {{schema}}", + "db.messages.exec.error-column-index-out-of-range": "\u00edndice de columna \"{{column}}\" est\u00e1 fuera de rango en equema {{schema}}; \u00edndice comienza en 1", + "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "no se pudo establecer relaci\u00f3n alias \"{{alias}}\" por ambiguedad", + "db.messages.exec.error-could-not-rename-ambiguity": "no se pudo establecer nuevo nombre \"{{newName}}\" para \"{{oldName}}\" por ambiguedad en el equema {{schema}}", + "db.messages.exec.error-schema-a-not-part-of-schema-b": "esquema {{schemaA}} no es parte de {{schemaB}}", + "db.messages.exec.error-schemas-not-unifiable": "esquemas no son unificables: los tipos son diferentes \u00f3 los tama\u00f1o son diferentes: {{schemaA}} y {{schemaB}}", + "db.messages.exec.error-column-not-in-both-schemas": "columna \"{{column}}\" no se puede encontrar en ambos esquemas del join", + "db.messages.exec.error-condition-must-be-boolean": "condici\u00f3n debe ser una expresi\u00f3n booleana", + "db.messages.exec.error-func-not-defined-for-column-type": "{{func}} no est\u00e1 definido para {{colType}}", + "db.messages.exec.error-join-would-produce-non-unique-columns": "Join w\u00fcrde nicht eindeutige Spaltennamen erzeugen", + "db.messages.exec.error-no-columns-match-alias-star": " las siguientes columnas aparecen en ambas relaciones: {{conflicts}}", + "db.messages.exec.error-datatype-not-specified-for-col": "tipo de dato para columna {{index}} (\"{{column}}\") no est\u00e1 especificado", + "db.messages.exec.error-invalid-projection-error": "proyecci\u00f3n inv\u00e1lida \"{{argument}}\": {{error}}", + "db.messages.exec.error-function-expects-type": "funci\u00f3n \"{{func}}\" espera argumentos de tipo \"{{expected}}\" pero \"{{given}}\" fue dado", + "db.messages.exec.error-could-not-compare-different-types": "no se pudo comparar valor si tipos son diferentes: {{typeA}} != {{typeB}}", + "db.messages.exec.error-function-expects-arguments-of-same-type": "{{func}} espera que todos los argumentos sean del mismo tipo", + "db.messages.exec.error-case-when-condition-must-be-boolean": "la condici\u00f3n de un CASE WHEN debe ser de tipo booleano", + "db.messages.exec.error-case-when-expects-results-of-same-type": "CASE WHEN condition THEN result END espera todos results ser del mismo tipo", + "db.messages.exec.error-invalid-date-format": "\"{{str}}\" no es una fecha v\u00e1lido; formato esperado: YYYY-MM-DD", + "db.messages.translate.error-relation-not-found": "no se pudo encontrar relaci\u00f3n \"{{name}}\"", + "db.messages.translate.warning-distinct-missing": "DISTINCT fehlt", + "db.messages.translate.warning-ignored-all-on-set-operators": "TODOS los operadores de cantidad fueron ignorados", + "db.messages.translate.error-variable-name-conflict": "conflicto de nombre: nombre de relaci\u00f3n \"{{name}}\" ya existe", + "db.messages.translate.error-variable-cyclic-usage": "uso de variable c\u00edclico \"{{name}}\" detectado", + "editor.codemirror-placeholder": "tu consulta va aqu\u00ed ...\n\natajos de teclado:\n\tejecutar declaraci\u00f3n: [CTRL]+[RETURN]\n\ttejecutar selecci\u00f3n: [CTRL]+[SHIFT]+[RETURN]\n\tautocompletar: [CTRL]+[SPACE]\n", + "editor.alert-message-headers.success": "\u00c9xito", + "editor.alert-message-headers.info": "Info", + "editor.alert-message-headers.warning": "Advertencia", + "editor.alert-message-headers.error": "Error", + "editor.inline-relation-editor.button-ok": "ok", + "editor.inline-relation-editor.button-cancel": "cancelar", + "editor.inline-relation-editor.placeholder-column-name-and-types": "nombreColumna:tipo", + "editor.inline-relation-editor.enter-your-data": "por favor ingrese los datos", + "editor.inline-relation-editor.error-column-name-missing": "nombre de columna ausente en columna {{index}}", + "editor.inline-relation-editor.error-wrong-quoted-string": "cadena de caracteres no debe contener comillas simples y dobles", + "editor.error-no-query-found": "no se encontr\u00f3 la consulta", + "editor.pegjs-error.or": "\u00f3", + "editor.pegjs-error.no-input-found": "no se encontr\u00f3 la entrada", + "editor.pegjs-error.end-of-input": "fin de entrada", + "editor.pegjs-error.expected-found": "Opci\u00f3n 1: Se esperaba {{expected}} pero se encontr\u00f3 {{found}} . Opti\u00f3n 2: Se requiere un espacio en blanco antes de abrir el par\u00e9ntesis '(' de 'relationName'.", + "editor.error-at-line-x": "en la l\u00ednea {{line}}", + "calc.messages.error-query-missing": "no se encontr\u00f3 la consulta", + "calc.messages.error-query-missing-assignments-found": "solo se encontraron asignaciones; a la consulta le falta Help - Assignments", + "calc.messages.gist-load-success": "gist fue cargado con \u00e9xito", + "calc.menu.headline": "cargar un Dataset", + "calc.menu.datasets": "Datasets", + "calc.menu.load-gist-headline": "cargar dataset guardado en un gist", + "calc.menu.load-gist-button": "cargar", + "calc.menu.load-gist-insert-placeholder": "ID de gist", + "calc.menu.recently-used": "Gists utilizados recientemente", + "calc.menu.create-own-dataset-headline": "Crear tu propio Dataset", + "calc.menu.create-own-dataset-text": "Puedes crear tu propio dataset y compartirlo con otras personas. \nAprende m\u00e1s acerca de \u00e9sto en Maintainer Tutorial", + "calc.menu.create-own-dataset-text-link": "Tutorial de mantenimiento (en)", + "calc.menu.create-own-dataset-button-new": "crear nuevo Dataset", + "calc.menu.create-own-dataset-button-modify": "modificar Dataset actual", + "calc.navigation.take-a-tour": "Haz un recorrido", + "calc.navigation.feedback": "Feedback", + "calc.navigation.help": "Ayuda (en)", + "calc.navigation.calc": "Calculadora", + "calc.navigation.language": "Lenguaje", + "calc.maintainer-groups.misc": "Miscel\u00e1neo", + "calc.maintainer-groups.temp": "Temporal", + "calc.maintainer-groups.uibk": "Universidad de Innsbruck", + "calc.maintainer-groups.karlsruhe": "Universidad de Ciencias Aplicadas de Karlsruhe", + "calc.maintainer-groups.saarland": "Universidad de Saarland", + "calc.maintainer-groups.hsd": "Universidad de D\u00fcsseldorf", + "calc.editors.button-history": "historia", + "calc.editors.insert-relation-title": "Insertar", + "calc.editors.insert-relation-tooltip": "Insertar nombres de relaciones o columnas", + "calc.editors.group.tab-name": "Editor de Grupo", + "calc.editors.group.tab-name-short": "EG", + "calc.editors.group.toolbar.import-sql": "importar SQL-dump", + "calc.editors.group.toolbar.import-sql-content": "importar SQL-dump", + "calc.editors.group.toolbar.add-new-relation": "agregar nueva relaci\u00f3n", + "calc.editors.group.toolbar.add-new-relation-content": "abrir editor de relaciones", + "calc.editors.group.button-download": "Descargar", + "calc.editors.group.button-exec": "vista previa", + "calc.editors.group.button-use": "utilizar Grupo en editor", + "calc.editors.group.button-use_plural": "utilizar Grupos en editor", + "calc.editors.group.sql-import-group-name-placeholder": "Nombre del grupo (importado de SQL)", + "calc.editors.group.new-group-example-group": "-- \u00e9ste es un ejemplo\n\ngroup: nombreDeNuevoGrupo \n\n\nA = {\n\ta:string, b:number\n\tejemplo, 42\n}", + "calc.editors.group.modal-sqldump.modal-title": "Importar SQL-Dump", + "calc.editors.group.modal-sqldump.button-close": "Cerrar", + "calc.editors.group.modal-sqldump.button-cancel": "cancelar", + "calc.editors.group.modal-sqldump.button-import-sql": "importar SQL", + "calc.editors.group.modal-sqldump.description": "Ponga su SQL-Dump aqu\u00ed para crear un grupo.", + "calc.editors.ra.tab-name": "\u00c1lgebra Relacional", + "calc.editors.ra.tab-name-short": "\u00c1lgRel", + "calc.editors.ra.button-execute-query": "executar consulta", + "calc.editors.ra.button-execute-selection": "executar selecci\u00f3n", + "calc.editors.ra.button-download": "descargar", + "calc.editors.ra.button-download-csv": "Resultado (CSV)", + "calc.editors.ra.button-download-jpg": "Resultado (JPG)", + "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.toolbar.projection": "proyecci\u00f3n", + "calc.editors.ra.toolbar.projection-content": "π a, b ( A )\n
pi a, b A", + "calc.editors.ra.toolbar.selection": "selecci\u00f3n", + "calc.editors.ra.toolbar.selection-content": "σ a < b \u2227 b \u2260 c ( A )\n
sigma a < b and b != c A", + "calc.editors.ra.toolbar.rename": "renombrar relaci\u00f3n / renombrar columnas", + "calc.editors.ra.toolbar.rename-content": "
σ x.a > 1 ( ρ x ( A ) )
\n
σ A.y > 2 ( rho y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.right-arrow": "renombrar operador de columnas", + "calc.editors.ra.toolbar.right-arrow-content": "
σ A.y > 2 ( ρ a\u2192y ( A ) )
", + "calc.editors.ra.toolbar.rename-columns-operator": "renombrar operador de columnas", + "calc.editors.ra.toolbar.rename-columns-operator-content": "
σ A.y > 2 ( ρ y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.orderBy": "ordenar por", + "calc.editors.ra.toolbar.orderBy-content": "
τ a asc, [2] desc ( A )
tau a asc, [2] desc ( A )
", + "calc.editors.ra.toolbar.groupBy": "agrupar por", + "calc.editors.ra.toolbar.groupBy-content": "
γ a, b; count(c)\u2192c ( A )
\n
gamma count(a)->x, sum(b)->y ( A )
", + "calc.editors.ra.toolbar.and": "y", + "calc.editors.ra.toolbar.and-content": "
σ a < b \u2227 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.xor": "xor", + "calc.editors.ra.toolbar.xor-content": "
σ a < b \u2295 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.or": "\u00f3", + "calc.editors.ra.toolbar.or-content": "
σ a < b \u2228 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.not": "no", + "calc.editors.ra.toolbar.not-content": "
&sigma", + "calc.editors.ra.toolbar.equals": "igual", + "calc.editors.ra.toolbar.equals-content": "
&sigma", + "calc.editors.ra.toolbar.not-equals": "no es igual", + "calc.editors.ra.toolbar.not-equals-content": "
&sigma", + "calc.editors.ra.toolbar.greater-or-equals": "mayor \u00f3 igual", + "calc.editors.ra.toolbar.greater-or-equals-content": "
&sigma", + "calc.editors.ra.toolbar.lesser-or-equals": "menor \u00f3 igual", + "calc.editors.ra.toolbar.lesser-or-equals-content": "
&sigma", + "calc.editors.ra.toolbar.intersect": "intersecta", + "calc.editors.ra.toolbar.intersect-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.union": "uni\u00f3n", + "calc.editors.ra.toolbar.union-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.division": "divisi\u00f3n", + "calc.editors.ra.toolbar.division-content": "
( A ) \u00f7 ( B )
", + "calc.editors.ra.toolbar.subtraction": "resta", + "calc.editors.ra.toolbar.subtraction-content": "
( A ) - ( B )
\n
( A ) \\ ( B )
\n", + "calc.editors.ra.toolbar.cross-join": "cross join (cruzado)", + "calc.editors.ra.toolbar.cross-join-content": "
( A ) \u2a2f ( B )
", + "calc.editors.ra.toolbar.natural-join": "natural join / \u03b8-join", + "calc.editors.ra.toolbar.natural-join-content": "
( A ) \u22c8 ( B )
\n
( A ) \u22c8 A.a \u2265 B.a ( B )
", + "calc.editors.ra.toolbar.left-outer-join": "left outer join", + "calc.editors.ra.toolbar.left-outer-join-content": "
( A ) \u27d5 ( B )
\n
( A ) \u27d5 A.a < B.a ( B )
", + "calc.editors.ra.toolbar.right-outer-join": "right outer join", + "calc.editors.ra.toolbar.right-outer-join-content": "
( A ) \u27d6 ( B )
\n
( A ) \u27d6 A.a < B.a ( B )
", + "calc.editors.ra.toolbar.full-outer-join": "full outer join", + "calc.editors.ra.toolbar.full-outer-join-content": "
( A ) \u27d7 ( B )
\n
( A ) \u27d7 A.a != B.a ( B )
", + "calc.editors.ra.toolbar.left-semi-join": "left semi join", + "calc.editors.ra.toolbar.left-semi-join-content": "
( A ) \u22c9 ( B )
", + "calc.editors.ra.toolbar.right-semi-join": "right semi join", + "calc.editors.ra.toolbar.right-semi-join-content": "
( A ) \u22ca ( B )
", + "calc.editors.ra.toolbar.anti-join": "anti join", + "calc.editors.ra.toolbar.anti-join-content": "
( A ) \u25b7 ( B )
", + "calc.editors.ra.toolbar.assignment": "asignaci\u00f3n", + "calc.editors.ra.toolbar.assignment-content": "
X = pi a ( A )\n
Y = pi b ( b )\n
( X ) ( Y )
", + "calc.editors.ra.toolbar.single-line-comment": "comentario de una l\u00ednea", + "calc.editors.ra.toolbar.single-line-comment-content": "π a, b A -- useful comment", + "calc.editors.ra.toolbar.multi-line-comment": "comentario de m\u00faltiples l\u00edneas", + "calc.editors.ra.toolbar.multi-line-comment-content": "/* this is a very,
very long comment */

π a, b A", + "calc.editors.ra.toolbar.inline-relation": "inline-relation", + "calc.editors.ra.toolbar.inline-relation-content": "σ a = 'test' ({
a:string, b:number, X.c:date
a, 1, 1970-01-01
}
)", + "calc.editors.ra.toolbar.inline-relation-editor": "inline-relation (editor)", + "calc.editors.ra.toolbar.inline-relation-editor-content": "crear nuevo inline-relation utilizando editor incorporado", + "calc.editors.ra.toolbar.insert-date": "insertar fecha", + "calc.editors.ra.toolbar.insert-date-content": "", + "calc.editors.ra.toolbar.autoreplace-operators.title": "", + "calc.editors.ra.toolbar.autoreplace-operators.header": "", + "calc.editors.ra.toolbar.autoreplace-operators.none": "", + "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "", + "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "", + "calc.editors.sql.tab-name": "SQL", + "calc.editors.sql.tab-name-short": "SQL", + "calc.editors.sql.button-execute-query": "ejecutar consulta", + "calc.editors.sql.button-execute-selection": "ejecutar selecci\u00f3n", + "calc.editors.sql.button-download": "descargar", + "calc.editors.sql.toolbar.select": "seleccionar cl\u00e1usula", + "calc.editors.sql.toolbar.select-content": "

SELECT * FROM A

SELECT a, A.b, A.c FROM A
", + "calc.editors.sql.toolbar.from": "cl\u00e1usula from (desde)", + "calc.editors.sql.toolbar.from-content": "
SELECT *
FROM A, B as b
INNER JOIN C NATURAL
", + "calc.editors.sql.toolbar.where": "cl\u00e1usula where (donde)", + "calc.editors.sql.toolbar.where-content": "SELECT * FROM A, B
where A.a = B.a or false", + "calc.editors.sql.toolbar.group-by": "cl\u00e1usula agrupar por", + "calc.editors.sql.toolbar.group-by-content": "SELECT a, COUNT(b) as num
FROM A
GROUP BY a", + "calc.editors.sql.toolbar.having": "teniendo cl\u00e1usula", + "calc.editors.sql.toolbar.having-content": "SELECT a, SUM(b) as sum
FROM A
GROUP BY a
having sum > 10", + "calc.editors.sql.toolbar.order-by": "cl\u00e1usula ordenar por", + "calc.editors.sql.toolbar.order-by-content": "

SELECT * FROM A ORDER BY a asc, b desc

SELECT * FROM A ORDER BY 1, 2, 3
", + "calc.editors.sql.toolbar.limit": "cl\u00e1usula l\u00edmite", + "calc.editors.sql.toolbar.limit-content": "SELECT * FROM A
LIMIT 10 OFFSET 0", + "calc.editors.sql.toolbar.insert-date": "insertar fecha", + "calc.editors.sql.toolbar.insert-date-content": "select * from A\nwhere a < date(\"1970-01-01\")", + "calc.result.modal.title": "Resultado", + "calc.result.modal.close": "Cerrar", + "calc.editors.ra.inline-editor.title": "Editor de relaciones", + "calc.editors.ra.inline-editor.button-download-csv": "Descargar CSV", + "calc.editors.ra.inline-editor.button-upload-csv": "Subir CSV", + "calc.editors.ra.inline-editor.button-cancel": "Cancelar", + "calc.editors.ra.inline-editor.button-ok": "Ok", + "calc.editors.ra.inline-editor.row-name": "Nombre", + "calc.editors.ra.inline-editor.row-type": "Escriba", + "calc.editors.ra.inline-editor.input-relation-name": "Nombre de la relaci\u00f3n", + "calc.navigation.imprint": "Imprimir", + "calc.result.exec.time": "Tiempo de consulta", "db.messages.parser.error-duplicate-variable": "nombre de variable duplicado: {{name}}", "db.messages.parser.error-invalid-date-format": "\"{{str}}\" no es una fecha válida; formato esperado: YYYY-MM-DD", "db.messages.parser.error-group-duplicate-header": "header duplicado {{name}}", @@ -216,4 +435,4 @@ "calc.editors.ra.inline-editor.input-relation-name": "Nombre de la relación", "calc.navigation.imprint": "Imprimir", "calc.result.exec.time": "Tiempo de consulta" - } \ No newline at end of file + } diff --git a/src/locales/kr.json b/src/locales/kr.json index f26484fb..17a5f38b 100644 --- a/src/locales/kr.json +++ b/src/locales/kr.json @@ -1,4 +1,222 @@ { + "db.messages.parser.error-duplicate-variable": "\ubcc0\uc218 \uc774\ub984 \uc911\ubcf5: {{name}}", + "db.messages.parser.error-invalid-date-format": "\"__str__\" \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub0a0\uc9dc; \ud615\uc2dd: YYYY-MM-DD", + "db.messages.parser.error-group-duplicate-header": " \ud5e4\ub354 \uc911\ubcf5: {{name}}", + "db.messages.parser.error-group-unknown-header": "\uc54c \uc218 \uc5c6\ub294 \ud5e4\ub354: {{name}}", + "db.messages.parser.error-group-header-name-missing": "\uadf8\ub8f9 \uc774\ub984\uc774 \uc5c6\uc74c(group: ....)", + "db.messages.parser.error-group-header-name-empty": "\uadf8\ub8f9 \uc774\ub984\uc740 \ube44\uc5b4\uc788\uc73c\uba74 \uc548\ub428", + "db.messages.parser.error-group-non-unique-attribute": "__index__ \uc5f4\uc5d0\uc11c \uace0\uc720\ud558\uc9c0 \uc54a\uc740 \uc18d\uc131 {{name}}", + "db.messages.parser.error-group-non-unique-group-name": "duplicate group name: {{name}}", + "db.messages.parser.error-sql-string-use-single-quotes": "\ubb38\uc790\uc5f4\uc5d0 \uc791\uc740 \ub530\uc74c\ud45c \uc0ac\uc6a9", + "db.messages.parser.error-sql-invalid-relation-name": "\"__str__\"\uc740 \uad00\uacc4 \uc774\ub984\uc73c\ub85c \uc0ac\uc6a9 \ud560 \uc218 \uc5c6\uc74c", + "db.messages.parser.error-sql-invalid-column-name": "\"__str__\"\uc740 \uc5f4 \uc774\ub984\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c", + "db.messages.parser.error-sql-group-by-missing": "group by \uc5c6\uc74c", + "db.messages.parser.error-sql-having-without-group-by": "\"group by\" \ub610\ub294 \uc9d1\uacc4 \uc5c6\uc74c", + "db.messages.parser.error-sql-negative-limit": "0 \uc774\uc0c1\uc774\uc5b4\uc57c \ud568", + "db.messages.parser.error-sqldump-invalid-column-number": "__line__ \uc5d0\uc11c \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc5f4", + "db.messages.parser.error-sqldump-invalid-type": "__line__ \uc5d0\uc11c \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud0c0\uc785", + "db.messages.parser.error-sqldump-insert-wrong-number-columns": "\uac12\uc758 \uc22b\uc790 != \uc5f4\uc758 \uc22b\uc790", + "db.messages.parser.error-valueexpr-like-operand-no-string": "LIKE\uc758 \uc624\ub978\ucabd \ud53c\uc5f0\uc0b0\uc790\ub294 \ubb38\uc790\uc5f4 \ub9ac\ud130\ub7f4\uc774\uc5b4\uc57c \ud568", + "db.messages.exec.error-column-not-unique": "\ubaa8\ud638\uc131 \ub54c\ubb38\uc5d0 \uc5f4 \"__column__\" \uc744 \ucd94\uac00\ud560 \uc218 \uc5c6\uc74c", + "db.messages.exec.error-column-not-found-name": "\uc2a4\ud0a4\ub9c8 __schema__ \uc5d0\uc11c \uc5f4 \"__column__\" \uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c", + "db.messages.exec.error-column-not-found-index": "\uc5f4 \uc778\ub371\uc2a4 \"__column__\" \ub294 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0a8; \uc778\ub371\uc2a4\ub294 1\uc5d0\uc11c \uc2dc\uc791", + "db.messages.exec.error-column-ambiguous": "\uc5f4 \"__column__\" \ub294 \uc2a4\ud0a4\ub9c8 __schema__ \uc5d0\uc11c \ubaa8\ud638\ud568", + "db.messages.exec.error-column-index-out-of-range": "\uc5f4 \uc778\ub371\uc2a4 \"__column__\" \ub294 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0a8; \uc778\ub371\uc2a4\ub294 1\uc5d0\uc11c \uc2dc\uc791", + "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "\ubaa8\ud638\uc131 \ub54c\ubb38\uc5d0 \ub9b4\ub808\uc774\uc158 \uac00\uba85 \"__alias__\"\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c ", + "db.messages.exec.error-could-not-rename-ambiguity": "\uc2a4\ud0a4\ub9c8 __schema__ \uc5d0\uc11c\uc758 \ubaa8\ud638\uc131 \ub54c\ubb38\uc5d0 \"__oldName__\"\uc744 \uc704\ud55c \uc0c8\ub85c\uc6b4 \uc774\ub984 \"__newName__\" \uc744 \uc124\uc815 \ud560 \uc218 \uc5c6\uc74c", + "db.messages.exec.error-schema-a-not-part-of-schema-b": "\uc2a4\ud0a4\ub9c8 __schemaA__ \ub294 __schemaB__ \uc758 \ubd80\ubd84\uc774 \uc544\ub2d8", + "db.messages.exec.error-schemas-not-unifiable": "\uc2a4\ud0a4\ub9c8\ub4e4\uc740 \ud1b5\ud569\ub420 \uc218 \uc5c6\uc74c: \ud0c0\uc785\ub4e4\uc740 \ub2e4\ub974\uac70\ub098 \uc0ac\uc774\uc988\ub4e4\uc774 \ub2e4\ub974\ub2e4: __schemaA__ \uc640 __schemaB__", + "db.messages.exec.error-column-not-in-both-schemas": "\uc5f4 \"__column__\"\uc740 \ub450 \uc2a4\ud0a4\ub9c8\uc758 \uc870\uc778\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc5c6\uc74c", + "db.messages.exec.error-condition-must-be-boolean": "\uc870\uac74\uc740 \ubd88\ub9b0 \ub300\uc218\uc5ec\uc57c\ub9cc \ud568", + "db.messages.exec.error-func-not-defined-for-column-type": "__func_ _\uc740 \ud0c0\uc785 __colType__ \uc744 \uc704\ud574 \uc815\uc758\ub420 \uc218 \uc5c6\uc74c", + "db.messages.exec.error-join-would-produce-non-unique-columns": "\uc870\uc778\uc740 \uace0\uc720\ud558\uc9c0 \uc54a\uc740 \uc5f4 \uc774\ub984\uc5d0\uc11c \uacb0\uacfc\ub97c \ub0c4 \uc870\uc778\uc740 \uace0\uc720\ud558\uc9c0 \uc54a\uc740 \uc5f4 \uc774\ub984\uc5d0\uc11c \uacb0\uacfc\ub97c \ub0c4 \uc774 \uc5f4\ub4e4\uc740 \ub450 \ub9b4\ub808\uc774\uc158 \uc0ac\uc774\uc5d0\uc11c \ub098\ud0c0\ub0a8: __conflicts__", + "db.messages.exec.error-no-columns-match-alias-star": "\"__alias__.*\"\uc640 \uc77c\uce58\ud558\ub294 \uc5f4\uc774 \uc5c6\uc74c", + "db.messages.exec.error-datatype-not-specified-for-col": "\uc5f4 __index__\uc758 \ub370\uc774\ud130 \ud0c0\uc785 (\"__column__\")\uc774 \uad6c\uccb4\ud654\ub418\uc9c0 \uc54a\uc74c", + "db.messages.exec.error-invalid-projection-error": "\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud504\ub85c\uc81d\uc158 \"__argument__\": __error__", + "db.messages.exec.error-function-expects-type": "\ud568\uc218 \"__func__\"\ub294 \uc778\uc790 \ud0c0\uc785 \"__expected__\" \uc73c\ub85c \uae30\ub300\ud558\uc9c0\ub9cc \"__given__\" \uc774 \uc8fc\uc5b4\uc9d0", + "db.messages.exec.error-could-not-compare-different-types": "\ud0c0\uc785\uc774 \ub2e4\ub974\uba74 \ube44\uad50\ud560 \uc218 \uc5c6\uc74c: __typeA__ != __typeB__", + "db.messages.exec.error-function-expects-arguments-of-same-type": "__func__ \ub294 \ubaa8\ub4e0 \uc778\uc790\uac00 \uac19\uc740 \ud0c0\uc785\uc73c\ub85c \uae30\ub300\ud568", + "db.messages.exec.error-case-when-condition-must-be-boolean": "CASE WHEN \uc870\uac74\uc740 \ubd88\ub9b0 \ud0c0\uc785\uc774\uc5b4\uc57c \ud568", + "db.messages.exec.error-case-when-expects-results-of-same-type": "CASE WHEN condition THEN result END\ub294 \ubaa8\ub4e0 \uacb0\uacfc\uac00 \uac19\uc740 \ud0c0\uc785\uc73c\ub85c \uae30\ub300\ud568", + "db.messages.exec.error-invalid-date-format": "\"__str__\" \ub294 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub0a0\uc9dc; \ud615\uc2dd: YYYY-MM-DD", + "db.messages.translate.error-relation-not-found": "\ub9b4\ub808\uc774\uc158 \"{{name}}\"\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c", + "db.messages.translate.warning-distinct-missing": "DISTINCT \uc5c6\uc74c", + "db.messages.translate.warning-ignored-all-on-set-operators": "\uc9d1\ud569 \uc5f0\uc0b0\uc5d0\uc11c \ubb34\uc2dc\ub41c ALL", + "db.messages.translate.error-variable-name-conflict": "\uc774\ub984 \ucda9\ub3cc: \ub9b4\ub808\uc774\uc158 \uc774\ub984 \"{{name}}\" \uc740 \uc774\ubbf8 \uc874\uc7ac\ud568", + "db.messages.translate.error-variable-cyclic-usage": "\ubcc0\uc218 \"{{name}}\"\uc758 \uc21c\ud658 \uc0ac\uc6a9\uc774 \uac10\uc9c0\ub428", + "editor.codemirror-placeholder": "\ucffc\ub9ac\ub294 \uc774\uacf3\uc5d0 \ud45c\uc2dc\ub41c\ub2e4 ...\n\n\ud0a4\ubcf4\ub4dc \ub2e8\ucd95\ud0a4:\n\tstatement \uc2e4\ud589: [CTRL]+[RETURN]\n\tselection \uc2e4\ud589: [CTRL]+[SHIFT]+[RETURN]\n\t\uc790\ub3d9 \uc644\uc131: [CTRL]+[SPACE]", + "editor.alert-message-headers.success": "\uc131\uacf5", + "editor.alert-message-headers.info": "\uc815\ubcf4", + "editor.alert-message-headers.warning": "\uacbd\uace0", + "editor.alert-message-headers.error": " \uc5d0\ub7ec ", + "editor.inline-relation-editor.button-ok": "ok", + "editor.inline-relation-editor.button-cancel": "\ucde8\uc18c", + "editor.inline-relation-editor.placeholder-column-name-and-types": "\uc5f4 \uc774\ub984:\ud0c0\uc785", + "editor.inline-relation-editor.enter-your-data": "\ub370\uc774\ud130\ub97c \uc785\ub825\ud558\ub77c", + "editor.inline-relation-editor.error-column-name-missing": "\uc5f4 \uc774\ub984\uc774 \uc5f4 __index__\uc5d0 \uc5c6\ub2e4", + "editor.inline-relation-editor.error-wrong-quoted-string": "\ubb38\uc790\uc5f4\uc740 \uc791\uc740\ub530\uc74c\ud45c\uc640 \ud070\ub530\uc74c\ud45c\ub97c \ud3ec\ud568\ud560 \uc218 \uc5c6\ub2e4.", + "editor.error-no-query-found": "\ucffc\ub9ac\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub2e4", + "editor.pegjs-error.or": "\ub610\ub294", + "editor.pegjs-error.no-input-found": "\uc785\ub825\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c", + "editor.pegjs-error.end-of-input": "\uc785\ub825\uc758 \ub05d", + "editor.pegjs-error.expected-found": "Option 1: \uc608\uc0c1 \ub41c __expected__\uc774\uc9c0\ub9cc __found__\uc774 \ubc1c\uacac\ub428. Option 2: Whitespace required before opening parenthesis '(' of 'relationName'.", + "editor.error-at-line-x": "__line__ \uc904\uc5d0\uc11c", + "calc.messages.error-query-missing": "\ucffc\ub9ac\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc74c", + "calc.messages.error-query-missing-assignments-found": "\ucffc\ub9ac\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc74c Help - Assignments", + "calc.messages.gist-load-success": "gist \ubd88\ub7ec\uc624\uae30 \uc644\ub8cc", + "calc.menu.headline": "\ub370\uc774\ud130\uc14b \ubd88\ub7ec\uc624\uae30", + "calc.menu.datasets": "\ub370\uc774\ud130\uc14b \ubd88\ub7ec\uc624\uae30", + "calc.menu.load-gist-headline": "gist\uc5d0 \uc800\uc7a5\ub41c \ub370\uc774\ud130\uc14b \ubd88\ub7ec\uc624\uae30", + "calc.menu.load-gist-button": "\ubd88\ub7ec\uc624\uae30", + "calc.menu.load-gist-insert-placeholder": "gist \uc544\uc774\ub514", + "calc.menu.recently-used": "Recently used gists", + "calc.menu.create-own-dataset-headline": "\ub370\uc774\ud130\uc14b \uc0dd\uc131\ud558\uae30", + "calc.menu.create-own-dataset-text": "You can create your own dataset and share it with others. Learn more about it in the Maintainer Tutorial", + "calc.menu.create-own-dataset-text-link": "Maintainer Tutorial", + "calc.menu.create-own-dataset-button-new": "\uc0c8\ub85c\uc6b4 \ub370\uc774\ud130\uc14b \uc0dd\uc131", + "calc.menu.create-own-dataset-button-modify": "\ud604\uc7ac \ub370\uc774\ud130\uc14b \uc218\uc815", + "calc.navigation.take-a-tour": "\ub458\ub7ec\ubcf4\uae30", + "calc.navigation.feedback": "\ud53c\ub4dc\ubc31", + "calc.navigation.help": "\ub3c4\uc6c0\ub9d0", + "calc.navigation.calc": "Calculate", + "calc.navigation.language": "\uc5b8\uc5b4", + "calc.maintainer-groups.misc": "\ub2e4\ub978 \uc885\ub958", + "calc.maintainer-groups.temp": "\uc784\uc2dc", + "calc.maintainer-groups.uibk": "Innsbruck \ub300\ud559\uad50", + "calc.maintainer-groups.karlsruhe": "Karlsruhe \ub300\ud559\uad50", + "calc.maintainer-groups.saarland": "Saarland \ub300\ud559\uad50", + "calc.maintainer-groups.hsd": " D\u00fcsseldorf \ub300\ud559\uad50", + "calc.editors.button-history": "\uae30\ub85d", + "calc.editors.insert-relation-title": "Insert", + "calc.editors.insert-relation-tooltip": "Insert relation or column names", + "calc.editors.group.tab-name": "\uadf8\ub8f9 \uc5d0\ub514\ud130", + "calc.editors.group.tab-name-short": "\uadf8\ub8f9 \uc5d0\ub514\ud130", + "calc.editors.group.toolbar.import-sql": "SQL-\ub364\ud504 \uac00\uc838\uc624\uae30", + "calc.editors.group.toolbar.import-sql-content": "SQL-\ucee8\ud150\ud2b8 \uac00\uc838\uc624\uae30", + "calc.editors.group.toolbar.add-new-relation": "\uc0c8\ub85c\uc6b4 \ub9b4\ub808\uc774\uc158 \ucd94\uac00", + "calc.editors.group.toolbar.add-new-relation-content": "\ub9b4\ub808\uc774\uc158 \uc5d0\ub514\ud130 \uc5f4\uae30", + "calc.editors.group.button-download": "\ub2e4\uc6b4\ub85c\ub4dc", + "calc.editors.group.button-exec": "preview", + "calc.editors.group.button-use": "\uc5d0\ub514\ud130\uc5d0\uc11c \uadf8\ub8f9 \uc0ac\uc6a9\ud558\uae30", + "calc.editors.group.button-use_plural": "\uc5d0\ub514\ud130\uc5d0\uc11c \uc5ec\ub7ec \uadf8\ub8f9 \uc0ac\uc6a9\ud558\uae30", + "calc.editors.group.sql-import-group-name-placeholder": "\uadf8\ub8f9 \uc774\ub984(SQL\ub85c\ubd80\ud130 \ubd88\ub7ec\uc634)", + "calc.editors.group.new-group-example-group": "-- \uc608\uc2dc\uc785\ub2c8\ub2e4\n\n\uadf8\ub8f9: nameOfTheNewGroup \n\n\nA = {\n\ta:string, b:number\n\texample, 42\n}", + "calc.editors.group.modal-sqldump.modal-title": "SQL-Dump \uac00\uc838\uc624\uae30", + "calc.editors.group.modal-sqldump.button-close": "\ub2eb\uae30", + "calc.editors.group.modal-sqldump.button-cancel": "\ucde8\uc18c", + "calc.editors.group.modal-sqldump.button-import-sql": "SQL \uac00\uc838\uc624\uae30", + "calc.editors.group.modal-sqldump.description": "\uadf8\ub8f9\uc744 \uc0dd\uc131\ud558\ub824\uba74 SQL-Dump \uc774\uacf3\uc5d0 \uac00\uc838\uc640\ub77c", + "calc.editors.ra.tab-name": "\uad00\uacc4 \ub300\uc218", + "calc.editors.ra.tab-name-short": "\uad00\uacc4 \ub300\uc218", + "calc.editors.ra.button-execute-query": "\ucffc\ub9ac \uc2e4\ud589", + "calc.editors.ra.button-execute-selection": "\uc140\ub809\uc158 \uc2e4\ud589", + "calc.editors.ra.button-download": "\ub2e4\uc6b4\ub85c\ub4dc", + "calc.editors.ra.button-download-csv": "결과 (CSV)", + "calc.editors.ra.button-download-jpg": "결과 (JPG)", + "calc.editors.ra.button-download-query": "쿼리", + "calc.editors.ra.toolbar.projection": "\ud504\ub85c\uc81d\uc158", + "calc.editors.ra.toolbar.projection-content": "π a, b ( A )\n
pi a, b A", + "calc.editors.ra.toolbar.selection": "\uc140\ub809\uc158", + "calc.editors.ra.toolbar.selection-content": "σ a < b \u2227 b \u2260 c ( A )\n
sigma a < b and b != c A", + "calc.editors.ra.toolbar.rename": "\ub9b4\ub808\uc774\uc158 \uc774\ub984 \ubcc0\uacbd / \uc5f4 \uc774\ub984 \ubcc0\uacbd", + "calc.editors.ra.toolbar.rename-content": "
σ x.a > 1 ( ρ x ( A ) )
\n
σ A.y > 2 ( rho y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.right-arrow": "\uc5f4 \uc5f0\uc0b0\uc790 \ubcc0\uacbd", + "calc.editors.ra.toolbar.right-arrow-content": "
σ A.y > 2 ( ρ a\u2192y ( A ) )
", + "calc.editors.ra.toolbar.rename-columns-operator": "\uc5f4 \uc5f0\uc0b0\uc790 \ubcc0\uacbd", + "calc.editors.ra.toolbar.rename-columns-operator-content": "
σ A.y > 2 ( ρ y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.orderBy": "\uc815\ub82c", + "calc.editors.ra.toolbar.orderBy-content": "
τ a asc, [2] desc ( A )
tau a asc, [2] desc ( A )
", + "calc.editors.ra.toolbar.groupBy": "\uadf8\ub8f9\ud654", + "calc.editors.ra.toolbar.groupBy-content": "
γ a, b; count(c)\u2192c ( A )
\n
gamma count(a)->x, sum(b)->y ( A )
", + "calc.editors.ra.toolbar.and": "\ub17c\ub9ac\uacf1", + "calc.editors.ra.toolbar.and-content": "
σ a < b \u2227 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.xor": "\ubc30\ud0c0\uc801 \ub17c\ub9ac", + "calc.editors.ra.toolbar.xor-content": "
σ a < b \u2295 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.or": "\ub17c\ub9ac\ud569", + "calc.editors.ra.toolbar.or-content": "
σ a < b \u2228 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.not": "\ub17c\ub9ac\uc801 \ubd80\uc815", + "calc.editors.ra.toolbar.not-content": " \u00ac(a < b) ( A )
", + "calc.editors.ra.toolbar.equals": "\ub4f1\ud638", + "calc.editors.ra.toolbar.equals-content": " a = b ( A )
", + "calc.editors.ra.toolbar.not-equals": "\ubd80\ub4f1\ud638", + "calc.editors.ra.toolbar.not-equals-content": " a \u2260 'text' ( A )
", + "calc.editors.ra.toolbar.greater-or-equals": "\ud06c\uac70\ub098 \uac19\ub2e4", + "calc.editors.ra.toolbar.greater-or-equals-content": " a \u2265 42 ( A )
", + "calc.editors.ra.toolbar.lesser-or-equals": "\uc791\uac70\ub098 \uac19\ub2e4", + "calc.editors.ra.toolbar.lesser-or-equals-content": " a \u2264 42 ( A )
", + "calc.editors.ra.toolbar.intersect": "\uad50\uc9d1\ud569", + "calc.editors.ra.toolbar.intersect-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.union": "\ud569\uc9d1\ud569", + "calc.editors.ra.toolbar.union-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.division": "\ub514\ube44\uc804", + "calc.editors.ra.toolbar.division-content": "
( A ) \u00f7 ( B )
", + "calc.editors.ra.toolbar.subtraction": "\ucc28\uc9d1\ud569", + "calc.editors.ra.toolbar.subtraction-content": "
( A ) - ( B )
\n
( A ) \\ ( B )
\n", + "calc.editors.ra.toolbar.cross-join": "\uce74\ub514\uc158 \ud504\ub85c\ub355\ud2b8", + "calc.editors.ra.toolbar.cross-join-content": "
( A ) \u2a2f ( B )
", + "calc.editors.ra.toolbar.natural-join": "\uc790\uc5f0 \uc870\uc778 / \u03b8-\uc870\uc778", + "calc.editors.ra.toolbar.natural-join-content": "
( A ) \u22c8 ( B )
\n
( A ) \u22c8 A.a \u2265 B.a ( B )
", + "calc.editors.ra.toolbar.left-outer-join": "\uc67c\ucabd \uc678\ubd80 \uc870\uc778", + "calc.editors.ra.toolbar.left-outer-join-content": "
( A ) \u27d5 ( B )
\n
( A ) \u27d5 A.a < B.a ( B )
", + "calc.editors.ra.toolbar.right-outer-join": "\uc624\ub978\ucabd \uc678\ubd80 \uc870\uc778", + "calc.editors.ra.toolbar.right-outer-join-content": "
( A ) \u27d6 ( B )
\n
( A ) \u27d6 A.a < B.a ( B )
", + "calc.editors.ra.toolbar.full-outer-join": "\uc644\uc804 \uc678\ubd80 \uc870\uc778", + "calc.editors.ra.toolbar.full-outer-join-content": "
( A ) \u27d7 ( B )
\n
( A ) \u27d7 A.a != B.a ( B )
", + "calc.editors.ra.toolbar.left-semi-join": "\uc67c\ucabd \uc138\ubbf8 \uc870\uc778", + "calc.editors.ra.toolbar.left-semi-join-content": "
( A ) \u22c9 ( B )
", + "calc.editors.ra.toolbar.right-semi-join": "\uc624\ub978\ucabd \uc138\ubbf8 \uc870\uc778", + "calc.editors.ra.toolbar.right-semi-join-content": "
( A ) \u22ca ( B )
", + "calc.editors.ra.toolbar.anti-join": "\uc548\ud2f0 \uc870\uc778", + "calc.editors.ra.toolbar.anti-join-content": "
( A ) \u25b7 ( B )
", + "calc.editors.ra.toolbar.assignment": "\ud560\ub2f9", + "calc.editors.ra.toolbar.assignment-content": "
X = pi a ( A )\n
Y = pi b ( b )\n
( X ) ( Y )
", + "calc.editors.ra.toolbar.single-line-comment": "\ud55c \uc904 \uc8fc\uc11d", + "calc.editors.ra.toolbar.single-line-comment-content": "π a, b A -- useful comment", + "calc.editors.ra.toolbar.multi-line-comment": "\uc5ec\ub7ec \uc904 \uc8fc\uc11d", + "calc.editors.ra.toolbar.multi-line-comment-content": "/* this is a very,
very long comment */

π a, b A", + "calc.editors.ra.toolbar.inline-relation": "\uc778\ub77c\uc778-\ub9b4\ub808\uc774\uc158", + "calc.editors.ra.toolbar.inline-relation-content": "σ a = 'test' ({
a:string, b:number, X.c:date
a, 1, 1970-01-01
}
)", + "calc.editors.ra.toolbar.inline-relation-editor": "\uc778\ub77c\uc778-\ub9b4\ub808\uc774\uc158 (\uc5d0\ub514\ud130)", + "calc.editors.ra.toolbar.inline-relation-editor-content": "create a new inline-relation using a built in editor", + "calc.editors.ra.toolbar.insert-date": "\ub0a0\uc9dc \uc0bd\uc785", + "calc.editors.ra.toolbar.insert-date-content": "σ a < date('1970-01-01') ( A )", + "calc.editors.ra.toolbar.autoreplace-operators.title": "operator replacement", + "calc.editors.ra.toolbar.autoreplace-operators.header": "automatically replace operators", + "calc.editors.ra.toolbar.autoreplace-operators.none": "no replacement", + "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "pi => \u03c0", + "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "\u03c0 => pi", + "calc.editors.sql.tab-name": "SQL", + "calc.editors.sql.tab-name-short": "SQL", + "calc.editors.sql.button-execute-query": "\ucffc\ub9ac \uc2e4\ud589", + "calc.editors.sql.button-execute-selection": "\uc140\ub809\uc158 \uc2e4\ud589", + "calc.editors.sql.button-download": "\ub2e4\uc6b4\ub85c\ub4dc", + "calc.editors.sql.toolbar.select": "select \ubb38", + "calc.editors.sql.toolbar.select-content": "

SELECT * FROM A

SELECT a, A.b, A.c FROM A
", + "calc.editors.sql.toolbar.from": "from \ubb38", + "calc.editors.sql.toolbar.from-content": "
SELECT *
FROM A, B as b
INNER JOIN C NATURAL
", + "calc.editors.sql.toolbar.where": "where \ubb38", + "calc.editors.sql.toolbar.where-content": "SELECT * FROM A, B
where A.a = B.a or false", + "calc.editors.sql.toolbar.group-by": "group by \ubb38", + "calc.editors.sql.toolbar.group-by-content": "SELECT a, COUNT(b) as num
FROM A
GROUP BY a", + "calc.editors.sql.toolbar.having": "having \ubb38", + "calc.editors.sql.toolbar.having-content": "SELECT a, SUM(b) as sum
FROM A
GROUP BY a
having sum > 10", + "calc.editors.sql.toolbar.order-by": "order by \ubb38", + "calc.editors.sql.toolbar.order-by-content": "

SELECT * FROM A ORDER BY a asc, b desc

SELECT * FROM A ORDER BY 1, 2, 3
", + "calc.editors.sql.toolbar.limit": "limit \ubb38", + "calc.editors.sql.toolbar.limit-content": "SELECT * FROM A
LIMIT 10 OFFSET 0", + "calc.editors.sql.toolbar.insert-date": "insert date", + "calc.editors.sql.toolbar.insert-date-content": "select * from A\nwhere a < date(\"1970-01-01\")", + "calc.result.modal.title": "Result", + "calc.result.modal.close": "Close", + "calc.editors.ra.inline-editor.title": "Relation Editor", + "calc.editors.ra.inline-editor.button-download-csv": "Download CSV", + "calc.editors.ra.inline-editor.button-upload-csv": "upload CSV", + "calc.editors.ra.inline-editor.button-cancel": "Cancel", + "calc.editors.ra.inline-editor.button-ok": "Ok", + "calc.editors.ra.inline-editor.row-name": "Name", + "calc.editors.ra.inline-editor.row-type": "Type", + "calc.editors.ra.inline-editor.input-relation-name": "Relation Name", + "calc.navigation.imprint": "Imprint", "db.messages.parser.error-duplicate-variable": "변수 이름 중복: {{name}}", "db.messages.parser.error-invalid-date-format": "\"__str__\" 유효하지 않은 날짜; 형식: YYYY-MM-DD", "db.messages.parser.error-group-duplicate-header": " 헤더 중복: {{name}}", diff --git a/src/locales/languages.csv b/src/locales/languages.csv index 66728a81..2a2ed00e 100644 --- a/src/locales/languages.csv +++ b/src/locales/languages.csv @@ -85,7 +85,7 @@ editor.error-no-query-found,no query found,nenhuma consulta encontrada,keine Abf editor.pegjs-error.or,or,ou,oder,ó,또는 editor.pegjs-error.no-input-found,no input found,nenhuma entrada encontrada,keine Eingabe gefunden,no se encontró la entrada,입력을 찾을 수 없음 editor.pegjs-error.end-of-input,end of input,fim da entrada,Ende der Eingabe,fin de entrada,입력의 끝 -editor.pegjs-error.expected-found,Expected {{expected}} but {{found}} found.,"esperado {{expected}}, mas {{found}} encontrado.",Erwarte {{expected}} aber {{found}} gefunden.,Se esperaba {{expected}} pero se encontró {{found}} .,예상 된 __expected__이지만 __found__이 발견됨. +editor.pegjs-error.expected-found, Option 1: Expected {{expected}} but {{found}} found. Option 2: Whitespace required before opening parenthesis '(' of relationname.,"Opção 1: Esperado {{expected}}, mas {{found}} encontrado. Opção 2: Espaço em branco necessário antes de abrir parênteses '(' de 'relationName'.", Option 1: Erwarte {{expected}} aber {{found}} gefunden. Option 2: Leerzeichen vor der öffnenden Klammer '(' des Relationsnamens erforderlich. , Opción 1: Se esperaba {{expected}} pero se encontró {{found}} . Optión 2: Se requiere un espacio en blanco antes de abrir el paréntesis '(' de 'relationName'., Option 1: 예상 된 __expected__이지만 __found__이 발견됨. Option 2: Whitespace required before opening parenthesis '(' of 'relationName'. editor.error-at-line-x,at line {{line}},na linha {{line}},in Zeile {{line}},en la línea {{line}},__line__ 줄에서 calc.messages.error-query-missing,no query found,nenhuma consulta encontrada,keine Abfrage gefunden,no se encontró la consulta,쿼리를 찾을 수 없음 calc.messages.error-query-missing-assignments-found,"only assignments found; query is missing Help - Assignments","apenas atribuições encontradas; falta a consulta Ajuda - Tarefas ","nur Zuweisungen gefunden; die eigentliche Abfrage fehlt Help - Assignments (en)","solo se encontraron asignaciones; a la consulta le falta Help - Assignments","쿼리를 찾을 수 없음 Help - Assignments" @@ -111,6 +111,7 @@ calc.maintainer-groups.temp,Temporary,Temporário,Ungespeichert,Temporal,임시 calc.maintainer-groups.uibk,University of Innsbruck,University of Innsbruck,Universität Innsbruck,Universidad de Innsbruck,Innsbruck 대학교 calc.maintainer-groups.karlsruhe,Karlsruhe University of Applied Sciences,Universidade de Ciências Aplicadas de Karlsruhe,Hochschule Karlsruhe,Universidad de Ciencias Aplicadas de Karlsruhe,Karlsruhe 대학교 calc.maintainer-groups.saarland,University of Saarland,University of Saarland,Universität Saarland,Universidad de Saarland,Saarland 대학교 +calc.maintainer-groups.hsd,University of Applied Sciences Düsseldorf,Universidade de Ciências Aplicadas de Düsseldorf, Hochschule Düsseldorf,Universidad de Düsseldorf, Düsseldorf 대학교 calc.editors.button-history,history,Histórico,Verlauf,historia,기록 calc.editors.insert-relation-title,Insert,Inserir,Einfügen,Insertar,Insert calc.editors.insert-relation-tooltip,Insert relation or column names,Inserir relação ou nomes de coluna,Beziehungs- oder Spaltennamen einfügen,Insertar nombres de relaciones o columnas,Insert relation or column names @@ -197,7 +198,8 @@ calc.editors.ra.toolbar.rename-content,"
σ
σ A.y > 2 ( rho ya ( A ) )
","
σ x.a > 1 ( ρ x ( A ) )
σ A.y > 2 ( rho ya ( A ) )
","
σ x.a > 1 ( ρ x ( A ) )
σ A.y > 2 ( rho ya ( A ) )
" -calc.editors.ra.toolbar.right-arrow,Right arrow,flecha derecha,Pfeil nach Rechts,flecha derecha,오른쪽 화살표 +calc.editors.ra.toolbar.right-arrow,rename columns operator,operador renomear colunas,Umbenennung von Spalten (neuer Name rechts),renombrar operador de columnas,열 연산자 변경 +calc.editors.ra.toolbar.right-arrow-content,"
σ A.y > 2 ( ρ ay ( A ) )
","
σ A.y > 2 ( ρ ay ( A ) )
","
σ A.y > 2 ( ρ ay ( A ) )
","
σ A.y > 2 ( ρ ay ( A ) )
","
σ A.y > 2 ( ρ ay ( A ) )
" calc.editors.ra.toolbar.rename-columns-operator,rename columns operator,operador renomear colunas,Umbenennung von Spalten,renombrar operador de columnas,열 연산자 변경 calc.editors.ra.toolbar.rename-columns-operator-content,"
σ A.y > 2 ( ρ ya ( A ) )
","
σ A.y > 2 ( ρ ya ( A ) )
","
σ A.y > 2 ( ρ ya ( A ) )
","
σ A.y > 2 ( ρ ya ( A ) )
","
σ A.y > 2 ( ρ ya ( A ) )
" calc.editors.ra.toolbar.orderBy,order by,ordenar (order by),Sortieren,ordenar por,정렬 diff --git a/src/locales/pt.json b/src/locales/pt.json index 284282d9..9d9d8fa4 100644 --- a/src/locales/pt.json +++ b/src/locales/pt.json @@ -1,4 +1,223 @@ { + "db.messages.parser.error-duplicate-variable": "nome de vari\u00e1vel duplicado: {{name}}", + "db.messages.parser.error-invalid-date-format": "\"{{str}}\" n\u00e3o \u00e9 uma data v\u00e1lida; formato esperado: YYYY-MM-DD", + "db.messages.parser.error-group-duplicate-header": "cabe\u00e7alho duplicado {{name}}", + "db.messages.parser.error-group-unknown-header": "cabe\u00e7alho desconhecido {{name}}", + "db.messages.parser.error-group-header-name-missing": "o nome do grupo est\u00e1 faltando (group: ....)", + "db.messages.parser.error-group-header-name-empty": "o nome do grupo n\u00e3o pode ser vazio", + "db.messages.parser.error-group-non-unique-attribute": "atributo n\u00e3o \u00fanico {{name}} na coluna {{index}}", + "db.messages.parser.error-group-non-unique-group-name": "nome de grupo duplicado: {{name}}", + "db.messages.parser.error-sql-string-use-single-quotes": "use aspas simples para strings (caracteres/texto)", + "db.messages.parser.error-sql-invalid-relation-name": "\"{{str}}\" n\u00e3o pode ser usado como nome de rela\u00e7\u00e3o", + "db.messages.parser.error-sql-invalid-column-name": "\"{{str}}\" n\u00e3o pode ser usado como nome de coluna", + "db.messages.parser.error-sql-group-by-missing": "group by est\u00e1 faltando", + "db.messages.parser.error-sql-having-without-group-by": "\u201chaving\u201d encontrado, mas sem \"group by\" ou agrega\u00e7\u00e3o", + "db.messages.parser.error-sql-negative-limit": "o limite dado precisa ser >= 0", + "db.messages.parser.error-sqldump-invalid-column-number": "n\u00famero inv\u00e1lido de colunas na linha {{line}}", + "db.messages.parser.error-sqldump-invalid-type": "tipo inv\u00e1lido na linha {{line}}", + "db.messages.parser.error-sqldump-insert-wrong-number-columns": "n\u00famero de valores != n\u00famero de colunas", + "db.messages.parser.error-valueexpr-like-operand-no-string": "operando direito de LIKE deve ser uma string literal", + "db.messages.exec.error-column-not-unique": "n\u00e3o foi poss\u00edvel adicionar a coluna \"{{column}}\" devido a ambiguidade", + "db.messages.exec.error-column-not-found-name": "n\u00e3o foi poss\u00edvel encontrar a coluna \"{{column}}\" no esquema {{schema}}", + "db.messages.exec.error-column-not-found-index": "\u00edndice da coluna \"{{column}}\" est\u00e1 fora do intervalo no esquema {{schema}}; \u00edndice come\u00e7a em 1", + "db.messages.exec.error-column-ambiguous": "coluna\"{{column}}\" \u00e9 amb\u00edgua em {{schema}}", + "db.messages.exec.error-column-index-out-of-range": "\u00edndice da coluna \"{{column}}\" est\u00e1 fora do intervalo no esquema {{schema}}; \u00edndice come\u00e7a em 1", + "db.messages.exec.error-could-not-change-rel-alias-ambiguity": "n\u00e3o foi poss\u00edvel definir o \u201dalias\u201d da rela\u00e7\u00e3o \u201c{{alias}}\u201d por causa da ambiguidade", + "db.messages.exec.error-could-not-rename-ambiguity": "n\u00e3o foi poss\u00edvel definir o novo nome \"{{newName}}\" para \"{{oldName}}\" devido a ambiguidade em {{schema}}", + "db.messages.exec.error-schema-a-not-part-of-schema-b": "esquema {{schemaA}} n\u00e3o \u00e9 parte de {{schemaB}}", + "db.messages.exec.error-schemas-not-unifiable": "os esquemas n\u00e3o s\u00e3o unific\u00e1veis: os tipos ou o tamanho diferem: {{schemaA}} e {{schemaB}}", + "db.messages.exec.error-column-not-in-both-schemas": "coluna \"{{column}}\" n\u00e3o pode ser encontrada em ambos os esquemas de jun\u00e7\u00e3o", + "db.messages.exec.error-condition-must-be-boolean": "condi\u00e7\u00e3o deve ser uma express\u00e3o booleana", + "db.messages.exec.error-func-not-defined-for-column-type": "{{func}} n\u00e3o definida para o tipo {{colType}}", + "db.messages.exec.error-join-would-produce-non-unique-columns": "a jun\u00e7\u00e3o resultaria em nomes de coluna n\u00e3o \u00fanicos {{conflicts}}", + "db.messages.exec.error-no-columns-match-alias-star": "nenhuma coluna corresponde a \"{{alias}}.*\"", + "db.messages.exec.error-datatype-not-specified-for-col": "tipo de dados para a coluna {{index}} (\"{{column}}\") n\u00e3o foi especificado", + "db.messages.exec.error-invalid-projection-error": "proje\u00e7\u00e3o inv\u00e1lida \"{{argument}}\": {{erro}}", + "db.messages.exec.error-function-expects-type": "a fun\u00e7\u00e3o \"{{func}}\" espera argumentos do tipo \"{{expected}}\" mas \"{{given}}\" foi dado", + "db.messages.exec.error-could-not-compare-different-types": "n\u00e3o foi poss\u00edvel comparar o valor se os tipos forem diferentes: {{typeA}}! = {{typeB}}", + "db.messages.exec.error-function-expects-arguments-of-same-type": "{{func}} espera que todos os argumentos sejam do mesmo tipo", + "db.messages.exec.error-case-when-condition-must-be-boolean": "a condi\u00e7\u00e3o de um CASE WHEN deve ser do tipo booleano", + "db.messages.exec.error-case-when-expects-results-of-same-type": " CASE WHEN condi\u00e7\u00e3o THEN resultado END espera que todos os resultados sejam do mesmo tipo", + "db.messages.exec.error-invalid-date-format": "\"{{str}}\" n\u00e3o \u00e9 uma data v\u00e1lida; formato esperado: YYYY-MM-DD", + "db.messages.translate.error-relation-not-found": "n\u00e3o foi poss\u00edvel encontrar rela\u00e7\u00e3o \"{{name}}\"", + "db.messages.translate.warning-distinct-missing": "DISTINCT est\u00e1 faltando", + "db.messages.translate.warning-ignored-all-on-set-operators": "ignorou ALL na opera\u00e7\u00e3o definida", + "db.messages.translate.error-variable-name-conflict": "conflito de nomes: o nome da rela\u00e7\u00e3o \"{{name}}\" j\u00e1 existe", + "db.messages.translate.error-variable-cyclic-usage": "uso c\u00edclico da vari\u00e1vel \"{{name}}\" detectado", + "editor.codemirror-placeholder": "Digite sua consulta aqui\n\nAtalhos do teclado:\n\texecutar declara\u00e7\u00e3ot: [CTRL]+[RETURN]\n\texecutar sele\u00e7\u00e3o: [CTRL]+[SHIFT]+[RETURN]\n\tautocompletar: [CTRL]+[SPACE]\n", + "editor.alert-message-headers.success": "Sucesso", + "editor.alert-message-headers.info": "Info", + "editor.alert-message-headers.warning": "Perigo", + "editor.alert-message-headers.error": "Erro", + "editor.inline-relation-editor.button-ok": "Ok", + "editor.inline-relation-editor.button-cancel": "Cancelar", + "editor.inline-relation-editor.placeholder-column-name-and-types": "columnName:type", + "editor.inline-relation-editor.enter-your-data": "por favor, insira seus dados", + "editor.inline-relation-editor.error-column-name-missing": "nome da coluna ausente na coluna {{index}}", + "editor.inline-relation-editor.error-wrong-quoted-string": "string n\u00e3o deve conter aspas simples e duplas", + "editor.error-no-query-found": "nenhuma consulta encontrada", + "editor.pegjs-error.or": "ou", + "editor.pegjs-error.no-input-found": "nenhuma entrada encontrada", + "editor.pegjs-error.end-of-input": "fim da entrada", + "editor.pegjs-error.expected-found": "Op\u00e7\u00e3o 1: Esperado {{expected}}, mas {{found}} encontrado. Op\u00e7\u00e3o 2: Espa\u00e7o em branco necess\u00e1rio antes de abrir par\u00eanteses '(' de 'relationName'.", + "editor.error-at-line-x": "na linha {{line}}", + "calc.messages.error-query-missing": "nenhuma consulta encontrada", + "calc.messages.error-query-missing-assignments-found": "apenas atribui\u00e7\u00f5es encontradas; falta a consulta Ajuda - Tarefas ", + "calc.messages.gist-load-success": "gist carregado com sucesso", + "calc.menu.headline": "Carregue um Dataset", + "calc.menu.datasets": "Datasets", + "calc.menu.load-gist-headline": "Carregar Dataset armazenado em um gist", + "calc.menu.load-gist-button": "Carregar", + "calc.menu.load-gist-insert-placeholder": "gist ID", + "calc.menu.recently-used": "Recently used gists", + "calc.menu.create-own-dataset-headline": "Crie seu pr\u00f3prio Dataset", + "calc.menu.create-own-dataset-text": "Voc\u00ea pode criar seu pr\u00f3prio conjunto de dados e compartilh\u00e1-lo com outras pessoas. Saiba mais sobre isso no ", + "calc.menu.create-own-dataset-text-link": "Tutorial de manuten\u00e7\u00e3o", + "calc.menu.create-own-dataset-button-new": "Criar novo Dataset", + "calc.menu.create-own-dataset-button-modify": "Modificar Dataset", + "calc.navigation.take-a-tour": "Fa\u00e7a um Tour", + "calc.navigation.feedback": "Feedback", + "calc.navigation.help": "Ajuda", + "calc.navigation.calc": "Calcular", + "calc.navigation.language": "Linguagem", + "calc.maintainer-groups.misc": "Diversos", + "calc.maintainer-groups.temp": "Tempor\u00e1rio", + "calc.maintainer-groups.uibk": "University of Innsbruck", + "calc.maintainer-groups.karlsruhe": "Universidade de Ci\u00eancias Aplicadas de Karlsruhe", + "calc.maintainer-groups.saarland": "University of Saarland", + "calc.maintainer-groups.hsd": "Universidade de Ci\u00eancias Aplicadas de D\u00fcsseldorf", + "calc.editors.button-history": "Hist\u00f3rico", + "calc.editors.insert-relation-title": "Inserir", + "calc.editors.insert-relation-tooltip": "Inserir rela\u00e7\u00e3o ou nomes de coluna", + "calc.editors.group.tab-name": "Editor de Grupo", + "calc.editors.group.tab-name-short": "EG", + "calc.editors.group.toolbar.import-sql": "Importar SQL-dump", + "calc.editors.group.toolbar.import-sql-content": "Importar SQL-dump", + "calc.editors.group.toolbar.add-new-relation": "+ nova rela\u00e7\u00e3o", + "calc.editors.group.toolbar.add-new-relation-content": "Abrir editor de rela\u00e7\u00f5es", + "calc.editors.group.button-download": "Download", + "calc.editors.group.button-exec": "Visualizar", + "calc.editors.group.button-use": "Use Grupo no Editor", + "calc.editors.group.button-use_plural": "Use o primeiro Grupo no Editor", + "calc.editors.group.sql-import-group-name-placeholder": "Nome do grupo (importado de SQL)", + "calc.editors.group.new-group-example-group": "\u2013 este \u00e9 um exemplo\n\ngroup: nomeDoNovoGrupo \n\n\nA = {\n\ta:string, b:number\n\texemplo, 42\n}", + "calc.editors.group.modal-sqldump.modal-title": "Importar SQL-dump", + "calc.editors.group.modal-sqldump.button-close": "Fechar", + "calc.editors.group.modal-sqldump.button-cancel": "Cancelar", + "calc.editors.group.modal-sqldump.button-import-sql": "Importar SQL", + "calc.editors.group.modal-sqldump.description": "Coloque seu SQL-Dump aqui para criar um grupo.", + "calc.editors.ra.tab-name": "\u00c1lgebra Relacional", + "calc.editors.ra.tab-name-short": "AlgRel", + "calc.editors.ra.button-execute-query": "Executar consulta", + "calc.editors.ra.button-execute-selection": "Executar sele\u00e7\u00e3o", + "calc.editors.ra.button-download": "Download", + "calc.editors.ra.button-download-csv": "Resultado (CSV)", + "calc.editors.ra.button-download-jpg": "Resultado (JPG)", + "calc.editors.ra.button-download-query": "Query", + "calc.editors.ra.toolbar.projection": "Proje\u00e7\u00e3o", + "calc.editors.ra.toolbar.projection-content": "π a, b ( A )\n
pi a, b A", + "calc.editors.ra.toolbar.selection": "Sele\u00e7\u00e3o", + "calc.editors.ra.toolbar.selection-content": "σ a < b \u2227 b \u2260 c ( A )\n
sigma a < b and b != c A", + "calc.editors.ra.toolbar.rename": "renomear rela\u00e7\u00e3o / renomear colunas", + "calc.editors.ra.toolbar.rename-content": "
σ x.a > 1 ( ρ x ( A ) )
\n
σ A.y > 2 ( rho y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.right-arrow": "operador renomear colunas", + "calc.editors.ra.toolbar.right-arrow-content": "
σ A.y > 2 ( ρ a\u2192y ( A ) )
", + "calc.editors.ra.toolbar.rename-columns-operator": "operador renomear colunas", + "calc.editors.ra.toolbar.rename-columns-operator-content": "
σ A.y > 2 ( ρ y\u2190a ( A ) )
", + "calc.editors.ra.toolbar.orderBy": "ordenar (order by)", + "calc.editors.ra.toolbar.orderBy-content": "
τ a asc, [2] desc ( A )
tau a asc, [2] desc ( A )
", + "calc.editors.ra.toolbar.groupBy": "agrupar (group by)", + "calc.editors.ra.toolbar.groupBy-content": "
γ a, b; count(c)\u2192c ( A )
\n
gamma count(a)->x, sum(b)->y ( A )
", + "calc.editors.ra.toolbar.and": "e", + "calc.editors.ra.toolbar.and-content": "
σ a < b \u2227 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.xor": "ou exclusivo (xor)", + "calc.editors.ra.toolbar.xor-content": "
σ a < b \u2295 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.or": "ou", + "calc.editors.ra.toolbar.or-content": "
σ a < b \u2228 b \u2260 c ( A )
", + "calc.editors.ra.toolbar.not": "n\u00e3o", + "calc.editors.ra.toolbar.not-content": "
&sigma", + "calc.editors.ra.toolbar.equals": "igual", + "calc.editors.ra.toolbar.equals-content": "
&sigma", + "calc.editors.ra.toolbar.not-equals": "n\u00e3o igual", + "calc.editors.ra.toolbar.not-equals-content": "
&sigma", + "calc.editors.ra.toolbar.greater-or-equals": "maior ou igual", + "calc.editors.ra.toolbar.greater-or-equals-content": "
&sigma", + "calc.editors.ra.toolbar.lesser-or-equals": "menor ou igual", + "calc.editors.ra.toolbar.lesser-or-equals-content": "
&sigma", + "calc.editors.ra.toolbar.intersect": "intersec\u00e7\u00e3o", + "calc.editors.ra.toolbar.intersect-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.union": "uni\u00e3o", + "calc.editors.ra.toolbar.union-content": "
( A ) ( B )
", + "calc.editors.ra.toolbar.division": "divis\u00e3o", + "calc.editors.ra.toolbar.division-content": "
( A ) \u00f7 ( B )
", + "calc.editors.ra.toolbar.subtraction": "subtra\u00e7\u00e3o", + "calc.editors.ra.toolbar.subtraction-content": "
( A ) - ( B )
\n
( A ) \n ( B )
", + "calc.editors.ra.toolbar.cross-join": "jun\u00e7\u00e3o cruzada (cross join)", + "calc.editors.ra.toolbar.cross-join-content": "
( A ) \u2a2f ( B )
", + "calc.editors.ra.toolbar.natural-join": "natural join / \u03b8-join", + "calc.editors.ra.toolbar.natural-join-content": "
( A ) \u22c8 ( B )
\n
( A ) \u22c8 A.a \u2265 B.a ( B )
", + "calc.editors.ra.toolbar.left-outer-join": "left outer join", + "calc.editors.ra.toolbar.left-outer-join-content": "
( A ) \u27d5 ( B )
\n
( A ) \u27d5 A.a < B.a ( B )
\n", + "calc.editors.ra.toolbar.right-outer-join": "right outer join", + "calc.editors.ra.toolbar.right-outer-join-content": "
( A ) \u27d6 ( B )
\n
( A ) \u27d6 A.a < B.a ( B )
\n", + "calc.editors.ra.toolbar.full-outer-join": "full outer join", + "calc.editors.ra.toolbar.full-outer-join-content": "
( A ) \u27d7 ( B )
\n
( A ) \u27d7 A.a != B.a ( B )
", + "calc.editors.ra.toolbar.left-semi-join": "left semi join", + "calc.editors.ra.toolbar.left-semi-join-content": "
( A ) \u22c9 ( B )
", + "calc.editors.ra.toolbar.right-semi-join": "right semi join", + "calc.editors.ra.toolbar.right-semi-join-content": "
( A ) \u22ca ( B )
", + "calc.editors.ra.toolbar.anti-join": "anti join", + "calc.editors.ra.toolbar.anti-join-content": "
( A ) \u25b7 ( B )
", + "calc.editors.ra.toolbar.assignment": "atribui\u00e7\u00e3o", + "calc.editors.ra.toolbar.assignment-content": "
X = pi a ( A )\n
Y = pi b ( b )\n
( X ) ( Y )
", + "calc.editors.ra.toolbar.single-line-comment": "coment\u00e1rio em linha", + "calc.editors.ra.toolbar.single-line-comment-content": "π a, b A -- coment\u00e1rio \u00fatil", + "calc.editors.ra.toolbar.multi-line-comment": "coment\u00e1rio multilinha", + "calc.editors.ra.toolbar.multi-line-comment-content": "/* este \u00e9 um coment\u00e1rio longo,
muito longo*/

π a, b A", + "calc.editors.ra.toolbar.inline-relation": "rela\u00e7\u00e3o aninhada", + "calc.editors.ra.toolbar.inline-relation-content": "σ a = 'test' ({
a:string, b:number, X.c:date
a, 1, 1970-01-01
}
)", + "calc.editors.ra.toolbar.inline-relation-editor": "rela\u00e7\u00e3o aninhada (editor)", + "calc.editors.ra.toolbar.inline-relation-editor-content": "criar uma nova rela\u00e7\u00e3o aninhada usando o editor", + "calc.editors.ra.toolbar.insert-date": "inserir data", + "calc.editors.ra.toolbar.insert-date-content": "σ a < date('1970-01-01') ( A )", + "calc.editors.ra.toolbar.autoreplace-operators.title": "substitui\u00e7\u00e3o de operador", + "calc.editors.ra.toolbar.autoreplace-operators.header": "substituir operadores automaticamente", + "calc.editors.ra.toolbar.autoreplace-operators.none": "sem substitui\u00e7\u00e3o", + "calc.editors.ra.toolbar.autoreplace-operators.plain2math": "pi => \u03c0", + "calc.editors.ra.toolbar.autoreplace-operators.math2plain": "\u03c0 => pi", + "calc.editors.sql.tab-name": "SQL", + "calc.editors.sql.tab-name-short": "SQL", + "calc.editors.sql.button-execute-query": "Executar consulta", + "calc.editors.sql.button-execute-selection": "Executar sele\u00e7\u00e3o", + "calc.editors.sql.button-download": "Download", + "calc.editors.sql.toolbar.select": "cl\u00e1usula select", + "calc.editors.sql.toolbar.select-content": "

SELECT * FROM A

SELECT a, A.b, A.c FROM A
", + "calc.editors.sql.toolbar.from": "cl\u00e1usula from", + "calc.editors.sql.toolbar.from-content": "
SELECT *
FROM A, B as b
INNER JOIN C NATURAL
", + "calc.editors.sql.toolbar.where": "cl\u00e1usula where", + "calc.editors.sql.toolbar.where-content": "SELECT * FROM A, B
where A.a = B.a or false", + "calc.editors.sql.toolbar.group-by": "cl\u00e1usula group by", + "calc.editors.sql.toolbar.group-by-content": "SELECT a, COUNT(b) as num
FROM A
GROUP BY a", + "calc.editors.sql.toolbar.having": "c\u00e1usula having clause", + "calc.editors.sql.toolbar.having-content": "SELECT a, SUM(b) as sum
FROM A
GROUP BY a
having sum > 10", + "calc.editors.sql.toolbar.order-by": "cl\u00e1usula order by", + "calc.editors.sql.toolbar.order-by-content": "

SELECT * FROM A ORDER BY a asc, b desc

SELECT * FROM A ORDER BY 1, 2, 3
", + "calc.editors.sql.toolbar.limit": "cl\u00e1usula limit", + "calc.editors.sql.toolbar.limit-content": "SELECT * FROM A
LIMIT 10 OFFSET 0", + "calc.editors.sql.toolbar.insert-date": "inserir data", + "calc.editors.sql.toolbar.insert-date-content": "select * from A\nwhere a < date(\"1970-01-01\")", + "calc.result.modal.title": "Resultado", + "calc.result.modal.close": "Fechar", + "calc.editors.ra.inline-editor.title": "Editor de Rela\u00e7\u00e3o", + "calc.editors.ra.inline-editor.button-download-csv": "Download CSV", + "calc.editors.ra.inline-editor.button-upload-csv": "Upload CSV", + "calc.editors.ra.inline-editor.button-cancel": "Cancelar", + "calc.editors.ra.inline-editor.button-ok": "Ok", + "calc.editors.ra.inline-editor.row-name": "Nome", + "calc.editors.ra.inline-editor.row-type": "Tipo", + "calc.editors.ra.inline-editor.input-relation-name": "Nome da Rela\u00e7\u00e3o", + "calc.navigation.imprint": "Impress\u00e3o", + "calc.result.exec.time": "Execution time:", "db.messages.parser.error-duplicate-variable": "nome de variável duplicado: {{name}}", "db.messages.parser.error-invalid-date-format": "\"{{str}}\" não é uma data válida; formato esperado: YYYY-MM-DD", "db.messages.parser.error-group-duplicate-header": "cabeçalho duplicado {{name}}", @@ -215,4 +434,4 @@ "calc.editors.ra.inline-editor.input-relation-name": "Nome da Relação", "calc.navigation.imprint": "Impressão", "calc.result.exec.time": "Execution time:" - } \ No newline at end of file + } diff --git a/src/locales/writeLanguageFiles.py b/src/locales/writeLanguageFiles.py index 7efc1772..b12de4c4 100755 --- a/src/locales/writeLanguageFiles.py +++ b/src/locales/writeLanguageFiles.py @@ -5,29 +5,32 @@ delimiter = ',' quotechar = '"' + def CsvToJson(): - language_data = { - "en": {}, - "de": {}, - "es": {}, - "kr": {}, - "pt": {}, - } - with open('languages.csv') as csv_file: - csv_reader = csv.reader(csv_file, delimiter=delimiter) - rows = list(csv_reader) - languages = rows[0][1:] - for language in languages: - language_data[language] = {} - for row in rows[1:]: - for i in range(1, len(row)): - language_data[languages[i-1]][row[0]] = row[i] - for li in language_data.keys(): - with open('%s.json' % li, 'w') as json_file: - json.dump(language_data[li], json_file) + language_data = { + "en": {}, + "de": {}, + "es": {}, + "kr": {}, + "pt": {}, + } + with open('languages.csv', encoding="utf8") as csv_file: + csv_reader = csv.reader(csv_file, delimiter=delimiter) + rows = list(csv_reader) + languages = rows[0][1:] + for language in languages: + language_data[language] = {} + for row in rows[1:]: + for i in range(1, len(row)): + language_data[languages[i - 1]][row[0]] = row[i] + for li in language_data.keys(): + with open('%s.json' % li, 'w') as json_file: + json.dump(language_data[li], json_file) + def main(): - CsvToJson() + CsvToJson() + if __name__ == "__main__": - main() \ No newline at end of file + main()