Browse Source

Implement new for command semantic error messages

Translate some hardcoded text dealing with code generation and menu text

Override LanguageService.getDefaultLang function to return pt as the default lang
Lucas de Souza 4 years ago
parent
commit
cf29d62afa

+ 1 - 1
grammar/en/langFunctions.js

@@ -1,7 +1,7 @@
 /* This is a dictionary of the language defined functions
 **/
 export default {
-  main_function: "start",
+  main_function: "main",
   $read: "read",
   $write: "write",
   $numElements: "total_of_elements",

+ 135 - 131
i18n/error.csv

@@ -1,131 +1,135 @@
-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., 
+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.," "
+invalid_for_variable,Erro na linha $0: A variavel $1 utilizada no comando repita_para deve ser do tipo inteiro.,Error at line $0: The variable $1 used in the repeat_for command must be of type int.,
+invalid_for_from,Erro na linha $0: O valor $1 passado para o parâmetro 'de' do comando repita_para deve ser do tipo inteiro.,Error at line $0: The value $1 passed to the parameter 'from' of the repeat_for command must be of type int.,
+invalid_for_to,Erro na linha $0: O valor $1 passado para o parâmetro 'para' do comando repita_para deve ser do tipo inteiro.,Error at line $0: The value $1 passed to the parameter 'to' of the repeat_for command must be of type int.,
+invalid_for_pass,Erro na linha $0: O valor $1 passado para o parâmetro 'passo' do comando repita_para deve ser do tipo inteiro.,Error at line $0: The value $1 passed to the parameter 'pass' of the repeat_for command must be of type int.,

+ 1 - 0
i18n/index.js

@@ -10,5 +10,6 @@ for(const key in UI) {
   data['ui'] = UI[key];
   i18n_data[key] = data;
 }
+console.log(i18n_data["en"]);
 
 export default i18n_data;

+ 10 - 9
i18n/message.csv

@@ -1,9 +1,10 @@
-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., 
+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.," "
+success_execution,Programa executado com sucesso!,Program executed successfully!,

+ 11 - 4
i18n/ui.csv

@@ -1,4 +1,4 @@
-id,pt,en ,es
+id,pt,en,es
 function,funcao,function,funccion
 btn_clear,Limpar,Clean,
 btn_function,Função,Function,
@@ -59,8 +59,8 @@ 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_logic_expression,Lógicos,Logic,
+text_arithmetic_expression,Aritméticos,Arithmetics,
 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,
@@ -119,7 +119,7 @@ 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, ; ,;,
+text_join_assessment_outputs," ; "," ; ",
 assessment-detail-time-label,Duração,Duration,
 assessment-detail-grade-label,Nota,Grade,
 assessment-detail-input-label,Entradas,Inputs,
@@ -130,3 +130,10 @@ 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,
+text_code_for_from,de,from,
+text_code_for_to,ate,to,
+text_code_for_pass,passo,pass,
+text_for_from,de,from,
+text_for_to,até,to,
+text_for_pass,passo,pass,
+text_relational_expression,Relacionais,Relational,

+ 16 - 12
js/processor/error/processorErrorFactory.js

@@ -113,18 +113,6 @@ export const ProcessorErrorFactory  = Object.freeze({
   endless_loop: () => {
     return createSemanticError("endless_loop");
   },
-  for_condition_type_full: (exp, sourceInfo) => {
-    if(sourceInfo) {
-      const context = [sourceInfo.line, sourceInfo.column, exp];
-      return createSemanticError("for_condition_type_full", context);
-    } else {
-      return ProcessorErrorFactory.for_condition_type(exp);
-    }
-  },
-  for_condition_type: (exp) => {
-    const context = [exp];
-    return createSemanticError("for_condition_type", context);
-  },
   if_condition_type_full: (exp, sourceInfo) => {
     if(sourceInfo) {
       const context = [sourceInfo.line, sourceInfo.column, exp];
@@ -508,5 +496,21 @@ export const ProcessorErrorFactory  = Object.freeze({
   exceeded_recursive_calls: (source_info) => {
     const context = [source_info.line];
     return createRuntimeError("exceeded_recursive_calls", context);
+  },
+  invalid_for_variable: (id, source_info) => {
+    const context = [source_info.line, id];
+    return createSemanticError("invalid_for_variable", context);
+  },
+  invalid_for_from: (exp, source_info) => {
+    const context = [source_info.line, exp];
+    return createSemanticError("invalid_for_from", context);
+  },
+  invalid_for_to: (exp, source_info) => {
+    const context = [source_info.line, exp];
+    return createSemanticError("invalid_for_to", context);
+  },
+  invalid_for_pass: (exp, source_info) => {
+    const context = [source_info.line, exp];
+    return createSemanticError("invalid_for_pass", context);
   }
 });

+ 4 - 9
js/processor/semantic/semanticAnalyser.js

@@ -330,27 +330,22 @@ export class SemanticAnalyser {
       this.checkCommands(type, cmd.commands, optional);
       return false;
     } else if (cmd instanceof For) {
-      console.log(cmd);
       const var_type = this.evaluateExpressionType(cmd.for_id);
       if (!var_type.isCompatible(Types.INTEGER)) {
-        // TODO better error message
-        throw new Error("A variavel do comando repita_para deve ser do tipo inteiro");
+        throw ProcessorErrorFactory.invalid_for_variable(cmd.for_id, cmd.sourceInfo);
       }
       const from_type = this.evaluateExpressionType(cmd.for_from);
       if (!from_type.isCompatible(Types.INTEGER)) {
-        // TODO better error message
-        throw new Error("o paramentro 'de' do comando repita_para deve ser do tipo inteiro");
+        throw ProcessorErrorFactory.invalid_for_from(cmd.for_from, cmd.sourceInfo);
       }
       const to_type = this.evaluateExpressionType(cmd.for_to);
       if (!to_type.isCompatible(Types.INTEGER)) {
-        // TODO better error message
-        throw new Error("o paramentro 'ate' do comando repita_para deve ser do tipo inteiro");
+        throw ProcessorErrorFactory.invalid_for_to(cmd.for_to, cmd.sourceInfo);
       }
       if (cmd.for_pass != null) {
         const pass_type = this.evaluateExpressionType(cmd.for_pass);
         if (!pass_type.isCompatible(Types.INTEGER)) {
-          // TODO better error message
-          throw new Error("o paramentro 'passo' do comando repita_para deve ser do tipo inteiro");
+          throw ProcessorErrorFactory.invalid_for_pass(cmd.for_pass, cmd.sourceInfo);
         }
       }
       this.checkCommands(type, cmd.commands, optional);

+ 4 - 0
js/services/languageService.js

@@ -8,6 +8,10 @@ class LanguageServiceExtended extends line_i18n.LanguageServiceNoLS {
     super(typeof(iLMparameters) === 'undefined' ? Config.default_lang : iLMparameters.lang);
   }
 
+  getDefaultLang () {
+    return "pt";
+  }
+
   getCurrentLexer () {
     const langInfo = Lexers[this.getLang()];
     if(langInfo === null || langInfo === undefined) {

+ 3 - 3
js/visualUI/code_generator.js

@@ -241,17 +241,17 @@ function repeatNtimesCode (command_obj, indentation) {
 
 	if (command_obj.var_attribution) {
 		ret += variableValueMenuCode(command_obj.var_attribution);
-		ret += ' de ';
+		ret += ` ${LocalizedStrings.getUI('text_code_for_from')} `;
 		ret += variableValueMenuCode(command_obj.expression1);
 	}
 
 	if (command_obj.expression2) {
-		ret += ' ate ';
+		ret += ` ${LocalizedStrings.getUI('text_code_for_to')} `;
 		ret += variableValueMenuCode(command_obj.expression2);
 	}
 
 	if (command_obj.expression3) {
-		ret += ' passo ';
+		ret += ` ${LocalizedStrings.getUI('text_code_for_pass')} `;
 		switch (command_obj.expression3.itens[1]) {
 			case Models.ARITHMETIC_TYPES.plus:
 				ret += ' +';

+ 9 - 9
js/visualUI/commands/generic_expression.js

@@ -637,7 +637,7 @@ function renderStartAddOperator (div_to_render, types_included, expression_array
 	var menu_final = '<div class="ui dropdown disabled usepointer"><div class="text"> + </div><i class="dropdown icon"></i><div class="menu">';
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Aritméticos<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>' + LocalizedStrings.getUI('text_arithmetic_expression') + '<div class="menu">';
 			menu_final += getArithmeticOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -646,7 +646,7 @@ function renderStartAddOperator (div_to_render, types_included, expression_array
 	}
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Lógicos<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_logic_expression') +'<div class="menu">';
 			menu_final += getLogicOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -655,7 +655,7 @@ function renderStartAddOperator (div_to_render, types_included, expression_array
 	}
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Relacionais<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_relational_expression') +'<div class="menu">';
 			menu_final += getRelationalOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -697,7 +697,7 @@ function renderFinalAddElements (div_to_render, types_included, expression_array
 	var menu_final = '<div class="ui dropdown disabled usepointer"><div class="text"> + </div><i class="dropdown icon"></i><div class="menu">';
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Aritméticos<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_arithmetic_expression') +'<div class="menu">';
 			menu_final += getArithmeticOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -706,7 +706,7 @@ function renderFinalAddElements (div_to_render, types_included, expression_array
 	}
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Lógicos<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_logic_expression') +'<div class="menu">';
 			menu_final += getLogicOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -715,7 +715,7 @@ function renderFinalAddElements (div_to_render, types_included, expression_array
 	}
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Relacionais<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_relational_expression') +'<div class="menu">';
 			menu_final += getRelationalOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -775,7 +775,7 @@ function renderOperatorMenu (command, function_obj, div_to_render, expression_el
 	var menu_final = '<div class="ui dropdown"><div class="text"> + </div><i class="dropdown icon"></i><div class="menu">';
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Aritméticos<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_arithmetic_expression') +'<div class="menu">';
 			menu_final += getArithmeticOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -784,7 +784,7 @@ function renderOperatorMenu (command, function_obj, div_to_render, expression_el
 	}
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Lógicos<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_logic_expression') +'<div class="menu">';
 			menu_final += getLogicOperators();
 			menu_final += '</div></div>';
 		} else {
@@ -793,7 +793,7 @@ function renderOperatorMenu (command, function_obj, div_to_render, expression_el
 	}
 	if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {
 		if (types_included.length > 1) {
-			menu_final += '<div class="item"><i class="dropdown icon"></i>Relacionais<div class="menu">';
+			menu_final += '<div class="item"><i class="dropdown icon"></i>'+ LocalizedStrings.getUI('text_relational_expression') +'<div class="menu">';
 			menu_final += getRelationalOperators();
 			menu_final += '</div></div>';
 		} else {

File diff suppressed because it is too large
+ 18 - 4
js/visualUI/commands/repeatNtimes.js


+ 1 - 1
js/visualUI/functions.js

@@ -976,7 +976,7 @@ function runCode () {
     $("#ivprog-term").addClass('ivprog-term-active');
     isRunning = true;
     proc.interpretAST().then( _ => {
-      domConsole.info("Programa executado com sucesso!");
+      domConsole.info(LocalizedStrings.getMessage("success_execution"));
       $("#ivprog-term").removeClass('ivprog-term-active');
       isRunning = false;
     }).catch(err => {