Browse Source

Implement csv i18n file for all strings and a csv loader for webpack

Lucas de Souza 5 years ago
parent
commit
20bd74f86e
20 changed files with 407 additions and 801 deletions
  1. 0 89
      i18n/en/error.json
  2. 0 9
      i18n/en/index.js
  3. 0 4
      i18n/en/message.json
  4. 0 148
      i18n/en/ui.json
  5. 131 0
      i18n/error.csv
  6. 0 89
      i18n/es/error.json
  7. 0 9
      i18n/es/index.js
  8. 0 4
      i18n/es/message.json
  9. 0 147
      i18n/es/ui.json
  10. 12 7
      i18n/index.js
  11. 9 0
      i18n/message.csv
  12. 0 132
      i18n/pt/error.json
  13. 0 9
      i18n/pt/index.js
  14. 0 10
      i18n/pt/message.json
  15. 0 133
      i18n/pt/ui.json
  16. 132 0
      i18n/ui.csv
  17. 34 0
      i18n_csv_loader.js
  18. 72 5
      package-lock.json
  19. 1 0
      package.json
  20. 16 6
      webpack.config.js

+ 0 - 89
i18n/en/error.json

@@ -1,89 +0,0 @@
-{
-  "token_missing_one": "Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3",
-  "token_missing_two": "Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4",
-  "eos_missing": "Falta uma nova linha ou ; na linha: $0, coluna: $1",
-  "invalid_type": "$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3",
-  "invalid_array_dimension": "A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.",
-  "invalid_array_size": "O tamnho do vetor/matriz excede o máximo de 2 na linha $0",
-  "extra_lines": "Nenhum texto é permitido após '}' em 'programa {...}'",
-  "invalid_main_return": "A função $0 deve retornar $1 na linha $2",
-  "invalid_var_declaration": "Erro na linha $0. Variáveis só podem ser declarados no corpo principal da função e de preferência nas primeiras linhas.",
-  "invalid_break_command": "Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso'",
-  "invalid_terminal": "Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.",
-  "const_not_init": "Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada",
-  "id_missing": "Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2",
-  "invalid_id_format": "$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.",
-  "main_missing": "A função principal não foi encontrada",
-  "invalid_global_var": "Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE",
-  "not_implemented": "Erro interno crítico: A função definida pelo sistema $0 não foi implementada.",
-  "function_missing": "A função $0 não foi encontrada",
-  "function_missing_full": "A função $0 na linha: $1, coluna: $2 não foi encontrada",
-  "invalid_parameters_size_full": "Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.",
-  "invalid_parameters_size": "A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2",
-  "invalid_ref_full": "A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.",
-  "invalid_ref": "A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.",
-  "invalid_parameter_type_full": "A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.",
-  "invalid_parameter_type": "A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.",
-  "unknown_command_full": "Erro interno crítico: comando desconhecido encontrado na linha $0",
-  "unknown_command": "Erro interno crítico: comando desconhecido encontrado!",
-  "loop_condition_type_full": "Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico",
-  "loop_condition_type": "A condição $0 do laço de repetição deve ser do tipo lógico",
-  "endless_loop_full": "Possível laço infinito detectado no seu código. Verifique a linha $0",
-  "endless_loop": "Possível laço infinito detectado no seu código.",
-  "for_condition_type_full": "Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico",
-  "for_condition_type": "A condição de parada $0 do comando para(...) deve ser do tipo lógico",
-  "if_condition_type_full": "Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico",
-  "if_condition_type": "A condição $0 do comando se...senao deve ser do tipo lógico",
-  "invalid_return_type_full": "Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.",
-  "invalid_return_type": "A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.",
-  "invalid_void_return_full": "Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2",
-  "invalid_void_return": "A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1",
-  "unexpected_break_command_full": "Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0",
-  "unexpected_break_command": "Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso",
-  "invalid_dimension": "As dimensões de um vetor/matriz devem ser do tipo inteiro",
-  "void_in_expression_full": "Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio",
-  "void_in_expression": "A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio",
-  "invalid_array_access_full": "Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido",
-  "invalid_array_access": "Identificador $0 não se refere a um vetor/matriz válido",
-  "invalid_matrix_access_full": "Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida",
-  "invalid_matrix_access": "Identificador $0 não se refere a uma matriz válida",
-  "matrix_column_outbounds_full": "Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas",
-  "matrix_column_outbounds": "Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas",
-  "matrix_line_outbounds_full": "Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas",
-  "matrix_line_outbounds": "Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas",
-  "vector_line_outbounds_full": "Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas",
-  "vector_line_outbounds": "Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas",
-  "vector_not_matrix_full": "Erro na linha $0: $1 não é uma matriz",
-  "vector_not_matrix": "$1 não é uma matriz",
-  "invalid_infix_op_full": "Erro na linha $0: não é possível aplicar a operação $1 entre os tipos $2 e $3",
-  "invalid_infix_op": "Não é possível aplicar a operação $0 entre os tipos $1 e $2",
-  "invalid_unary_op_full": "Erro na linha $0: não é possível aplicar a operação $1 ao tipo $2",
-  "invalid_unary_op": "Não é possível aplicar a operação $0 ao tipo $1",
-  "unknown_op": "Erro interno crítico: Operação $0 desconhecida",
-  "duplicate_function": "A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.",
-  "duplicate_variable": "A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.",
-  "main_parameters": "A função inicio não pode ter parâmetros.",
-  "symbol_not_found_full": "A variável $0 na linha: $1, coluna: $2 não foi declarada",
-  "symbol_not_found": "A variável $0 não foi declarada",
-  "array_dimension_not_int_full": "As dimensões de um vetor/matriz na linha: $0 devem ser do tipo inteiro.",
-  "array_dimension_not_int": "As dimensões de um vetor/matriz devem ser do tipo inteiro.",
-  "array_dimension_not_positive_full": "As dimensões de um vetor/matriz na linha: $0 devem ser valores positivos.",
-  "array_dimension_not_positive": "As dimensões de um vetor/matriz devem ser valores positivos.",
-  "incompatible_types_full": "O tipo $0 não é compatível com o tipo resultante da expressão na linha $1",
-  "incompatible_types": "O tipo $0 não é compatível com o tipo resultante da expressão fornecida.",
-  "incompatible_types_array_full": "A expressão $0 é incompatível com o tipo $1 na linha: $2, coluna: $3.",
-  "incompatible_types_array": "A expressão $0 é incompatível com o tipo $1.",
-  "invalid_case_type_full": "O caso $0 na linha $1 é incompatível com o tipo $2.",
-  "invalid_case_type": "O caso $0 é incompatível com o tipo $1.",
-  "function_no_return": "A função $0 não possui um retorno acessível. Toda função deve ter ao menos um retorno no seu corpo principal.",
-  "invalid_array_literal_type_full": "Erro na linha $0: a expressão $1 não resulta em um tipo compatível.",
-  "invalid_array_literal_type": "A expressão $0 não resulta em um tipo compatível.",
-  "invalid_array_literal_line_full": "Erro na linha $0: esperava-se $1 linhas mas encontrou $2.",
-  "invalid_array_literal_line": "Esperava-se $0 linhas mas encontrou $1.",
-  "invalid_array_literal_column_full": "Erro na linha $0: esperava-se $1 colunas mas encontrou $2.",
-  "invalid_array_literal_column": "Esperava-se $0 colunas mas encontrou $1.",
-  "exceeded_input_request": "A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.",
-  "test_case_few_reads": "Caso de teste $0 falhou: ainda restam entradas!",
-  "test_case_failed": "Caso de teste $0 falhou: entradas:<$1>; saída esperada:<$2>; saída:<$3>",
-  "test_case_failed_exception": "Caso de teste $0 falhou: $1"
-}

+ 0 - 9
i18n/en/index.js

@@ -1,9 +0,0 @@
-import errors from './error.json';
-import messages from './message.json'
-import ui from './ui.json';
-
-export default {
- 'message' : messages,
- 'error': errors,
- 'ui': ui
-}

+ 0 - 4
i18n/en/message.json

@@ -1,4 +0,0 @@
-{
-  "test_case_success": "Caso de teste $0: OK",
-  "test_case_duration": "Levou $0ms"
-}

+ 0 - 148
i18n/en/ui.json

@@ -1,148 +0,0 @@
-{
-  "function": "function",
-  "btn_clear": "Clear",
-  "btn_function": "Function",
-  "btn_arithmetic_plus": "Sum",
-  "btn_arithmetic_minus": "Minus",
-  "btn_arithmetic_multiplication": "Multiplication",
-  "btn_arithmetic_division": "Division",
-  "btn_arithmetic_module": "Module",
-  "btn_break":"Break",
-  "btn_case":"Case",
-  "start": "start",
-  "void": "void",
-  "integer": "integer",
-  "real": "real",
-  "program": "program",
-  "text": "string",
-  "text_start": "text",
-  "boolean": "boolean",
-  "true": "true",
-  "false": "false",
-  "variable": "Variable",
-  "command": "Command",
-  "new_parameter": "parameter",
-  "new_variable": "variable",
-  "new_global": "global",
-  "new_function": "new_function",
-  "matrix": "matrix",
-  "vector": "vector",
-  "text_comment_start": "Initial comment of function...",
-  "text_comment_main": "This is the main function...",
-  "text_read_var": "Reading data",
-  "text_write_var": "Writing data",
-  "text_command_read":"read",
-  "text_command_write":"write",
-  "text_comment": "Comment",
-  "text_attribution": "Attribution",
-  "text_if":"if",
-  "text_else":"else",
-  "text_break":"break",
-  "text_for":"for",
-  "text_code_while":"while",
-  "text_code_do":"do",
-  "text_command_do":"do",
-  "text_code_switch": "switch",
-  "text_code_case": "case",
-  "text_config_programming":"Programming",
-  "text_config_programming_both":"Visual and textual",
-  "text_config_programming_textual":"Textual",
-  "text_config_programming_visual":"Visual",
-  "text_logic_expression": "Logic Expression",
-  "text_arithmetic_expression": "Relational Expression",
-  "text_iftrue": "If true then",
-  "text_message_error_activity_file": "There was an error processing the activity. <br>Please reload the page and try again.",
-  "text_message_error_activity_reload": "Reload",
-  "text_receives": "receives",
-  "text_repeatNtimes": "Repeat N times",
-  "text_return":"return",
-  "text_btn_return":"Return",
-  "text_whiletrue": "While true",
-  "text_dowhiletrue": "Do while true",
-  "text_switch": "Switch",
-  "text_functioncall": "Function call",
-  "text_value": "Value",
-  "text_operator": "Operator",
-  "text_parentheses": "Parentheses",
-  "text_change": "Change",
-  "text_teacher_algorithm": "Algorithm",
-  "text_teacher_algorithm_include": "Include the following algorithm in exercise",
-  "text_teacher_test_case": "Test cases",
-  "text_teacher_config": "Settings",
-  "text_teacher_data_types": "Data types",
-  "text_teacher_commands": "Commands",
-  "text_teacher_functions": "Functions",
-  "text_teacher_create_functions": "Create new functions",
-  "text_teacher_create_movement_functions": "Move functions",
-  "text_teacher_test_case_input": "Input",
-  "text_teacher_test_case_output": "Output",
-  "text_teacher_test_case_actions": "Actions",
-  "text_teacher_test_case_add": "Add test cases",
-  "text_header_ivprog_functions": "iVProg Functions",
-  "text_menu_functions_math":"Mathematic",
-  "text_menu_functions_text":"Text",
-  "text_menu_functions_arrangement":"Arrangement",
-  "text_menu_functions_conversion":"Conversion",
-  "text_none_variable":"There is no declared variable",
-  "text_none_variable_instruction":"Create a new variable to use it",
-  "text_ivprog_description":"Interactive Visual Programming on the Internet",
-  "tooltip_visual": "Visual programming",
-  "tooltip_textual": "Textual programming",
-  "tooltip_upload": "Upload code file",
-  "tooltip_download": "Download code file",
-  "tooltip_undo": "Undo",
-  "tooltip_redo": "Redo",
-  "tooltip_run": "Run program",
-  "tooltip_evaluate": "Evaluate program",
-  "tooltip_help": "Help",
-  "tooltip_add_global": "Add global variable",
-  "tooltip_minimize": "Hidde function elements",
-  "tooltip_console": "Open/Close console",
-  "var_menu_select_var": "Select a var",
-  "var_menu_select_all": "Select",
-  "var_menu_select_function": "Select a function",
-  "expression_menu_select": "Construct any logical condition",
-  "math": "Mathematic",
-  "text_t": "Text",
-  "inform_valid_name": "Inform a valid name!",
-  "inform_valid_content": "Enter some content!",
-  "inform_valid_expression": "Construct the logical condition!",
-  "inform_valid_name_duplicated": "This name is already in use by other function.",
-  "inform_valid_global_duplicated": "A global variable with this name already exists.",
-  "inform_valid_variable_duplicated" : "A local variable with this name already exists.",
-  "arrangement": "Arrangement",
-  "conversion": "Conversion",
-  "$sin": "sin",
-  "$cos": "cos",
-  "$tan": "tan",
-  "$sqrt": "sqrt",
-  "$pow": "pow",
-  "$log": "log",
-  "$abs": "abs",
-  "$negate": "negate",
-  "$invert": "invert",
-  "$max": "maximum",
-  "$min": "minimum",
-  "$rand":"random",
-  "$substring": "substring",
-  "$length": "length",
-  "$uppercase": "uppercase",
-  "$lowercase": "lowercase",
-  "$charAt": "char_at",
-  "$numElements": "total_of_elements",
-  "$matrixLines": "total_of_lines",
-  "$matrixColumns": "total_of_columns",
-  "$isReal": "is_real",
-  "$isInt": "is_integer",
-  "$isBool": "is_logic",
-  "$castReal": "to_real",
-  "$castInt": "to_integer",
-  "$castBool": "to_logic",
-  "$castString": "to_string",
-  "text_ivprog_version":"Version",
-  "text_teacher_filter": "Filter",
-  "text_teacher_filter_active": "Activate",
-  "text_teacher_filter_help": "When filter is activated, all iVProg modifications will be blocked.",
-  "text_teacher_generate_outputs": "Generate outputs",
-  "text_teacher_generate_outputs_algorithm": "Before generate outputs, create an algorithm!"
-}

+ 131 - 0
i18n/error.csv

@@ -0,0 +1,131 @@
+id,pt,en ,es
+token_missing_one,"Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3","Syntax error: Expected $0 but found $1 at line:$2, column:$3", 
+token_missing_two,"Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4","Syntax error: Expected $0 or $1 but found $2 at line:$3, column: $4", 
+eos_missing,"Falta uma nova linha ou ; na linha: $0, coluna: $1","A new line or a ‘;’ is missing at line: $0, column: $1", 
+invalid_type,"$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3","$0 at line: $1, column: $2 is a invalid type. The valid types are: $3", 
+invalid_array_dimension,"A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.","Invalid dimension at line: $0, column: $1. Insert a $2 or a valid identifier of the same type.", 
+invalid_array_size,O tamnho do vetor/matriz excede o máximo de 2 na linha $0,The array at line $0 exceeds the maximum size of 2., 
+extra_lines,Nenhum texto é permitido após '}' em 'programa {...}',No text is allowed after '}' in 'program { … }', 
+invalid_main_return,A função $0 declarada na linha $2 deve retornar $1.,The function $0 declared at line $2 must return $1., 
+invalid_var_declaration,"Erro na linha $0: variáveis só podem ser declaradas no corpo principal da função e nas primeiras linhas, antes de qualquer comando.","Error at line $0: Variables can only be declared in the main body of a function and at the first lines, before any command.", 
+invalid_break_command,Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso',Error at line $0. The command $1 cannot be used outside a loop command or ‘switch ...case’ structure., 
+invalid_terminal,"Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.","It is not possible to use $0 in the expression at line: $1, column: $2. Try a numeric value, variable or function call.", 
+const_not_init,"Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada","Error at line: $0, column: $1. A variable declared as const must be initialized.", 
+id_missing,"Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2","Expected an identifier but found $0 at line: $1, column: $2.", 
+invalid_id_format,"$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.","$0 at line: $1, column: $2 is not a valid identifier. The symbol '.' is not permitted in this context.", 
+main_missing,A função principal não foi encontrada,The main function was not found. You need to declare a function of return type void named main., 
+invalid_global_var,Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE,Critical Error: Invalid call of the function IVProgProcessor.initGlobal outside the BASE context., 
+not_implemented,Erro interno crítico: A função definida pelo sistema $0 não foi implementada.,Critial internal error: The system defined function $0 was not found., 
+function_missing,A função $0 não foi encontrada,The function $0 was not found., 
+function_missing_full,"A função $0 na linha: $1, coluna: $2 não foi encontrada","The function $0 at line: $1, column: $2 was not found.", 
+invalid_parameters_size_full,"Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.",Error at line $0: The number of parameters provided to the function $1 is incorrect. It expected $2 but found $3., 
+invalid_parameters_size,"A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2",The number of parameters provided to the function $0 is incorrect. It expected $1 but found $2., 
+invalid_ref_full,A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.,The expression $0 provided as a parameter to the function $1 at line $2 is not valid in this context. Use a variable or a position of a vector., 
+invalid_ref,A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.,The expression $0 provided as a parameter to the function $1 is not valid in this context. Use a variable or a position of a vector., 
+invalid_parameter_type_full,A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.,The expression $0 provided as a parameter to the function $1 at line $2 is not of the expected type., 
+invalid_parameter_type,A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.,The expression $0 provided as a parameter to the function $1 is not of the expected type., 
+unknown_command_full,Erro interno crítico: comando desconhecido encontrado na linha $0,Internal error: an unknown command found at line $0., 
+unknown_command,Erro interno crítico: comando desconhecido encontrado!,Internal error: an unknown command found., 
+loop_condition_type_full,"Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico","Error at line: $0, column $1: the condition $2 of the loop must be of type bool (true or false).", 
+loop_condition_type,A condição $0 do laço de repetição deve ser do tipo lógico,The condition $0 of the loop must be of type bool (true or false)., 
+endless_loop_full,Possível laço infinito detectado no seu código. Verifique a linha $0,Possible infinite loop detected in your code. Check line $0., 
+endless_loop,Possível laço infinito detectado no seu código.,Possible infinite loop detected in your code., 
+for_condition_type_full,"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico","Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico", 
+for_condition_type,A condição de parada $0 do comando para(...) deve ser do tipo lógico,A condição de parada $0 do comando para(...) deve ser do tipo lógico, 
+if_condition_type_full,"Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico","Error at line: $0, column $1: the condition $2 in the if … else command must result in a bool (true or false).", 
+if_condition_type,A condição $0 do comando se...senao deve ser do tipo lógico,The condition $0 in the if … else command must result in a bool (true or false)., 
+invalid_return_type_full,Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.,Error at line $0: The expression doest not result in a type compatible with the function $1.  Expected type: $2., 
+invalid_return_type,A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.,The expression doest not result in a type compatible with the function $0.  Expected type: $1., 
+invalid_void_return_full,"Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2","Error at line $0: The function $1 cannot return an empty expression, use an expression that results in a $2", 
+invalid_void_return,"A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1","The function $0 cannot return an empty expression, use an expression that results in a $1", 
+unexpected_break_command_full,Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0,Critical error at line $0:  a break command was found outside a valid context: loop or switch … case structure., 
+unexpected_break_command,Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso,Critical error:  a break command was found outside a valid context: loop or switch … case structure., 
+invalid_dimension,As dimensões de um vetor/matriz devem ser do tipo inteiro,Array (vector or matrix) dimensions must be of type int., 
+void_in_expression_full,"Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio","Error at line: $0, column: $1: The function $2 cannot be used inside an expression since its return type is void.", 
+void_in_expression,A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio,The function $0 cannot be used inside an expression since its return type is void., 
+invalid_array_access_full,"Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido","Identifier $0 at line: $1, column: $2 does not identify a valid vector or matrix.", 
+invalid_array_access,Identificador $0 não se refere a um vetor/matriz válido,Identifier $0 does not identify a valid vector or matrix., 
+invalid_matrix_access_full,"Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida","Identifier $0 at line: $1, column: $2 does not identify a valid matrix.", 
+invalid_matrix_access,Identificador $0 não se refere a uma matriz válida,Identifier $0 does not identify a valid matrix., 
+matrix_column_outbounds_full,Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas,Error at line $0: The number of columns $1 is invalid for the matrix $2 which has $3 columns., 
+matrix_column_outbounds,Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas,The number of columns $0 is invalid for the matrix $1 which has $2 columns., 
+matrix_line_outbounds_full,Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas,Error at line $0: The number of lines $1 is invalid for matrix $2 which has $3 lines., 
+matrix_line_outbounds,Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas,The number of lines $0 is invalid for matrix $1 which has $2 lines., 
+vector_line_outbounds_full,Erro na linha $0: O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.,Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements., 
+vector_line_outbounds,O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.,Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements., 
+vector_not_matrix_full,Erro na linha $0: $1 não é uma matriz,Error at line $0: $1 is not a matrix., 
+vector_not_matrix,$0 não é uma matriz,$0 is not a matrix., 
+invalid_infix_op_full,"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado aos tipos $3 e $4",Error at line $0:  The expression $1 is not valid because the operator $2 cannot be applied to the types $3 and $4., 
+invalid_infix_op,"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado aos tipos $2 e $3",The expression $0 is not valid because the operator $1 cannot be applied to the types $2 and $3., 
+invalid_unary_op_full,"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado ao tipo $3",Error at line $0:  The expression $1 is not valid because the operator $2 cannot be applied to the type $3., 
+invalid_unary_op,"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado ao tipo $2",The expression $0 is not valid because the operator $1 cannot be applied to the type $2., 
+unknown_op,Erro interno crítico: Operação $0 desconhecida,Critical error: Unknown operator $0., 
+duplicate_function,"A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.","The function $0 at line: $1, column: $2 has already been declared.", 
+duplicate_variable,"A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.","The variable $0 at line: $1, column: $2 has already been declared.", 
+main_parameters,A função inicio não pode ter parâmetros.,The main function cannot have parameters., 
+symbol_not_found_full,"A variável $0 na linha: $1, coluna: $2 não foi declarada","The variable $0 at line: $1, column: $2 has not been declared.", 
+symbol_not_found,A variável $0 não foi declarada,The variable $0 has not been declared., 
+array_dimension_not_int_full,As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser do tipo inteiro.,The array (vector or matrix) dimensions at line $0 must be of type int., 
+array_dimension_not_int,As dimensões de um arranjo (vetor ou matriz) devem ser do tipo inteiro.,An array (vector or matrix) dimensions must be of type int., 
+array_dimension_not_positive_full,As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser valores positivos.,The array (vector or matrix) dimensions at line $0 must be positive., 
+array_dimension_not_positive,As dimensões de um arranjo (vetor ou matriz) devem ser valores positivos.,An array (vector or matrix) dimensions must be positive., 
+incompatible_types_full,Era esperado um $0 mas a expressão $1 na linha $2 resulta em $3.,It expected $0 but the expression $1 at line $2 results in $3., 
+incompatible_types,Era esperado um $0 mas a expressão $1 resulta em $2.,It expected $0 but the expression $1 results in $2., 
+incompatible_types_array_full,A expressão $0 na linha $2 é incompatível com o tipo $1.,The expression $0 at line $2 is not compatible with type $1., 
+incompatible_types_array,A expressão $0 é incompatível com o tipo $1.,The expression $0 is not compatible with type $1., 
+invalid_case_type_full,O caso $0 na linha $1 é incompatível com o tipo $2.,The case expression $0 at line $1 is not compatible with type $2., 
+invalid_case_type,O caso $0 é incompatível com o tipo $1.,The case expression $0 is not compatible with type $1., 
+function_no_return,A função $0 não possui um comando de devolução acessível. Toda função deve ter ao menos um comando 'devolva' no seu corpo principal.,The function $0 does not have a reacheable return command. Every function must have at least one return command in its main body., 
+invalid_array_literal_type_full,Erro na linha $0: a expressão $1 não resulta em um tipo compatível.,Error at line $0: the expression $1 does not result in a compatible type., 
+invalid_array_literal_type,A expressão $0 não resulta em um tipo compatível.,The expression $0 does not result in a compatible type., 
+invalid_array_literal_line_full,Erro na linha $0: esperava-se $1 linhas mas encontrou $2.,Error at line $0: it expected $1 lines but found $2., 
+invalid_array_literal_line,Esperava-se $0 linhas mas encontrou $1.,It expected $0 lines but found $1., 
+invalid_array_literal_column_full,Erro na linha $0: esperava-se $1 colunas mas encontrou $2.,Error at line $0: it expected $1 column but found $2., 
+invalid_array_literal_column,Esperava-se $0 colunas mas encontrou $1.,It expected $0 column but found $1., 
+exceeded_input_request,A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.,The amount of reads requested exceeded the amount of inputs available., 
+test_case_few_reads,Caso de teste $0 falhou: ainda restam entradas!,Teste case $0 failed: there are available inputs remaining., 
+test_case_failed,"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=""$1""> <span>Caso de teste $0 não executou com sucesso.</span></div>","<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=""$1""> <span>Test case $0 did not executed successfully.</span></div>", 
+test_case_failed_exception,"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=""$2""> <span>Caso de teste $0 falhou</span>: $1","<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=""$2""> <span>Test case $0 failed</span>: $1", 
+test_case_exception,Ocorreu uma exceção no caso de teste $0: $1,An exception has ocurred during the execution of test case $0: $1, 
+invalid_type_conversion,O valor $0 não pode ser convertido para o tipo $1,The value $0 cannot be converted to type $1., 
+invalid_read_type,"Erro na linha $0: A entrada ""$1"" não é do tipo $2, que é o tipo da variável <span class='ivprog-error-varname'>$3</span>.","Error at line $0: The input ""$1"" is not of type $2 which is the type of the variable <span class='ivprog-error-varname'>$3</span>.", 
+invalid_read_type_array,"Erro na linha $0: A entrada ""$1"" não é do tipo $2, que é o tipo aceito pela variável <span class='ivprog-error-varname'>$3</span> que é um $4.","Error at line $0: The input ""$1"" is not of type $2 which is the type  accepted by the variable <span class='ivprog-error-varname'>$3</span> of type $4.", 
+inform_valid_identifier,"Informe um nome válido! O nome não pode ser uma palavra reservadas e deve começar com letras ou _ e conter apenas letras, números e _.","Enter a valid identifier! The identifier cannot be a reserved word and it must begin with a letter or _, followed by numbers, letters and _ only.", 
+inform_valid_global_duplicated,"Já existe uma variável global com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.","A global variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each gloval variable.", 
+inform_valid_variable_duplicated,"Já existe uma variável com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.","A variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each variable.", 
+inform_valid_function_duplicated,"Já existe uma função com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.","A function named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each function.", 
+inform_valid_param_duplicated,"Já existe um parâmetro com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.","A parameter named <span class='ivprog-error-varname'>$0</span> already exists in function <span class='ivprog-error-varname'>$1</span>, you need distinc names for each parameter.", 
+invalid_character,O caractere $0 na linha $1 não pode ser utilizado neste contexto.,The character $0 at line $1 cannot be used in this context., 
+annonymous_array_literal,"Erro na linha $0: a notação de vetor/matriz só permitida durante a inicialização de uma variável desse tipo. Ex: inteiro vec[3] ← {1,2,3}.","Error at line $0: the array notation is only permitted during initialization of an array variable. i. e.: int vec[3] ← {1, 2, 3}.", 
+invalid_matrix_literal_line,A expressão $0 na linha $1 não possui um número de elementos igual a linha anterior. Todas as linhas de uma matriz devem ter a mesma quantidade de elementos.,The expression $0 at line $1 does not have the same number of elements as the last line. All lines of a matrix must have the same number of elements., 
+cannot_infer_matrix_line,Não é possível inferir o número de linhas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.,It is not possible to infer the number of lines of matrix $0 at line $1. It must be initialized or have its lines explicitly declared., 
+cannot_infer_matrix_column,Não é possível inferir o número de colunas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.,It is not possible to infer the number of columns of matrix $0 at line $1. It must be initialized or have its columns explicitly declared., 
+cannot_infer_vector_size,Não é possível inferir o número de elementos do vetor $0 na linha $1. É necessário que ele seja inicializado ou que o valor seja informado de forma explícita,It is not possible to infer the number of elements of vector $0 at line $1. It must be initialized or have its size explicitly declard., 
+matrix_to_vector_literal_attr,Erro na linha $0: A expressão $1 representa uma matriz e não pode ser atribuída ao vetor $2.,Error at line $0: The expression $1 represents a matrix and cannot be assigned to the vector $2., 
+vector_to_matrix_literal_attr,Erro na linha $0: A expressão $1 representa um vetor e não pode ser atribuído a matriz $2.,Error at line $0: The expression $1 represents a vector and cannot be assigned to the matrix $2., 
+invalid_const_ref_full,A variável $0 fornecida como parâmetro para a função $1 na linha $2 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.,The variable $0 provided as a parameter to the function $1 at line $2 is a constant and cannot be used in this context. Use a non-constant variable or vector position., 
+invalid_const_ref,A variável $0 fornecida como parâmetro para a função $1 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.,The variable $0 provided as a parameter to the function $1 is a constant and cannot be used in this context. Use a non-constant variable or vector position., 
+invalid_const_assignment_full,Erro na linha $0: $1 é uma constante e portanto não pode ter seu valor alterado,Error at line $0: $1 is a constant e therefore cannot have its value changed., 
+invalid_const_assignment,$0 é uma constante e portanto não pode ter seu valor alterado,$0 is a constant e therefore cannot have its value changed., 
+array_init_not_literal,"Erro na linha $0: Vetor/Matriz só pode ser inicializado por literal. Ex: real vetor[] <- {1,2,3}","Error at line $0: An array (vector or matrix) can only be initialized by an array literal. i.e : real vector[] <- {1,2,3}", 
+array_exceeds_2d,Erro na linha $0: O número máximo de dimensões que um arranjo pode ter é 2. Elemento de 3 ou mais dimensões encontrado!,Error at line $0: The maximum number of dimensions an array can have is 2. An element of 3 or dimensions was found., 
+invalid_matrix_id_dimension,"Erro na linha $0: Você deve definir todas as dimensões da matriz quando uma delas é definida por uma variável! Ex: real mat1[var][5], mat2[5][var]","Error at line $0: You must define all dimensions of the matrix when one of them is defined by a variable! i.e: real mat1[var][5], mat2[5][var]", 
+invalid_vector_init,Erro na linha $0: Não se pode inicializar um vetor que teve seu tamanho declarado utilizando uma variável! Utilize uma atribuição de vetores ou use um laço de repetição.,Error at line $0: You cannot initialize a vector when its size is defined by a variable. Use a vector assignment or loop command., 
+invalid_matrix_init,Erro na linha $0: Não se pode inicializar uma matrix que teve ao menos uma das suas dimensões declaradas utilizando uma variável! Utilize uma atribuição de matrizes ou use um laço de repetição.,Error at line $0: You cannot initialize a matrix when one of its dimensions is defined by a variable. Use a matrix assignment or loop command., 
+invalid_vector_assignment_full,Erro na linha $0: Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $1 comporta $2 e $3 comporta $4!,Error at line $0: You can only assign a vector to another when both have the same number of elements. $1 has $2 and $3 has $4 elements!, 
+invalid_vector_assignment,Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $0 comporta $1 e $2 comporta $3!,You can only assign a vector to another when both have the same number of elements. $0 has $1 and $2 has $3 elements!, 
+invalid_matrix_assignment_full,"Erro na linha $0: Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $1 tem $2 linhas e $3 colunas, enquanto $4 possui $5 linhas e $6 colunas!",Error at line $0: You can only assign a matrix to another when both have dimensions of the same size. $1 has $2 lines e $3 columns while $4 has $5 lines and $6 columns!, 
+invalid_matrix_assignment,"Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $0 tem $1 linhas e $2 colunas, enquanto $3 possui $4 linhas e $5 colunas!",You can only assign a matrix to another when both have dimensions of the same size. $0 has $1 lines e $2 columns while $3 has $4 lines and $5 columns!, 
+matrix_to_vector_attr,Erro na linha $0: $1 representa uma matriz e não pode ser atribuída ao vetor $2.,Error at line $0: $1 represents a matrix and cannot be assigned to the vector $2., 
+vector_to_matrix_attr,Erro na linha $0: $1 representa um vetor e não pode ser atribuído a matriz $2.,Error at line $0: $1 represents a vector and cannot be assigned to the matrix $2., 
+invalid_matrix_index_assign_full,"Erro na linha $0: A posição $1 da matriz $2 aceita apenas vetores de tamanho $3, mas $4 tem tamanho $5",Error at line $0: The position $1 of the matrix $2 only accepts vectors of size $3 but $4 has size $5., 
+invalid_matrix_index_assign,"A linha $0 da matriz $1 aceita apenas vetores de tamanho $2, mas $3 tem tamanho $4",The position $0 of the matrix $1 only accepts vectors of size $2 but $3 has size $4., 
+invalid_number_elements_vector,Esperava-se por $0 elementos na linha $1 mas a expressão $2 possui $3 elementos.,It expected $0 elements at line $1 but the expression $2 has $3 elements., 
+invalid_number_lines_matrix,Esperava-se por uma matriz com $0 linhas na linha $1 mas a expressão $2 possui $3 linhas,It expected a matrix with $0 lines at line $1 but the expression $2 has $3 lines., 
+divsion_by_zero_full,Erro na linha $0: A expressão $1 resulta em uma divisão por 0.,Error at line $0: The expression $1 resuts in a division by zero., 
+divsion_by_zero,A expressão $0 resulta em uma divisão por 0.,The expression $0 resuts in a division by zero., 
+undefined_tanget_value,Erro na linha $0: A tangente de $1° não é indefinida.,Error at line $0: The tangent of $1° is undefined., 
+negative_log_value,Erro na linha $0: Não se pode calcular o log de um valor negativo.,Error at line $0: You cannot calculate the logarithm of a negative value., 
+invalid_string_index,Erro na linha $0 durante a execução da função $1: $2 é um índice inválido para a cadeia de texto $3. Os valores válidos vão de 0 à $4,Error at line $0 during the execution of the function $1: $2 is an invalid index for the text string $3. The valid indexes go from 0 to $4., 
+negative_sqrt_value,Erro na linha $0: Não é permitido calcular a raiz quadrada de um número negativo.,Error at line $0: It is not allowd to calculate the square root of a negative number., 
+exceeded_recursive_calls,Erro na execução da linha $0: Número de chamadas recursivas execedeu o limite máximo definido!,Error during the execution of line $0: The number of recursive calls exceeded the allowed number of calls., 

+ 0 - 89
i18n/es/error.json

@@ -1,89 +0,0 @@
-{
-  "token_missing_one": "Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3",
-  "token_missing_two": "Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4",
-  "eos_missing": "Falta uma nova linha ou ; na linha: $0, coluna: $1",
-  "invalid_type": "$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3",
-  "invalid_array_dimension": "A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.",
-  "invalid_array_size": "O tamnho do vetor/matriz excede o máximo de 2 na linha $0",
-  "extra_lines": "Nenhum texto é permitido após '}' em 'programa {...}'",
-  "invalid_main_return": "A função $0 deve retornar $1 na linha $2",
-  "invalid_var_declaration": "Erro na linha $0. Variáveis só podem ser declarados no corpo principal da função e de preferência nas primeiras linhas.",
-  "invalid_break_command": "Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso'",
-  "invalid_terminal": "Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.",
-  "const_not_init": "Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada",
-  "id_missing": "Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2",
-  "invalid_id_format": "$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.",
-  "main_missing": "A função principal não foi encontrada",
-  "invalid_global_var": "Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE",
-  "not_implemented": "Erro interno crítico: A função definida pelo sistema $0 não foi implementada.",
-  "function_missing": "A função $0 não foi encontrada",
-  "function_missing_full": "A função $0 na linha: $1, coluna: $2 não foi encontrada",
-  "invalid_parameters_size_full": "Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.",
-  "invalid_parameters_size": "A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2",
-  "invalid_ref_full": "A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.",
-  "invalid_ref": "A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.",
-  "invalid_parameter_type_full": "A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.",
-  "invalid_parameter_type": "A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.",
-  "unknown_command_full": "Erro interno crítico: comando desconhecido encontrado na linha $0",
-  "unknown_command": "Erro interno crítico: comando desconhecido encontrado!",
-  "loop_condition_type_full": "Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico",
-  "loop_condition_type": "A condição $0 do laço de repetição deve ser do tipo lógico",
-  "endless_loop_full": "Possível laço infinito detectado no seu código. Verifique a linha $0",
-  "endless_loop": "Possível laço infinito detectado no seu código.",
-  "for_condition_type_full": "Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico",
-  "for_condition_type": "A condição de parada $0 do comando para(...) deve ser do tipo lógico",
-  "if_condition_type_full": "Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico",
-  "if_condition_type": "A condição $0 do comando se...senao deve ser do tipo lógico",
-  "invalid_return_type_full": "Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.",
-  "invalid_return_type": "A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.",
-  "invalid_void_return_full": "Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2",
-  "invalid_void_return": "A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1",
-  "unexpected_break_command_full": "Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0",
-  "unexpected_break_command": "Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso",
-  "invalid_dimension": "As dimensões de um vetor/matriz devem ser do tipo inteiro",
-  "void_in_expression_full": "Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio",
-  "void_in_expression": "A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio",
-  "invalid_array_access_full": "Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido",
-  "invalid_array_access": "Identificador $0 não se refere a um vetor/matriz válido",
-  "invalid_matrix_access_full": "Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida",
-  "invalid_matrix_access": "Identificador $0 não se refere a uma matriz válida",
-  "matrix_column_outbounds_full": "Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas",
-  "matrix_column_outbounds": "Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas",
-  "matrix_line_outbounds_full": "Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas",
-  "matrix_line_outbounds": "Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas",
-  "vector_line_outbounds_full": "Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas",
-  "vector_line_outbounds": "Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas",
-  "vector_not_matrix_full": "Erro na linha $0: $1 não é uma matriz",
-  "vector_not_matrix": "$1 não é uma matriz",
-  "invalid_infix_op_full": "Erro na linha $0: não é possível aplicar a operação $1 entre os tipos $2 e $3",
-  "invalid_infix_op": "Não é possível aplicar a operação $0 entre os tipos $1 e $2",
-  "invalid_unary_op_full": "Erro na linha $0: não é possível aplicar a operação $1 ao tipo $2",
-  "invalid_unary_op": "Não é possível aplicar a operação $0 ao tipo $1",
-  "unknown_op": "Erro interno crítico: Operação $0 desconhecida",
-  "duplicate_function": "A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.",
-  "duplicate_variable": "A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.",
-  "main_parameters": "A função inicio não pode ter parâmetros.",
-  "symbol_not_found_full": "A variável $0 na linha: $1, coluna: $2 não foi declarada",
-  "symbol_not_found": "A variável $0 não foi declarada",
-  "array_dimension_not_int_full": "As dimensões de um vetor/matriz na linha: $0 devem ser do tipo inteiro.",
-  "array_dimension_not_int": "As dimensões de um vetor/matriz devem ser do tipo inteiro.",
-  "array_dimension_not_positive_full": "As dimensões de um vetor/matriz na linha: $0 devem ser valores positivos.",
-  "array_dimension_not_positive": "As dimensões de um vetor/matriz devem ser valores positivos.",
-  "incompatible_types_full": "O tipo $0 não é compatível com o tipo resultante da expressão na linha $1",
-  "incompatible_types": "O tipo $0 não é compatível com o tipo resultante da expressão fornecida.",
-  "incompatible_types_array_full": "A expressão $0 é incompatível com o tipo $1 na linha: $2, coluna: $3.",
-  "incompatible_types_array": "A expressão $0 é incompatível com o tipo $1.",
-  "invalid_case_type_full": "O caso $0 na linha $1 é incompatível com o tipo $2.",
-  "invalid_case_type": "O caso $0 é incompatível com o tipo $1.",
-  "function_no_return": "A função $0 não possui um retorno acessível. Toda função deve ter ao menos um retorno no seu corpo principal.",
-  "invalid_array_literal_type_full": "Erro na linha $0: a expressão $1 não resulta em um tipo compatível.",
-  "invalid_array_literal_type": "A expressão $0 não resulta em um tipo compatível.",
-  "invalid_array_literal_line_full": "Erro na linha $0: esperava-se $1 linhas mas encontrou $2.",
-  "invalid_array_literal_line": "Esperava-se $0 linhas mas encontrou $1.",
-  "invalid_array_literal_column_full": "Erro na linha $0: esperava-se $1 colunas mas encontrou $2.",
-  "invalid_array_literal_column": "Esperava-se $0 colunas mas encontrou $1.",
-  "exceeded_input_request": "A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.",
-  "test_case_few_reads": "Caso de teste $0 falhou: ainda restam entradas!",
-  "test_case_failed": "Caso de teste $0 falhou: entradas:<$1>; saída esperada:<$2>; saída:<$3>",
-  "test_case_failed_exception": "Caso de teste $0 falhou: $1"
-}

+ 0 - 9
i18n/es/index.js

@@ -1,9 +0,0 @@
-import errors from './error.json';
-import messages from './message.json'
-import ui from './ui.json';
-
-export default {
- 'message' : messages,
- 'error': errors,
- 'ui': ui
-}

+ 0 - 4
i18n/es/message.json

@@ -1,4 +0,0 @@
-{
-  "test_case_success": "Caso de teste $0: OK",
-  "test_case_duration": "Levou $0ms"
-}

+ 0 - 147
i18n/es/ui.json

@@ -1,147 +0,0 @@
-{
-  "function": "function",
-  "btn_clear": "Clear",
-  "btn_function": "Function",
-  "btn_arithmetic_plus": "Sum",
-  "btn_arithmetic_minus": "Minus",
-  "btn_arithmetic_multiplication": "Multiplication",
-  "btn_arithmetic_division": "Division",
-  "btn_arithmetic_module": "Module",
-  "btn_break":"Break",
-  "btn_case":"Case",
-  "start": "start",
-  "void": "void",
-  "integer": "integer",
-  "real": "real",
-  "program": "program",
-  "text": "string",
-  "text_start": "text",
-  "boolean": "boolean",
-  "true": "true",
-  "false": "false",
-  "variable": "Variable",
-  "command": "Command",
-  "new_parameter": "parameter",
-  "new_variable": "variable",
-  "new_global": "global",
-  "new_function": "new_function",
-  "matrix": "matrix",
-  "vector": "vector",
-  "text_comment_start": "Initial comment of function...",
-  "text_comment_main": "This is the main function...",
-  "text_read_var": "Reading data",
-  "text_write_var": "Writing data",
-  "text_command_read":"read",
-  "text_command_write":"write",
-  "text_comment": "Comment",
-  "text_attribution": "Attribution",
-  "text_if":"if",
-  "text_else":"else",
-  "text_break":"break",
-  "text_for":"for",
-  "text_code_while":"while",
-  "text_code_do":"do",
-  "text_command_do":"do",
-  "text_code_switch": "switch",
-  "text_code_case": "case",
-  "text_config_programming":"Programming",
-  "text_config_programming_both":"Visual and textual",
-  "text_config_programming_textual":"Textual",
-  "text_config_programming_visual":"Visual",
-  "text_logic_expression": "Logic Expression",
-  "text_arithmetic_expression": "Relational Expression",
-  "text_iftrue": "If true then",
-  "text_message_error_activity_file": "There was an error processing the activity. <br>Please reload the page and try again.",
-  "text_message_error_activity_reload": "Reload",
-  "text_receives": "receives",
-  "text_repeatNtimes": "Repeat N times",
-  "text_return":"return",
-  "text_btn_return":"Return",
-  "text_whiletrue": "While true",
-  "text_dowhiletrue": "Do while true",
-  "text_switch": "Switch",
-  "text_functioncall": "Function call",
-  "text_value": "Value",
-  "text_operator": "Operator",
-  "text_parentheses": "Parentheses",
-  "text_change": "Change",
-  "text_teacher_algorithm": "Algorithm",
-  "text_teacher_algorithm_include": "Include the following algorithm in exercise",
-  "text_teacher_test_case": "Test cases",
-  "text_teacher_config": "Settings",
-  "text_teacher_data_types": "Data types",
-  "text_teacher_commands": "Commands",
-  "text_teacher_functions": "Functions",
-  "text_teacher_create_functions": "Create new functions",
-  "text_teacher_create_movement_functions": "Move functions",
-  "text_teacher_test_case_input": "Input",
-  "text_teacher_test_case_output": "Output",
-  "text_teacher_test_case_actions": "Actions",
-  "text_teacher_test_case_add": "Add test cases",
-  "text_header_ivprog_functions": "iVProg Functions",
-  "text_menu_functions_math":"Mathematic",
-  "text_menu_functions_text":"Text",
-  "text_menu_functions_arrangement":"Arrangement",
-  "text_menu_functions_conversion":"Conversion",
-  "text_none_variable":"There is no declared variable",
-  "text_none_variable_instruction":"Create a new variable to use it",
-  "text_ivprog_description":"Interactive Visual Programming on the Internet",
-  "tooltip_visual": "Visual programming",
-  "tooltip_textual": "Textual programming",
-  "tooltip_upload": "Upload code file",
-  "tooltip_download": "Download code file",
-  "tooltip_undo": "Undo",
-  "tooltip_redo": "Redo",
-  "tooltip_run": "Run program",
-  "tooltip_evaluate": "Evaluate program",
-  "tooltip_help": "Help",
-  "tooltip_add_global": "Add global variable",
-  "tooltip_minimize": "Hidde function elements",
-  "tooltip_console": "Open/Close console",
-  "var_menu_select_var": "Select a var",
-  "var_menu_select_all": "Select",
-  "var_menu_select_function": "Select a function",
-  "expression_menu_select": "Construct any logical condition",
-  "math": "Mathematic",
-  "text_t": "Text",
-  "inform_valid_name": "Inform a valid name!",
-  "inform_valid_content": "Enter some content!",
-  "inform_valid_expression": "Construct the logical condition!",
-  "inform_valid_name_duplicated": "This name is already in use by other function.",
-  "inform_valid_global_duplicated": "A global variable with this name already exists.",
-  "inform_valid_variable_duplicated" : "A local variable with this name already exists.",
-  "arrangement": "Arrangement",
-  "conversion": "Conversion",
-  "$sin": "sin",
-  "$cos": "cos",
-  "$tan": "tan",
-  "$sqrt": "sqrt",
-  "$pow": "pow",
-  "$log": "log",
-  "$abs": "abs",
-  "$negate": "negate",
-  "$invert": "invert",
-  "$max": "maximum",
-  "$min": "minimum",
-  "$substring": "substring",
-  "$length": "length",
-  "$uppercase": "uppercase",
-  "$lowercase": "lowercase",
-  "$charAt": "char_at",
-  "$numElements": "total_of_elements",
-  "$matrixLines": "total_of_lines",
-  "$matrixColumns": "total_of_columns",
-  "$isReal": "is_real",
-  "$isInt": "is_integer",
-  "$isBool": "is_logic",
-  "$castReal": "to_real",
-  "$castInt": "to_integer",
-  "$castBool": "to_logic",
-  "$castString": "to_string",
-  "text_ivprog_version":"Version",
-  "text_teacher_filter": "Filter",
-  "text_teacher_filter_active": "Activate",
-  "text_teacher_filter_help": "When filter is activated, all iVProg modifications will be blocked.",
-  "text_teacher_generate_outputs": "Generate outputs",
-  "text_teacher_generate_outputs_algorithm": "Before generate outputs, create an algorithm!"
-}

+ 12 - 7
i18n/index.js

@@ -1,9 +1,14 @@
-import EN from './en';
-import PT from './pt';
-import ES from './es';
+import Messages from './message.csv';
+import UI from './ui.csv';
+import Errors from './error.csv'
 
-export default {
-  'en': EN,
-  'pt': PT,
-  'es': ES
+const i18n_data = {};
+for(const key in UI) {
+  const data = {};
+  data['error'] = Errors[key];
+  data['message'] = Messages[key];
+  data['ui'] = UI[key];
+  i18n_data[key] = data;
 }
+
+export default i18n_data;

+ 9 - 0
i18n/message.csv

@@ -0,0 +1,9 @@
+id,pt,en ,es
+test_case_success,"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=""$1""><span>Caso de teste $0</span>: OK</div>","<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=""$1""><span>Test case $0</span>: OK</div>", 
+test_case_duration,Levou $0ms,Took $0ms, 
+test_suite_grade,A sua solução alcançou $0% da nota.,Your solution scored $0% of the grade., 
+awaiting_input_message,O seu programa está em execução e aguardando uma entrada! Digite algo e pressione ENTER...,Your program is running and awaiting for an input. Type something and press ENTER…, 
+assessment-empty-expected-tooltip,A saída gerada foi além do esperado,The generated output was beyond the amount expected, 
+assessment-empty-generated-tooltip,O programa não gerou saídas suficientes,The program did not generated enough outputs, 
+testcase_autogen_unused_input,O caso de teste $0 possui mais entradas do que as leituras feitas no programa.,The test case $0 has more inputs than output than the number of reads present in the algorithm., 
+testcase_autogen_empty,O caso de teste $0 não gerou qualquer saída.,The test case $0 did not generate any output., 

+ 0 - 132
i18n/pt/error.json

@@ -1,132 +0,0 @@
-{
-  "token_missing_one": "Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3",
-  "token_missing_two": "Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4",
-  "eos_missing": "Falta uma nova linha ou ; na linha: $0, coluna: $1",
-  "invalid_type": "$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3",
-  "invalid_array_dimension": "A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.",
-  "invalid_array_size": "O tamnho do vetor/matriz excede o máximo de 2 na linha $0",
-  "extra_lines": "Nenhum texto é permitido após '}' em 'programa {...}'",
-  "invalid_main_return": "A função $0 deve retornar $1 na linha $2",
-  "invalid_var_declaration": "Erro na linha $0: variáveis só podem ser declaradas no corpo principal da função e nas primeiras linhas, antes de qualquer comando.",
-  "invalid_break_command": "Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso'",
-  "invalid_terminal": "Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.",
-  "const_not_init": "Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada",
-  "id_missing": "Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2",
-  "invalid_id_format": "$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.",
-  "main_missing": "A função principal não foi encontrada",
-  "invalid_global_var": "Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE",
-  "not_implemented": "Erro interno crítico: A função definida pelo sistema $0 não foi implementada.",
-  "function_missing": "A função $0 não foi encontrada",
-  "function_missing_full": "A função $0 na linha: $1, coluna: $2 não foi encontrada",
-  "invalid_parameters_size_full": "Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.",
-  "invalid_parameters_size": "A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2",
-  "invalid_ref_full": "A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.",
-  "invalid_ref": "A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.",
-  "invalid_parameter_type_full": "A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.",
-  "invalid_parameter_type": "A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.",
-  "unknown_command_full": "Erro interno crítico: comando desconhecido encontrado na linha $0",
-  "unknown_command": "Erro interno crítico: comando desconhecido encontrado!",
-  "loop_condition_type_full": "Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico",
-  "loop_condition_type": "A condição $0 do laço de repetição deve ser do tipo lógico",
-  "endless_loop_full": "Possível laço infinito detectado no seu código. Verifique a linha $0",
-  "endless_loop": "Possível laço infinito detectado no seu código.",
-  "for_condition_type_full": "Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico",
-  "for_condition_type": "A condição de parada $0 do comando para(...) deve ser do tipo lógico",
-  "if_condition_type_full": "Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico",
-  "if_condition_type": "A condição $0 do comando se...senao deve ser do tipo lógico",
-  "invalid_return_type_full": "Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.",
-  "invalid_return_type": "A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.",
-  "invalid_void_return_full": "Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2",
-  "invalid_void_return": "A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1",
-  "unexpected_break_command_full": "Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0",
-  "unexpected_break_command": "Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso",
-  "invalid_dimension": "As dimensões de um vetor/matriz devem ser do tipo inteiro",
-  "void_in_expression_full": "Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio",
-  "void_in_expression": "A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio",
-  "invalid_array_access_full": "Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido",
-  "invalid_array_access": "Identificador $0 não se refere a um vetor/matriz válido",
-  "invalid_matrix_access_full": "Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida",
-  "invalid_matrix_access": "Identificador $0 não se refere a uma matriz válida",
-  "matrix_column_outbounds_full": "Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas",
-  "matrix_column_outbounds": "Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas",
-  "matrix_line_outbounds_full": "Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas",
-  "matrix_line_outbounds": "Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas",
-  "vector_line_outbounds_full": "Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas",
-  "vector_line_outbounds": "Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas",
-  "vector_not_matrix_full": "Erro na linha $0: $1 não é uma matriz",
-  "vector_not_matrix": "$1 não é uma matriz",
-  "invalid_infix_op_full": "Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado aos tipos $3 e $4",
-  "invalid_infix_op": "A expressão $0 é inválida, pois o operador $1 não pode ser aplicado aos tipos $2 e $3",
-  "invalid_unary_op_full": "Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado ao tipo $3",
-  "invalid_unary_op": "A expressão $0 é inválida, pois o operador $1 não pode ser aplicado ao tipo $2",
-  "unknown_op": "Erro interno crítico: Operação $0 desconhecida",
-  "duplicate_function": "A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.",
-  "duplicate_variable": "A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.",
-  "main_parameters": "A função inicio não pode ter parâmetros.",
-  "symbol_not_found_full": "A variável $0 na linha: $1, coluna: $2 não foi declarada",
-  "symbol_not_found": "A variável $0 não foi declarada",
-  "array_dimension_not_int_full": "As dimensões de um vetor/matriz na linha: $0 devem ser do tipo inteiro.",
-  "array_dimension_not_int": "As dimensões de um vetor/matriz devem ser do tipo inteiro.",
-  "array_dimension_not_positive_full": "As dimensões de um vetor/matriz na linha: $0 devem ser valores positivos.",
-  "array_dimension_not_positive": "As dimensões de um vetor/matriz devem ser valores positivos.",
-  "incompatible_types_full": "Era esperado um $0 mas a expressão $1 na linha $2 resulta em $3.",
-  "incompatible_types": "Era esperado um $0 mas a expressão $1 resulta em $2.",
-  "incompatible_types_array_full": "A expressão $0 é incompatível com o tipo $1 na linha: $2, coluna: $3.",
-  "incompatible_types_array": "A expressão $0 é incompatível com o tipo $1.",
-  "invalid_case_type_full": "O caso $0 na linha $1 é incompatível com o tipo $2.",
-  "invalid_case_type": "O caso $0 é incompatível com o tipo $1.",
-  "function_no_return": "A função $0 não possui um comando de devolução acessível. Toda função deve ter ao menos um comando 'devolva' no seu corpo principal.",
-  "invalid_array_literal_type_full": "Erro na linha $0: a expressão $1 não resulta em um tipo compatível.",
-  "invalid_array_literal_type": "A expressão $0 não resulta em um tipo compatível.",
-  "invalid_array_literal_line_full": "Erro na linha $0: esperava-se $1 linhas mas encontrou $2.",
-  "invalid_array_literal_line": "Esperava-se $0 linhas mas encontrou $1.",
-  "invalid_array_literal_column_full": "Erro na linha $0: esperava-se $1 colunas mas encontrou $2.",
-  "invalid_array_literal_column": "Esperava-se $0 colunas mas encontrou $1.",
-  "exceeded_input_request": "A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.",
-  "test_case_few_reads": "Caso de teste $0 falhou: ainda restam entradas!",
-  "test_case_failed": "<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\"$1\"> <span>Caso de teste $0 não executou com sucesso.</span></div>",
-  "test_case_failed_exception": "<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\"$2\"> <span>Caso de teste $0 falhou</span>: $1",
-  "test_case_exception": "Ocorreu uma exceção no caso de teste $0: $1",
-  "invalid_type_conversion": "O valor $0 não pode ser convertido para o tipo $1",
-  "invalid_read_type":"Erro na linha $0: A entrada \"$1\" não é do tipo $2, que é o tipo da variável <span class='ivprog-error-varname'>$3</span>.",
-  "invalid_read_type_array":"Erro na linha $0: A entrada \"$1\" não é do tipo $2, que é o tipo aceito pela variável <span class='ivprog-error-varname'>$3</span> que é um $4.",
-  "inform_valid_identifier": "Informe um nome válido! O nome não pode ser uma palavra reservadoa e deve começar com letras e conter apenas letras, números e _",
-  "inform_valid_global_duplicated": "Já existe uma variável global com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.",
-  "inform_valid_variable_duplicated" : "Já existe uma variável com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.",
-  "inform_valid_function_duplicated" : "Já existe uma função com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.",
-  "inform_valid_param_duplicated" : "Já existe um parâmetro com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.",
-  "invalid_character": "O caractere $0 na linha $1 não pode ser utilizado neste contexto.",
-  "annonymous_array_literal": "Erro na linha $0: a notação de vetor/matriz só permitida durante a inicialização de uma variável desse tipo. Ex: inteiro vec[3] ← {1,2,3}.",
-  "invalid_matrix_literal_line": "A expressão $0 na linha $1 não possui um número de elementos igual a linha anterior. Todas as linhas de uma matriz devem ter a mesma quantidade de elementos.",
-  "cannot_infer_matrix_line": "Não é possível inferir o número de linhas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.",
-  "cannot_infer_matrix_column": "Não é possível inferir o número de colunas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.",
-  "cannot_infer_vector_size": "Não é possível inferir o número de elementos do vetor $0 na linha $1. É necessário que ele seja inicializado ou que o valor seja informado de forma explícita",
-  "matrix_to_vector_literal_attr":  "Erro na linha $0: A expressão $1 representa uma matriz e não pode ser atribuída ao vetor $2.",
-  "vector_to_matrix_literal_attr":  "Erro na linha $0: A expressão $1 representa um vetor e não pode ser atribuído a matriz $2.",
-  "invalid_const_ref_full": "A variável $0 fornecida como parâmetro para a função $1 na linha $2 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.",
-  "invalid_const_ref": "A variável $0 fornecida como parâmetro para a função $1 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.",
-  "invalid_const_assignment_full": "Erro na linha $0: $1 é uma constante e portanto não pode ter seu valor alterado",
-  "invalid_const_assignment": "$0 é uma constante e portanto não pode ter seu valor alterado",
-  "array_init_not_literal": "Erro na linha $0: Vetor/Matriz só pode ser inicializado por literal. Ex: real vetor[] <- {1,2,3}",
-  "array_exceeds_2d": "Erro na linha $0: O número máximo de dimensões que um arranjo pode ter é 2. Elemento de 3 ou mais dimensões encontrado!",
-  "invalid_matrix_id_dimension": "Erro na linha $0: Você deve definir todas as dimensões da matriz quando uma delas é definida por uma variável! Ex: real mat1[var][5], mat2[5][var]",
-  "invalid_vector_init": "Erro na linha $0: Não se pode inicializar um vetor que teve seu tamanho declarado utilizando uma variável! Utilize uma atribuição de vetores ou use um laço de repetição.",
-  "invalid_matrix_init": "Erro na linha $0: Não se pode inicializar uma matrix que teve ao menos uma das suas dimensões declaradas utilizando uma variável! Utilize uma atribuição de matrizes ou use um laço de repetição.",
-  "invalid_vector_assignment_full": "Erro na linha $0: Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $1 comporta $2 e $3 comporta $4!",
-  "invalid_vector_assignment": "Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $0 comporta $1 e $2 comporta $3!",
-  "invalid_matrix_assignment_full": "Erro na linha $0: Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $1 tem $2 linhas e $3 colunas, enquanto $4 possui $5 linhas e $6 colunas!",
-  "invalid_matrix_assignment": "Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $0 tem $1 linhas e $2 colunas, enquanto $3 possui $4 linhas e $5 colunas!",
-  "matrix_to_vector_attr":  "Erro na linha $0: $1 representa uma matriz e não pode ser atribuída ao vetor $2.",
-  "vector_to_matrix_attr":  "Erro na linha $0: $1 representa um vetor e não pode ser atribuído a matriz $2.",
-  "invalid_matrix_index_assign_full": "Erro na linha $0: A posição $1 da matriz $2 aceita apenas vetores de tamanho $3, mas $4 tem tamanho $5",
-  "invalid_matrix_index_assign": "A linha $0 da matriz $1 aceita apenas vetores de tamanho $2, mas $3 tem tamanho $4",
-  "invalid_number_elements_vector": "Esperava-se por $0 elementos na linha $1 mas a expressão $2 possui $3 elementos.",
-  "invalid_number_lines_matrix": "Esperava-se por uma matriz com $0 linhas na linha $1 mas a expressão $2 possui $3 linhas",
-  "divsion_by_zero_full": "Erro na linha $0: A expressão $1 resulta em uma divisão por 0.",
-  "divsion_by_zero": "A expressão $0 resulta em uma divisão por 0.",
-  "undefined_tanget_value": "Erro na linha $0: A tangente de $1° não é indefinida.",
-  "negative_log_value": "Erro na linha $0: Não se pode calcular o log de um valor negativo.",
-  "invalid_string_index": "Erro na linha $0 durante a execução da função $1: $2 é um índice inválido para a cadeia de texto $3. Os valores válidos vão de 0 à $4",
-  "negative_sqrt_value": "Erro na linha $0: Não é permitido calcular a raiz quadrada de um número negativo.",
-  "exceeded_recursive_calls": "Erro na execução da linha $0: Número de chamadas recursivas execedeu o limite máximo definido!"
-}

+ 0 - 9
i18n/pt/index.js

@@ -1,9 +0,0 @@
-import errors from './error.json';
-import messages from './message.json'
-import ui from './ui.json';
-
-export default {
- 'message' : messages,
- 'error': errors,
- 'ui': ui
-}

+ 0 - 10
i18n/pt/message.json

@@ -1,10 +0,0 @@
-{
-  "test_case_success": "<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\"$1\"><span>Caso de teste $0</span>: OK</div>",
-  "test_case_duration": "Levou $0ms",
-  "test_suite_grade": "A sua solução alcançou $0% da nota.",
-  "awaiting_input_message": "O seu programa está em execução e aguardando uma entrada! Digite algo e pressione ENTER...",
-  "assessment-empty-expected-tooltip": "A saída gerada foi além do esperado",
-  "assessment-empty-generated-tooltip": "O programa não gerou saídas suficientes",
-  "testcase_autogen_unused_input": "O caso de teste $0 possui mais entradas do que as leituras feitas no programa.",
-  "testcase_autogen_empty": "O caso de teste $0 não gerou qualquer saída."
-}

+ 0 - 133
i18n/pt/ui.json

@@ -1,133 +0,0 @@
-{
-  "function": "funcao",
-  "btn_clear": "Limpar",
-  "btn_function": "Função",
-  "btn_arithmetic_plus": "Adição",
-  "btn_arithmetic_minus": "Subtração",
-  "btn_arithmetic_multiplication": "Multiplicação",
-  "btn_arithmetic_division": "Divisão",
-  "btn_arithmetic_module": "Módulo",
-  "btn_break":"Pare",
-  "btn_case":"Caso",
-  "start": "inicio",
-  "type_void": "vazio",
-  "type_integer": "inteiro",
-  "logic_operator_and": "E",
-  "logic_operator_or": "OU",
-  "logic_operator_not": "nao",
-  "type_real": "real",
-  "program": "programa",
-  "type_text": "cadeia",
-  "textvar_default_value": "texto",
-  "type_boolean": "logico",
-  "logic_value_true": "verdadeiro",
-  "logic_value_false": "falso",
-  "variable": "Variável",
-  "command": "Comando",
-  "new_parameter": "parametro",
-  "new_variable": "variavel",
-  "new_global": "global",
-  "new_function": "nova_funcao",
-  "matrix": "matriz",
-  "vector": "vetor",
-  "text_comment_start": "Comentário inicial da função...",
-  "text_comment_main": "Esta é a função principal...",
-  "text_read_var": "Entrada/Leitura de dados",
-  "text_write_var": "Saída/Escrita de dados",
-  "text_command_read":"leia",
-  "text_command_write":"escreva",
-  "text_return":"devolva",
-  "text_btn_return":"Devolver",
-  "text_comment": "Comentário",
-  "string_join_or": "ou",
-  "matrix_info_string": "matriz de $0",
-  "vector_info_string": "vetor de $0",
-  "text_attribution": "Atribuição",
-  "text_if":"se",
-  "text_break":"pare",
-  "text_else":"senao",
-  "text_for":"repita_para",
-  "text_code_while":"repita_enquanto",
-  "text_code_do":"repita",
-  "text_code_do_until":"ate_que",
-  "text_command_do":"repita",
-  "text_command_while":"repita enquanto",
-  "text_command_do_until":"até que",
-  "text_code_switch": "escolha",
-  "text_code_case": "caso",
-  "text_config_programming":"Programação",
-  "text_config_programming_both":"Visual e textual",
-  "text_config_programming_textual":"Textual",
-  "text_config_programming_visual":"Visual",
-  "text_logic_expression": "Expressão Lógica",
-  "text_arithmetic_expression": "Expressão Relacional",
-  "text_iftrue": "Se verdadeiro então",
-  "text_message_error_activity_file": "Aconteceu um erro ao processar a atividade. <br> Recarregue a página para tentar novamente.",
-  "text_message_error_activity_reload": "Recarregar",
-  "text_repeatNtimes": "Repita N vezes",
-  "text_receives": "recebe",
-  "text_whiletrue": "Enquanto verdadeiro",
-  "text_dowhiletrue": "Repita até que verdadeiro",
-  "text_switch": "Escolha",
-  "text_functioncall": "Chamada de função",
-  "text_value": "Valor",
-  "text_operator": "Operador",
-  "text_parentheses": "Parênteses",
-  "text_change": "Alterar",
-  "text_teacher_algorithm": "Algoritmo",
-  "text_teacher_algorithm_include": "Incluir o algoritmo abaixo no exercício",
-  "text_teacher_test_case": "Casos de teste",
-  "text_teacher_config": "Configurações",
-  "text_teacher_data_types": "Tipos de dados",
-  "text_teacher_commands": "Comandos",
-  "text_teacher_functions": "Funções",
-  "text_teacher_create_functions": "Criar novas funções",
-  "text_teacher_create_movement_functions": "Movimentar funções",
-  "text_teacher_test_case_input": "Entrada",
-  "text_teacher_test_case_output": "Saída",
-  "text_teacher_test_case_actions": "Ações",
-  "text_teacher_test_case_add": "Adicionar caso de teste",
-  "text_header_ivprog_functions": "Funções do iVProg",
-  "text_menu_functions_math":"Matemática",
-  "text_menu_functions_text":"Texto",
-  "text_menu_functions_array":"Arranjo",
-  "text_menu_functions_conversion":"Conversão",
-  "text_no_variable":"Nenhuma variável declarada",
-  "text_no_variable_instruction":"Antes de utilizar uma variável, é necessário criá-la",
-  "text_ivprog_description":"Programação Visual interativa na Internet",
-  "tooltip_visual": "Programação visual",
-  "tooltip_textual": "Programação textual",
-  "tooltip_upload": "Upload de código fonte",
-  "tooltip_download": "Download do código fonte",
-  "tooltip_undo": "Desfazer",
-  "tooltip_redo": "Refazer",
-  "tooltip_run": "Executar o programa",
-  "tooltip_evaluate": "Avaliar o programa",
-  "tooltip_help": "Ajuda",
-  "tooltip_add_global": "Adicionar variável global",
-  "tooltip_hide_function": "Ocultar os elementos da função",
-  "var_menu_select_var": "Selecione uma variável",
-  "var_menu_select_all": "Selecione",
-  "var_menu_select_function": "Selecione uma função",
-  "expression_menu_select": "Construir uma expressão lógica",
-  "inform_valid_content": "Informe o conteúdo!",
-  "inform_valid_expression": "Construa uma expressão lógica!",
-  "tooltip_terminal_clear":"Limpa o terminal removendo todos os textos",
-  "tooltip_terminal_show":"Exibe o terminal caso esteja escondido",
-  "tooltip_terminal_hide":"Esconde o terminal caso não esteja escondido",
-  "text_ivprog_version":"Versão",
-  "text_teacher_filter": "Filtro",
-  "text_teacher_filter_active": "Ativado",
-  "text_teacher_filter_help": "Ao ativar o filtro, as modificações do iVProg estarão bloqueadas.",
-  "text_join_assessment_outputs": " ; ",
-  "assessment-detail-time-label": "Duração",
-  "assessment-detail-grade-label": "Nota",
-  "assessment-detail-input-label": "Entradas",
-  "assessment-detail-output-label": "Saídas",
-  "assessment-detail-expected-label": "Esperava",
-  "assessment-detail-generated-label": "Gerou",
-  "assessment-detail-result-label": "Resultado",
-  "assessment-detail-title": "Caso de Teste $0",
-  "text_teacher_generate_outputs": "Gerar saídas",
-  "text_teacher_generate_outputs_algorithm": "Antes de gerar as saídas, elabore um algoritmo!"
-}

+ 132 - 0
i18n/ui.csv

@@ -0,0 +1,132 @@
+id,pt,en ,es
+function,funcao,function,funccion
+btn_clear,Limpar,Clean,
+btn_function,Função,Function,
+btn_arithmetic_plus,Adição,Addition,
+btn_arithmetic_minus,Subtração,Subtraction,
+btn_arithmetic_multiplication,Multiplicação,Multiplication,
+btn_arithmetic_division,Divisão,Division,
+btn_arithmetic_module,Módulo,Remainder,
+btn_break,Pare,break,
+btn_case,Caso,Case,
+start,inicio,main,
+type_void,vazio,void,
+type_integer,inteiro,int,
+logic_operator_and,E,AND,
+logic_operator_or,OU,OR,
+logic_operator_not,nao,not,
+type_real,real,real,
+program,programa,program,
+type_text,cadeia,string,
+textvar_default_value,texto,text,
+type_boolean,logico,bool,
+logic_value_true,1,1,
+logic_value_false,0,0,
+variable,Variável,Variable,
+command,Comando,Command,
+new_parameter,parametro,parameter,
+new_variable,variavel,variable,
+new_global,global,global,
+new_function,nova_funcao,new_function,
+matrix,matriz,matrix,
+vector,vetor,vector,
+text_comment_start,Comentário inicial da função...,Function initial comment,
+text_comment_main,Esta é a função principal...,This is the main funcion,
+text_read_var,Entrada/Leitura de dados,Input/Read data,
+text_write_var,Saída/Escrita de dados,Output/Write data,
+text_command_read,leia,read,
+text_command_write,escreva,write,
+text_return,devolva,return,
+text_btn_return,Devolver,Return,
+text_comment,Comentário,Comment,
+string_join_or,ou,or,
+matrix_info_string,matriz de $0,matrix of $0,
+vector_info_string,vetor de $0,vector of $0,
+text_attribution,Atribuição,Assignment,
+text_if,se,if,
+text_break,pare,break,
+text_else,senao,eles,
+text_for,repita_para,repeat_for,
+text_code_while,repita_enquanto,repeat_while,
+text_code_do,repita,repeat,
+text_code_do_until,ate_que,until,
+text_command_do,repita,repeat,
+text_command_while,repita enquanto,repeat while,
+text_command_do_until,até que,until,
+text_code_switch,escolha,switch,
+text_code_case,caso,case,
+text_config_programming,Programação,Programming,
+text_config_programming_both,Visual e textual,Visual & Textual,
+text_config_programming_textual,Textual,Textual,
+text_config_programming_visual,Visual,Visual,
+text_logic_expression,Expressão Lógica,Logic Expression,
+text_arithmetic_expression,Expressão Relacional,Relational Expression,
+text_iftrue,Se verdadeiro então,If true then,
+text_message_error_activity_file,Aconteceu um erro ao processar a atividade. <br> Recarregue a página para tentar novamente.,There was an error processing the activity.<br> Reload the page to try again.,
+text_message_error_activity_reload,Recarregar,Reload,
+text_repeatNtimes,Repita N vezes,Repeat N times,
+text_receives,recebe,receives,
+text_whiletrue,Enquanto verdadeiro,While true,
+text_dowhiletrue,Repita até que verdadeiro,Repeat until true,
+text_switch,Escolha,Switch,
+text_functioncall,Chamada de função,Function call,
+text_value,Valor,Value,
+text_operator,Operador,Operator,
+text_parentheses,Parênteses,Parentheses,
+text_change,Alterar,Modify,
+text_teacher_algorithm,Algoritmo,Algorithm,
+text_teacher_algorithm_include,Incluir o algoritmo abaixo no exercício,Include the algorithm below in the activity,
+text_teacher_test_case,Casos de teste,Test cases,
+text_teacher_config,Configurações,Configurations,
+text_teacher_data_types,Tipos de dados,Data types,
+text_teacher_commands,Comandos,Commands,
+text_teacher_functions,Funções,Functions,
+text_teacher_create_functions,Criar novas funções,Create new functions,
+text_teacher_create_movement_functions,Movimentar funções,Move functions,
+text_teacher_test_case_input,Entrada,Input,
+text_teacher_test_case_output,Saída,Output,
+text_teacher_test_case_actions,Ações,Actions,
+text_teacher_test_case_add,Adicionar caso de teste,Add test case,
+text_header_ivprog_functions,Funções do iVProg,iVProg Functions,
+text_menu_functions_math,Matemática,Math,
+text_menu_functions_text,Texto,Text,
+text_menu_functions_array,Arranjo,Array,
+text_menu_functions_conversion,Conversão,Conversion,
+text_no_variable,Nenhuma variável declarada,No variable declared,
+text_no_variable_instruction,"Antes de utilizar uma variável, é necessário criá-la","Before using a variable, you need to create it",
+text_ivprog_description,Programação Visual interativa na Internet,Interactive and Visual Programming on the Internet,
+tooltip_visual,Programação visual,Visual programming,
+tooltip_textual,Programação textual,Textual programming,
+tooltip_upload,Upload de código fonte,Upload source code,
+tooltip_download,Download do código fonte,Download source code,
+tooltip_undo,Desfazer,Undo,
+tooltip_redo,Refazer,Redo,
+tooltip_run,Executar o programa,Run the program,
+tooltip_evaluate,Avaliar o programa,Evaluate the program,
+tooltip_help,Ajuda,Help,
+tooltip_add_global,Adicionar variável global,Add a global variable,
+tooltip_hide_function,Ocultar os elementos da função,Hide function elements,
+var_menu_select_var,Selecione uma variável,Select a variable,
+var_menu_select_all,Selecione,Select,
+var_menu_select_function,Selecione uma função,Select a function,
+expression_menu_select,Construir uma expressão lógica,Construct a logic expression,
+inform_valid_content,Informe o conteúdo!,Provide some data,
+inform_valid_expression,Construa uma expressão lógica!,Construct a logic expression,
+tooltip_terminal_clear,Limpa o terminal removendo todos os textos,Clears the terminal by removing all text,
+tooltip_terminal_show,Exibe o terminal caso esteja escondido,Shows the terminal if it is hidden,
+tooltip_terminal_hide,Esconde o terminal caso não esteja escondido,Hides the terminal if it is not on display,
+text_ivprog_version,Versão,Version,
+text_teacher_filter,Filtro,Filter,
+text_teacher_filter_active,Ativado,Activated,
+text_teacher_filter_help,"Ao ativar o filtro, as modificações do iVProg estarão bloqueadas.",By activating the filter modifications in iVProg will be blocked,
+text_join_assessment_outputs, ; ,;,
+assessment-detail-time-label,Duração,Duration,
+assessment-detail-grade-label,Nota,Grade,
+assessment-detail-input-label,Entradas,Inputs,
+assessment-detail-output-label,Saídas,Outputs,
+assessment-detail-expected-label,Esperava,Expected,
+assessment-detail-generated-label,Gerou,Generated,
+assessment-detail-result-label,Resultado,Result,
+assessment-detail-title,Caso de Teste $0,Test Case $0,
+text_teacher_generate_outputs,Gerar saídas,Generate outputs,
+text_teacher_generate_outputs_algorithm,"Antes de gerar as saídas, elabore um algoritmo!",Before generating the outputs you need to create an algorithm,

+ 34 - 0
i18n_csv_loader.js

@@ -0,0 +1,34 @@
+const Readable = require("stream").Readable;
+const csv = require("csv-parser");
+
+function createStream (text) {
+  const stream = new Readable();
+  stream.push(text);
+  stream.push(null);
+  return stream;
+}
+
+module.exports = function (csv_data) {
+  const callback = this.async();
+  let csv_headers = [];
+  const file_data = []
+  const stream = createStream(csv_data);
+  stream.pipe(csv())
+  .on('error', error => callback(error))
+  .on('headers', headers => csv_headers = headers)
+  .on('data', data => file_data.push(data))
+  .on('end', () => {
+    const id = csv_headers[0];
+    const messages = {};
+    for(let i = 1; i < csv_headers.length; i += 1) {
+      const lang = csv_headers[i];
+      const strings = {};
+      file_data.forEach( data => {
+        strings[data[id]] = data[lang];
+      });
+      messages[lang] = strings;
+    }
+    callback(null, `module.exports = ${JSON.stringify(messages)}`);
+  })
+}
+

+ 72 - 5
package-lock.json

@@ -1775,7 +1775,6 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
       "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "dev": true,
       "requires": {
         "buffer-alloc-unsafe": "^1.1.0",
         "buffer-fill": "^1.0.0"
@@ -1784,14 +1783,12 @@
     "buffer-alloc-unsafe": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
-      "dev": true
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
     },
     "buffer-fill": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
-      "dev": true
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
     },
     "buffer-from": {
       "version": "1.1.1",
@@ -2513,6 +2510,27 @@
         }
       }
     },
+    "csv-parser": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-2.3.0.tgz",
+      "integrity": "sha512-yfYRZ9P9LNKuRK0lEFf40Be4HcFxe1XgxWL/QmlkakSE8SHcWbOGFZA/u7YpfGX/hVbRUdbnO5xO8XuYxrcBtA==",
+      "requires": {
+        "buffer-alloc": "^1.1.0",
+        "buffer-from": "^1.0.0",
+        "execa": "^1.0.0",
+        "generate-function": "^1.0.1",
+        "generate-object-property": "^1.0.0",
+        "minimist": "^1.2.0",
+        "ndjson": "^1.4.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+        }
+      }
+    },
     "currently-unhandled": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -4380,6 +4398,19 @@
       "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
       "dev": true
     },
+    "generate-function": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz",
+      "integrity": "sha1-VMIbCAGSsW2Yd3ecW7gWZudyNl8="
+    },
+    "generate-object-property": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+      "requires": {
+        "is-property": "^1.0.0"
+      }
+    },
     "get-caller-file": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
@@ -5196,6 +5227,11 @@
       "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
       "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
     },
+    "is-property": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+      "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
+    },
     "is-regex": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
@@ -5323,6 +5359,11 @@
       "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
       "dev": true
     },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+    },
     "json5": {
       "version": "0.5.1",
       "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
@@ -5942,6 +5983,24 @@
       "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
       "dev": true
     },
+    "ndjson": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz",
+      "integrity": "sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg=",
+      "requires": {
+        "json-stringify-safe": "^5.0.1",
+        "minimist": "^1.2.0",
+        "split2": "^2.1.0",
+        "through2": "^2.0.3"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+        }
+      }
+    },
     "negotiator": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -7710,6 +7769,14 @@
         "extend-shallow": "^3.0.0"
       }
     },
+    "split2": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
+      "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+      "requires": {
+        "through2": "^2.0.2"
+      }
+    },
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",

+ 1 - 0
package.json

@@ -51,6 +51,7 @@
   "dependencies": {
     "antlr4": "^4.7.2",
     "codemirror": "^5.48.0",
+    "csv-parser": "^2.3.0",
     "decimal.js": "^10.1.1",
     "line-i18n": "git+http://200.144.254.107/git/LInE/line-i18n.git",
     "melanke-watchjs": "^1.5.0",

+ 16 - 6
webpack.config.js

@@ -1,9 +1,10 @@
-var path = require('path');
-var HtmlWebpackPlugin = require('html-webpack-plugin');
-var UpdateVersionPlugin = require('./updateVersionPlugin');
-//var ChangeScriptSourcePlugin = require('./changeScriptSourcePlugin');
-var CopyPlugin = require('copy-webpack-plugin');
-var CleanWebpackPlugin = require('clean-webpack-plugin');
+const path = require('path');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const UpdateVersionPlugin = require('./updateVersionPlugin');
+//const ChangeScriptSourcePlugin = require('./changeScriptSourcePlugin');
+const CopyPlugin = require('copy-webpack-plugin');
+const CleanWebpackPlugin = require('clean-webpack-plugin');
+const CSVLoader = require("./i18n_csv_loader");
 
 module.exports = {
     entry: path.resolve(__dirname, 'js/main.js'),
@@ -39,6 +40,15 @@ module.exports = {
               test: /\.tsx?$/,
               use: 'ts-loader',
               exclude: /node_modules/
+            },
+            {
+              test: /\.csv$/,
+              use: [
+                {
+                  loader: path.resolve(__dirname, 'i18n_csv_loader')
+                }
+              ],
+              exclude: /node_modules/
             }
         ]
     },