[apps] Split the i18n in multiple files

A Python script aggregates all i18n files and merges them.
We now can pick a list of locales to build in EPSILON_I18N_LANGUAGES
This commit is contained in:
Romain Goyet
2017-09-28 17:11:39 +02:00
committed by Ecco
parent 4a0e4af52f
commit e6ed6c74a4
89 changed files with 1621 additions and 889 deletions

4
.gitignore vendored
View File

@@ -23,6 +23,10 @@ kandinsky/fonts/rasterizer
kandinsky/src/font.c
kandinsky/src/font.h
# No i18n headers
apps/i18n.h
apps/i18n.cpp
# No PicView generated files
apps/picview/image.raw
apps/picview/image.c

View File

@@ -1,3 +1,5 @@
EPSILON_I18N_LANGUAGES ?= en fr es de pt
include apps/shared/Makefile
include apps/home/Makefile
include apps/on_boarding/Makefile
@@ -52,6 +54,36 @@ snapshot_includes = $(foreach i,$(snapshot_headers),-include $(i) )
apps/apps_container_storage.o apps/main.o: CXXFLAGS += $(snapshot_includes) -DAPPS_CONTAINER_SNAPSHOT_DECLARATIONS="$(snapshots_declaration)" -DAPPS_CONTAINER_SNAPSHOT_CONSTRUCTORS="$(snapshots_construction)" -DAPPS_CONTAINER_SNAPSHOT_LIST="$(snapshots_list)" -DAPPS_CONTAINER_SNAPSHOT_COUNT=$(snapshots_count)
i18n_files += $(addprefix apps/language_,$(addsuffix .universal.i18n, $(EPSILON_I18N_LANGUAGES)))
i18n_files += $(addprefix apps/,\
shared.de.i18n\
shared.en.i18n\
shared.es.i18n\
shared.fr.i18n\
shared.pt.i18n\
shared.universal.i18n\
toolbox.de.i18n\
toolbox.en.i18n\
toolbox.es.i18n\
toolbox.fr.i18n\
toolbox.pt.i18n\
variables.de.i18n\
variables.en.i18n\
variables.es.i18n\
variables.fr.i18n\
variables.pt.i18n\
)
apps/i18n.h: apps/i18n.cpp
apps/i18n.cpp: $(i18n_files)
@echo "I18N $@"
@python apps/i18n.py --header $(subst .cpp,.h,$@) --implementation $@ --locales $(EPSILON_I18N_LANGUAGES) --files $^
$(app_objs): apps/i18n.h
products += apps/i18n.h apps/i18n.cpp
app_images += apps/exam_icon.png
# Tracking which source file uses which image is painful. But we need to ensure

View File

@@ -14,6 +14,14 @@ app_objs += $(addprefix apps/calculation/,\
text_field.o\
)
i18n_files += $(addprefix apps/calculation/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
tests += $(addprefix apps/calculation/test/,\
calculation_store.cpp\
)

View File

@@ -0,0 +1,2 @@
CalculApp = "Berechnung"
CalculAppCapital = "BERECHNUNG"

View File

@@ -0,0 +1,2 @@
CalculApp = "Calculation"
CalculAppCapital = "CALCULATION"

View File

@@ -0,0 +1,2 @@
CalculApp = "Calculo"
CalculAppCapital = "CALCULO"

View File

@@ -0,0 +1,2 @@
CalculApp = "Calculs"
CalculAppCapital = "CALCULS"

View File

@@ -0,0 +1,2 @@
CalculApp = "Calculo"
CalculAppCapital = "CALCULO"

View File

@@ -9,6 +9,14 @@ app_objs += $(addprefix apps/code/,\
program.o\
)
i18n_files += $(addprefix apps/code/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
tests += $(addprefix apps/code/test/,\
mpprint.cpp\
)

7
apps/code/base.de.i18n Normal file
View File

@@ -0,0 +1,7 @@
BetaVersion = "BETA VERSION"
BetaVersionMessage1 = "You are using a pre-release and"
BetaVersionMessage2 = "feature-limited version of Python."
BetaVersionMessage3 = "You may encounter"
BetaVersionMessage4 = "unexpected bugs."
EditProgram = "Programm bearbeiten"
ExecuteProgram = "Programm ausfuhren"

7
apps/code/base.en.i18n Normal file
View File

@@ -0,0 +1,7 @@
BetaVersion = "BETA VERSION"
BetaVersionMessage1 = "You are using a pre-release and"
BetaVersionMessage2 = "feature-limited version of Python."
BetaVersionMessage3 = "You may encounter some"
BetaVersionMessage4 = "unexpected bugs."
EditProgram = "Edit program"
ExecuteProgram = "Execute program"

7
apps/code/base.es.i18n Normal file
View File

@@ -0,0 +1,7 @@
BetaVersion = "BETA VERSION"
BetaVersionMessage1 = "No esta utilizando una version"
BetaVersionMessage2 = "definitiva de Python."
BetaVersionMessage3 = "Es posible que encuentre varios bugs"
BetaVersionMessage4 = "y que su utilizacion sea limitada."
EditProgram = "Editar el programa"
ExecuteProgram = "Ejecutar el programa"

7
apps/code/base.fr.i18n Normal file
View File

@@ -0,0 +1,7 @@
BetaVersion = "VERSION BETA"
BetaVersionMessage1 = "La version de Python que vous utilisez"
BetaVersionMessage2 = "n'est pas une version definitive."
BetaVersionMessage3 = "Il est possible que son utilisation soit"
BetaVersionMessage4 = "limitee et que certains bugs apparaissent."
EditProgram = "Editer le programme"
ExecuteProgram = "Executer le programme"

7
apps/code/base.pt.i18n Normal file
View File

@@ -0,0 +1,7 @@
BetaVersion = "BETA VERSION"
BetaVersionMessage1 = "You are using a pre-release and"
BetaVersionMessage2 = "feature-limited version of Python."
BetaVersionMessage3 = "You may encounter"
BetaVersionMessage4 = "unexpected bugs."
EditProgram = "Editar programa"
ExecuteProgram = "Executar programa"

View File

@@ -3,7 +3,7 @@
static GlobalPreferences s_globalPreferences;
GlobalPreferences::GlobalPreferences() :
m_language(I18n::Language::English),
m_language(I18n::Language::EN),
m_examMode(ExamMode::Desactivate),
m_showUpdatePopUp(true),
m_brightnessLevel(Ion::Backlight::MaxBrightness)

View File

@@ -16,4 +16,12 @@ app_objs += $(addprefix apps/graph/,\
values/values_controller.o\
)
i18n_files += $(addprefix apps/graph/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/graph/graph_icon.png

46
apps/graph/base.de.i18n Normal file
View File

@@ -0,0 +1,46 @@
FunctionApp = "Funktionen"
FunctionAppCapital = "FUNKTIONEN"
FunctionTab = "Funktionen"
GraphTab = "Graph"
ValuesTab = "Tabelle"
Plot = "Graphen zeichnen"
DisplayValues = "Werte anzeigen"
FunctionOptions = "Optionen Funktion"
AddFunction = "Funktion hinzuzufugen"
DeleteFunction = "Funktion loschen"
NoFunctionToDelete = "Keine Funktion zu loschen"
ActivateDesactivate = "Aktivieren/Deaktivieren"
FunctionColor = "Farbe der Funktion"
NoFunction = "Keine funktion"
NoActivatedFunction = "Keine aktive Funktion"
Axis = "Achsen"
Zoom = "Zoom"
Initialization = "Initialisierung"
Move = " Verschieben: "
ToZoom = "Zoom: "
Or = " oder "
Trigonometric = "Trigonometrisch"
RoundAbscissa = "Ganzzahl"
Orthonormal = "Orthonormal"
DefaultSetting = "Grundeinstellungen"
PlotOptions = "Plotoptionen"
Compute = "Berechnen"
Goto = "Gehe zu"
ValueNotReachedByFunction = "Der Wert wird nicht von der Funktion erreicht"
Zeros = "Nullstellen"
Tangent = "Tangente"
Intersection = "Schnittmenge"
SelectLowerBound = "Untere Integrationsgrenze"
SelectUpperBound = "Obere Integrationsgrenze"
NoZeroFound = "Keine Nullstelle gefunden"
IntervalSet = "Tabelleneinstell"
XStart = "Startwert"
XEnd = "Endwert"
Step = "Schrittwert"
XColumn = "X Spalte"
FunctionColumn = "0(0) Spalte"
DerivativeColumn = "0'(x) Spalte"
DerivativeFunctionColumn = "Spalte der Ableitungsfunktion"
ClearColumn = "Spalte loschen"
CopyColumnInList = "Die Spalte in einer Liste kopieren"
HideDerivativeColumn = "Die Ableitungsfunktion ausblenden"

46
apps/graph/base.en.i18n Normal file
View File

@@ -0,0 +1,46 @@
FunctionApp = "Functions"
FunctionAppCapital = "FUNCTIONS"
FunctionTab = "Functions"
GraphTab = "Graph"
ValuesTab = "Table"
Plot = "Plot graph"
DisplayValues = "Display values"
FunctionOptions = "Function options"
AddFunction = "Add function"
DeleteFunction = "Delete function"
NoFunctionToDelete = "No function to delete"
ActivateDesactivate = "Turn on/off"
FunctionColor = "Function color"
NoFunction = "No function"
NoActivatedFunction = "No function is turned on"
Axis = "Axes"
Zoom = "Zoom"
Initialization = "Preadjustment"
Move = " Move: "
ToZoom = "Zoom: "
Or = " or "
Trigonometric = "Trigonometrical"
RoundAbscissa = "Integer"
Orthonormal = "Orthonormal"
DefaultSetting = "Basic settings"
PlotOptions = "Plot options"
Compute = "Calculate"
Goto = "Go to"
ValueNotReachedByFunction = "Value not reached by function"
Zeros = "Zeros"
Tangent = "Tangent"
Intersection = "Intersection"
SelectLowerBound = "Select lower bound"
SelectUpperBound = "Select upper bound"
NoZeroFound = "No zeros found"
IntervalSet = "Set the interval"
XStart = "X start"
XEnd = "X end"
Step = "Step"
XColumn = "x column"
FunctionColumn = "0(0) column"
DerivativeColumn = "0'(x) column"
DerivativeFunctionColumn = "Derivative function column"
ClearColumn = "Clear column"
CopyColumnInList = "Export the column to a list"
HideDerivativeColumn = "Hide the derivative function"

46
apps/graph/base.es.i18n Normal file
View File

@@ -0,0 +1,46 @@
FunctionApp = "Funcion"
FunctionAppCapital = "FUNCION"
FunctionTab = "Funciones"
GraphTab = "Grafico"
ValuesTab = "Tabla"
Plot = "Dibujar el grafico"
DisplayValues = "Visualizar los valores"
FunctionOptions = "Opciones de la funcion"
AddFunction = "Agregar una funcion"
DeleteFunction = "Eliminar la funcion"
NoFunctionToDelete = "Ninguna funcion que eliminar"
ActivateDesactivate = "Activar/Desactivar"
FunctionColor = "Color de la funcion"
NoFunction = "Ninguna funcion"
NoActivatedFunction = "Ninguna funcion activada"
Axis = "Ejes"
Zoom = "Zoom"
Initialization = "Inicializacion"
Move = " Mover : "
ToZoom = "Zoom : "
Or = " o "
Trigonometric = "Trigonometrico"
RoundAbscissa = "Abscisas enteras"
Orthonormal = "Ortonormal"
DefaultSetting = "Ajustes basicos"
PlotOptions = "Opciones de la curva"
Compute = "Calcular"
Goto = "Ir a"
ValueNotReachedByFunction = "No se alcanza este valor"
Zeros = "Raices"
Tangent = "Tangente"
Intersection = "Interseccion"
SelectLowerBound = "Seleccionar el limite inferior"
SelectUpperBound = "Seleccionar el limite superior"
NoZeroFound = "Ninguna raiz encontrada"
IntervalSet = "Ajustar el intervalo"
XStart = "X inicio"
XEnd = "X fin"
Step = "Incremento"
XColumn = "Columna x"
FunctionColumn = "Columna 0(0)"
DerivativeColumn = "Columna 0'(x)"
DerivativeFunctionColumn = "Columna de la derivada"
ClearColumn = "Borrar la columna"
CopyColumnInList = "Copiar la columna en una lista"
HideDerivativeColumn = "Ocultar la derivada"

46
apps/graph/base.fr.i18n Normal file
View File

@@ -0,0 +1,46 @@
FunctionApp = "Fonctions"
FunctionAppCapital = "FONCTIONS"
FunctionTab = "Fonctions"
GraphTab = "Graphique"
ValuesTab = "Tableau"
Plot = "Tracer le graphique"
DisplayValues = "Afficher les valeurs"
FunctionOptions = "Options de la fonction"
AddFunction = "Ajouter une fonction"
DeleteFunction = "Supprimer la fonction"
NoFunctionToDelete = "Pas de fonction a supprimer"
ActivateDesactivate = "Activer/Desactiver"
FunctionColor = "Couleur de la fonction"
NoFunction = "Aucune fonction"
NoActivatedFunction = "Aucune fonction activee"
Axis = "Axes"
Zoom = "Zoom"
Initialization = "Initialisation"
Move = " Deplacer : "
ToZoom = "Zoomer : "
Or = " ou "
Trigonometric = "Trigonometrique"
RoundAbscissa = "Abscisses entieres"
Orthonormal = "Orthonorme"
DefaultSetting = "Reglages de base"
PlotOptions = "Options de la courbe"
Compute = "Calculer"
Goto = "Aller a"
ValueNotReachedByFunction = "Valeur non atteinte par la fonction"
Zeros = "Zeros"
Tangent = "Tangente"
Intersection = "Intersection"
SelectLowerBound = "Selectionner la borne inferieure"
SelectUpperBound = "Selectionner la borne superieure"
NoZeroFound = "Aucun zero trouve"
IntervalSet = "Regler l'intervalle"
XStart = "X debut"
XEnd = "X fin"
Step = "Pas"
XColumn = "Colonne x"
FunctionColumn = "Colonne 0(0)"
DerivativeColumn = "Colonne 0'(x)"
DerivativeFunctionColumn = "Colonne de la fonction derivee"
ClearColumn = "Effacer la colonne"
CopyColumnInList = "Copier la colonne dans une liste"
HideDerivativeColumn = "Masquer la fonction derivee"

46
apps/graph/base.pt.i18n Normal file
View File

@@ -0,0 +1,46 @@
FunctionApp = "Funcao"
FunctionAppCapital = "FUNCAO"
FunctionTab = "Funcoes"
GraphTab = "Grafico"
ValuesTab = "Tabela"
Plot = "Tracar o grafico"
DisplayValues = "Exibir os valores"
FunctionOptions = "Opcoes de funcao"
AddFunction = "Adicionar uma funcao"
DeleteFunction = "Eliminar a funcao"
NoFunctionToDelete = "Sem funcao para eliminar"
ActivateDesactivate = "Activar/Desactivar"
FunctionColor = "Cor da funcao"
NoFunction = "Nenhuma funcao"
NoActivatedFunction = "Sem funcao ativada"
Axis = "Eixos"
Zoom = "Zoom"
Initialization = "Inicializacao"
Move = " Mover : "
ToZoom = "Zoom : "
Or = " ou "
Trigonometric = "Trigonometrico"
RoundAbscissa = "Inteiro"
Orthonormal = "Ortonormado"
DefaultSetting = "Configuracoes basicas"
PlotOptions = "Opcoes da curva"
Compute = "Calcular"
Goto = "Ir a"
ValueNotReachedByFunction = "O valor nao e alcancado pela funcao"
Zeros = "Raizes"
Tangent = "Tangente"
Intersection = "Interseccao"
SelectLowerBound = "Selecionar limite superior"
SelectUpperBound = "Selecionar limite inferior"
NoZeroFound = "Nenhuma encontrado de raiz"
IntervalSet = "Ajustar o intervalo"
XStart = "X inicio"
XEnd = "X fim"
Step = "Passo"
XColumn = "Coluna X"
FunctionColumn = "Coluna 0(0)"
DerivativeColumn = "Coluna 0'(x)"
DerivativeFunctionColumn = "Coluna da funcao derivada"
ClearColumn = "Excluir coluna"
CopyColumnInList = "Copie a coluna em uma lista"
HideDerivativeColumn = "Esconder funcao derivada"

View File

@@ -4,3 +4,10 @@ app_objs += $(addprefix apps/home/,\
controller.o\
)
i18n_files += $(addprefix apps/home/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)

2
apps/home/base.de.i18n Normal file
View File

@@ -0,0 +1,2 @@
Apps = "Anwendungen"
AppsCapital = "ANWENDUNGEN"

2
apps/home/base.en.i18n Normal file
View File

@@ -0,0 +1,2 @@
Apps = "Applications"
AppsCapital = "APPLICATIONS"

2
apps/home/base.es.i18n Normal file
View File

@@ -0,0 +1,2 @@
Apps = "Aplicaciones"
AppsCapital = "APLICACIONES"

2
apps/home/base.fr.i18n Normal file
View File

@@ -0,0 +1,2 @@
Apps = "Applications"
AppsCapital = "APPLICATIONS"

2
apps/home/base.pt.i18n Normal file
View File

@@ -0,0 +1,2 @@
Apps = "Aplicações"
AppsCapital = "APLICACOES"

View File

@@ -1,471 +0,0 @@
#include "i18n.h"
#include "global_preferences.h"
#include <assert.h>
namespace I18n {
constexpr static char lambdaExponentialFrenchDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'r', 'e', 0};
constexpr static char lambdaExponentialEnglishDefinition[] = {Ion::Charset::SmallLambda, ':', ' ', 'R', 'a', 't','e',' ', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 0};
constexpr static char lambdaExponentialSpanishDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'r', 'o', 0};
constexpr static char lambdaExponentialGermanDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 0};
constexpr static char lambdaExponentialPortugueseDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'r', 'o', 0};
constexpr static char lambdaPoissonFrenchDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'r', 'e', 0};
constexpr static char lambdaPoissonEnglishDefinition[] = {Ion::Charset::SmallLambda, ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 0};
constexpr static char lambdaPoissonSpanishDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'r', 'o', 0};
constexpr static char lambdaPoissonGermanDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 0};
constexpr static char lambdaPoissonPortugueseDefinition[] = {Ion::Charset::SmallLambda, ' ', ':', ' ', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'r', 'o', 0};
constexpr static char meanFrenchDefinition[] = {Ion::Charset::SmallMu, ' ', ':', ' ', 'M', 'o', 'y', 'e', 'n', 'n', 'e', 0};
constexpr static char meanEnglishDefinition[] = {Ion::Charset::SmallMu, ':', ' ', 'M', 'e', 'a', 'n', 0};
constexpr static char meanSpanishDefinition[] = {Ion::Charset::SmallMu, ' ', ':', ' ', 'M', 'e', 'd', 'i', 'a', 0};
constexpr static char meanGermanDefinition[] = {Ion::Charset::SmallMu, ' ', ':', ' ', 'E', 'r', 'w', 'a', 'r', 't', 'u', 'n', 'g', 's', 'w', 'e', 'r', 't', 0};
constexpr static char meanPortugueseDefinition[] = {Ion::Charset::SmallMu, ' ', ':', ' ', 'M', 'e', 'd', 'i', 'a', 0};
constexpr static char deviationFrenchDefinition[] = {Ion::Charset::SmallSigma, ' ', ':', ' ', 'E', 'c', 'a', 'r', 't', ' ', 't', 'y', 'p', 'e', 0};
constexpr static char deviationEnglishDefinition[] = {Ion::Charset::SmallSigma, ':', ' ', 'S', 't', 'a', 'n', 'd', 'a', 'r', 'd', ' ','d','e', 'v', 'i', 'a', 't','i','o','n', 0};
constexpr static char deviationSpanishDefinition[] = {Ion::Charset::SmallSigma, ' ', ':', ' ', 'D', 'e','s','v','i','a','c','i','o','n',' ','t','i','p','i','c','a',0};
constexpr static char deviationGermanDefinition[] = {Ion::Charset::SmallSigma, ' ', ':', ' ', 'S', 't', 'a', 'n', 'd', 'a', 'r', 'd', 'a', 'b', 'w', 'e', 'i', 'c', 'h', 'u', 'n', 'g', 0};
constexpr static char deviationPortugueseDefinition[] = {Ion::Charset::SmallSigma, ' ', ':', ' ', 'D', 'e','s','v','i','o',' ','p','a','d','r','a','o', 0};
constexpr static char frenchStandardDeviationSigma[] = {'E', 'c', 'a', 'r', 't', ' ', 't', 'y', 'p', 'e', 0};
constexpr static char englishStandardDeviationSigma[] = {'S', 't', 'a', 'n', 'd', 'a', 'r', 'd', ' ','d','e', 'v', 'i', 'a', 't','i','o','n', ' ', Ion::Charset::SmallSigma, 0};
constexpr static char spanishStandardDeviationSigma[] = {'D', 'e','s','v','i','a','c','i','o','n',' ','t','i','p','i','c','a', ' ', Ion::Charset::SmallSigma, 0};
constexpr static char germanStandardDeviationSigma[] = {'S', 't', 'a', 'n', 'd', 'a', 'r', 'd', 'a', 'b', 'w', 'e', 'i', 'c', 'h', 'u', 'n', 'g', ' ', Ion::Charset::SmallSigma, 0};
constexpr static char portugueseStandardDeviationSigma[] = {'D', 'e','s','v','i','o',' ','p','a','d','r','a','o', ' ', Ion::Charset::SmallSigma, 0};
const char * messages[242][5] {
{"Warning", "Attention", "Cuidado", "Achtung", "Atencao"},
{"Confirm", "Valider", "Confirmar", "Bestatigen", "Confirmar"},
{"Cancel", "Annuler", "Cancelar", "Abbrechen", "Cancelar"},
{"Next", "Suivant", "Siguiente", "Nachste", "Seguinte"},
{"Syntax error", "Attention a la syntaxe", "Error sintactico", "Syntaxfehler", "Erro de sintaxe"},
{"Math error", "Erreur mathematique", "Error matematico", "Mathematischen Fehler", "Erro matematico"},
{"Low battery", "Batterie faible", "Bateria baja", "Batterie leer", "Bateria fraca"},
/* Variables */
{"Variables", "Variables", "Variables", "Variablen", "Variaveis"},
{"Numbers", "Nombres", "Numeros", "Zahlen", "Numeros"},
{"Matrices", "Matrices", "Matrices", "Matrizen", "Matrizes"},
{"Lists", "Listes", "Listas", "Listen", "Listas"},
{"Empty", "Vide", "Vacio", "Leer", "Vacuo"},
/* Toolbox */
{"Toolbox", "Toolbox", "Toolbox", "Toolbox", "Toolbox"},
{"Absolute value", "Valeur absolue", "Valor absoluto", "Betragsfunktion", "Valor absoluto"},
{"nth-root", "Racine n-ieme", "Raiz enesima", "n-te Wurzel", "Radiciacao"},
{"Logarithm to base a", "Logarithme base a", "Logaritmo en base a", "Logarithmus zur Basis a", "Logaritmo na base a"},
{"Calculation", "Calculs", "Calculos", "Berechnung", "Calculo"},
{"Complex numbers", "Nombres complexes", "Numeros complejos", "Komplexen Zahlen", "Numeros complexos"},
{"Combinatorics", "Denombrement", "Combinatoria", "Kombinatorik", "Combinatoria"},
{"Arithmetic", "Arithmetique", "Aritmetica", "Arithmetisch", "Aritmetica"},
{"Matrix", "Matrices", "Matriz", "Matrizen", "Matrizes"},
{"List", "Listes", "Listas", "Listen", "Listas"},
{"Approximation", "Approximation", "Aproximacion", "Approximation", "Aproximacao"},
{"Hyperbolic trigonometry", "Trigonometrie hyperbolique", "Trigonometria hiperbolica", "Hyperbelfunktionen", "Funcoes hiperbolicas"},
{"Prediction Interval", "Intervalle fluctuation", "Interval de prediccion", "Konfidenzintervall", "Intervalo de confianca"},
{"Derivative", "Nombre derive", "Derivada", "Ableitung", "Derivada"},
{"Integral", "Integrale", "Integral", "Integral", "Integral"},
{"Sum", "Somme", "Suma", "Summe", "Somatorio"},
{"Product", "Produit", "Productorio", "Produkt", "Produto"},
{"Absolute value", "Module", "Modulo", "Betrag", "Modulo"},
{"Argument", "Argument", "Argumento", "Argument", "Argumento"},
{"Real part", "Partie reelle", "Parte real", "Realer Teil", "Parte real"},
{"Imaginary part", "Partie imaginaire", "Parte imaginaria", "Imaginarer Teil", "Parte imaginaria"},
{"Conjugate", "Conjugue", "Conjugado", "Konjugiert", "Conjugado"},
{"Combination", "k parmi n", "Combinacion", "Kombination", "Combinacao"},
{"Permutation", "Arrangement", "Variacion", "Permutation", "Permutacao"},
{"GCD", "PGCD", "MCD", "ggT", "MDC"},
{"LCM", "PPCM", "MCM", "kgV", "MMC"},
{"Remainder division p by q", "Reste division p par q", "Resto division p por q", "Rest", "Resto da divisao inteira"},
{"Quotient division p by q", "Quotient division p par q", "Cociente division p por q", "Ganzzahlquotient", "Quociente"},
{"Inverse", "Inverse", "Inversa", "Inverse", "Matriz inversa"},
{"Determinant", "Determinant", "Determinante", "Determinante", "Determinante"},
{"Transpose", "Transposee", "Transpuesta", "Transponierte", "Matriz transposta"},
{"Trace", "Trace ", "Traza", "Spur", "Traco"},
{"Size", "Taille", "Tamano", "Grosse", "Tamanho"},
{"Sort ascending ", "Tri croissant", "Clasificacion ascendente", "Sortieren aufsteigend", "Ordem crescente"},
{"Sort descending", "Tri decroissant", "Clasificacion descendente", "Sortieren absteigend", "Ordem decrescente"},
{"Maximum", "Maximum", "Maximo", "Maximalwert", "Maximo"},
{"Minimum", "Minimum", "Minimo", "Mindestwert", "Minimo"},
{"Floor", "Partie entiere", "Parte entera", "Untergrenze", "Parte inteira"},
{"Fractional part", "Partie fractionnaire", "Parte fraccionaria", "Bruchanteil" , "Parte fraccionaria"},
{"Ceiling", "Plafond", "Techo", "Obergrenze", "Teto"},
{"Rounding to n digits", "Arrondi n chiffres", "Redondeo n digitos", "Runden", "Arredondar"},
{"Hyperbolic cosine", "Cosinus hyperbolique", "Coseno hiperbolico", "Kosinus hyperbolicus", "Cosseno hiperbolico"},
{"Hyperbolic sine", "Sinus hyperbolique", "Seno hiperbolico", "Sinus hyperbolicus", "Seno hiperbolico"},
{"Hyperbolic tangent", "Tangente hyperbolique", "Tangente hiperbolica", "Tangens hyperbolicus", "Tangente hiperbolica"},
{"Inverse hyperbolic cosine", "Argument cosinus hyperbolique", "Argumento coseno hiperbolico", "Areakosinus hyperbolicus", "Arco cosseno hiperbolico"},
{"Inverse hyperbolic sine", "Argument sinus hyperbolique", "Argumento seno hiperbolico", "Areasinus hyperbolicus", "Arco seno hiperbolico"},
{"Inverse hyperbolic tangent", "Argument tangente hyperbolique", "Argumento tangente hiperbolica", "Areatangens hyperbolicus", "Arco tangente hiperbolica"},
{"Prediction interval 95%", "Intervalle fluctuation 95% (Term)", "Intervalo de prediccion 95%", "Schwankungsbereich 95%", "Intervalo de previsao 95%"},
{"Simple prediction interval", "Intervalle fluctuation simple (2de)", "Intervalo de prediccion simple", "Einfaches Schwankungsbereich", "Intervalo de previsao simples"},
{"Confidence interval", "Intervalle confiance", "Intervalo de confianza", "Konfidenzintervall", "Intervalo de confianca"},
/* Applications */
{"Applications", "Applications", "Aplicaciones", "Anwendungen", "Aplicações"},
{"APPLICATIONS", "APPLICATIONS", "APLICACIONES", "ANWENDUNGEN", "APLICACOES"},
/* 1.Calculation */
{"Calculation", "Calculs", "Calculo", "Berechnung", "Calculo"},
{"CALCULATION", "CALCULS", "CALCULO", "BERECHNUNG", "CALCULO"},
/* 2.Function */
{"Functions", "Fonctions", "Funcion", "Funktionen", "Funcao"},
{"FUNCTIONS", "FONCTIONS", "FUNCION", "FUNKTIONEN", "FUNCAO"},
{"Functions", "Fonctions", "Funciones", "Funktionen", "Funcoes"},
{"Graph", "Graphique", "Grafico", "Graph", "Grafico"},
{"Table", "Tableau", "Tabla", "Tabelle", "Tabela"},
/* Function: first tab */
{"Plot graph", "Tracer le graphique", "Dibujar el grafico", "Graphen zeichnen", "Tracar o grafico"},
{"Display values", "Afficher les valeurs", "Visualizar los valores", "Werte anzeigen", "Exibir os valores"},
{"Function options", "Options de la fonction", "Opciones de la funcion", "Optionen Funktion", "Opcoes de funcao"},
{"Add function", "Ajouter une fonction", "Agregar una funcion", "Funktion hinzuzufugen", "Adicionar uma funcao"},
{"Delete function", "Supprimer la fonction", "Eliminar la funcion", "Funktion loschen", "Eliminar a funcao"},
{"No function to delete", "Pas de fonction a supprimer", "Ninguna funcion que eliminar", "Keine Funktion zu loschen", "Sem funcao para eliminar"},
{"Turn on/off", "Activer/Desactiver", "Activar/Desactivar", "Aktivieren/Deaktivieren", "Activar/Desactivar"},
{"Function color", "Couleur de la fonction", "Color de la funcion", "Farbe der Funktion", "Cor da funcao"},
/* Function: second tab */
{"No function", "Aucune fonction", "Ninguna funcion", "Keine funktion", "Nenhuma funcao"},
{"No function is turned on", "Aucune fonction activee", "Ninguna funcion activada", "Keine aktive Funktion", "Sem funcao ativada"},
{"Axes", "Axes", "Ejes", "Achsen", "Eixos"},
{"Zoom", "Zoom", "Zoom", "Zoom", "Zoom"},
{"Preadjustment", "Initialisation", "Inicializacion", "Initialisierung", "Inicializacao"},
{" Move: ", " Deplacer : ", " Mover : ", " Verschieben: ", " Mover : "},
{"Zoom: ", "Zoomer : ", "Zoom : ", "Zoom: ", "Zoom : "},
{" or ", " ou ", " o ", " oder ", " ou "},
{"Trigonometrical", "Trigonometrique", "Trigonometrico", "Trigonometrisch", "Trigonometrico"},
{"Integer", "Abscisses entieres", "Abscisas enteras", "Ganzzahl", "Inteiro"},
{"Orthonormal", "Orthonorme", "Ortonormal", "Orthonormal", "Ortonormado"},
{"Basic settings", "Reglages de base", "Ajustes basicos", "Grundeinstellungen", "Configuracoes basicas"},
{"Plot options", "Options de la courbe", "Opciones de la curva", "Plotoptionen", "Opcoes da curva"},
{"Calculate", "Calculer", "Calcular", "Berechnen", "Calcular"},
{"Go to", "Aller a", "Ir a", "Gehe zu", "Ir a"},
{"Value not reached by function", "Valeur non atteinte par la fonction", "No se alcanza este valor", "Der Wert wird nicht von der Funktion erreicht", "O valor nao e alcancado pela funcao"},
{"Zeros", "Zeros", "Raices", "Nullstellen", "Raizes"},
{"Tangent", "Tangente", "Tangente", "Tangente", "Tangente"},
{"Intersection", "Intersection", "Interseccion", "Schnittmenge", "Interseccao"},
{"Select lower bound", "Selectionner la borne inferieure", "Seleccionar el limite inferior", "Untere Integrationsgrenze", "Selecionar limite superior"},
{"Select upper bound", "Selectionner la borne superieure", "Seleccionar el limite superior", "Obere Integrationsgrenze", "Selecionar limite inferior"},
{"No zeros found", "Aucun zero trouve", "Ninguna raiz encontrada", "Keine Nullstelle gefunden", "Nenhuma encontrado de raiz"},
/* Function: third tab*/
{"Set the interval", "Regler l'intervalle", "Ajustar el intervalo", "Tabelleneinstell", "Ajustar o intervalo"},
{"X start", "X debut", "X inicio", "Startwert", "X inicio"},
{"X end", "X fin", "X fin", "Endwert", "X fim"},
{"Step", "Pas", "Incremento", "Schrittwert", "Passo"},
{"x column", "Colonne x", "Columna x", "X Spalte", "Coluna X"},
{"0(0) column", "Colonne 0(0)", "Columna 0(0)", "0(0) Spalte", "Coluna 0(0)"},
{"0'(x) column", "Colonne 0'(x)", "Columna 0'(x)", "0'(x) Spalte", "Coluna 0'(x)"},
{"Derivative function column", "Colonne de la fonction derivee", "Columna de la derivada", "Spalte der Ableitungsfunktion", "Coluna da funcao derivada"},
{"Clear column", "Effacer la colonne", "Borrar la columna", "Spalte loschen", "Excluir coluna"},
{"Export the column to a list", "Copier la colonne dans une liste", "Copiar la columna en una lista", "Die Spalte in einer Liste kopieren", "Copie a coluna em uma lista"},
{"Hide the derivative function", "Masquer la fonction derivee", "Ocultar la derivada", "Die Ableitungsfunktion ausblenden", "Esconder funcao derivada"},
/* Sequence */
{"Sequences", "Suites", "Sucesion", "Folge", "Sequencia"},
{"SEQUENCES", "SUITES", "SUCESION", "FOLGE", "SEQUENCIA"},
{"Sequences", "Suites", "Sucesiones", "Folgen", "Sequencias"},
/* Sequence: first tab */
{"Add sequence", "Ajouter une suite", "Agregar una sucesion", "Folge hinzuzufugen", "Adicionar uma sequencia"},
{"Choose sequence type", "Choisir le type de suite", "Seleccionar el tipo de sucesion", "Das Bildungsgesetz der Folge auswahlen", "Escolha o tipo de sequencia"},
{"Sequence type", "Type de suite", "Tipo de sucesion", "Bildungsgesetz der Folge", "Tipo de sequencia"},
{"Explicit expression", "Explicite", "Formula explicita", "Explizit", "Explicita"},
{"Recursive first order", "Recurrente d'ordre 1", "Recurrencia de orden uno", "Rekursiv, Ordnung 1", "Recorrencia de Primeira Ordem"},
{"Recursive second order", "Recurrente d'ordre 2", "Recurrencia de orden dos", "Rekursiv, Ordnung 2", "Recorrencia de Segunda Ordem"},
{"Sequence options", "Options de la suite", "Opciones de la sucesion", "Optionen Folge", "Opcoes de sequencia"},
{"Sequence color", "Couleur de la suite", "Color de la sucesion", "Farbe der Folge", "Cor da sequencia"},
{"Delete sequence", "Supprimer la suite", "Eliminar la sucesion", "Folge loschen", "Eliminar a sequencia"},
/* Sequence: second tab */
{"No sequence", "Aucune suite", "Ninguna sucesion", "Keine Folge", "Sem sequencia"},
{"No sequence is turned on", "Aucune suite activee", "Ninguna sucesion activada", "Keine aktive Folge", "Sem sequencia ativada"},
{"N start", "N debut", "N inicio", "Startwert", "N inicio"},
{"N end", "N fin", "N fin", "Endwert", "N fim"},
{"Sum of terms", "Somme des termes", "Suma de terminos", "Summe der Glieder", "Soma dos termos"},
{"Select First Term ", "Selectionner le premier terme ", "Seleccionar el premer termino ", "Erster Glied ", "Selecionar primeiro termo " },
{"Select last term ", "Selectionner le dernier terme ", "Seleccionar el ultimo termino ", "Letztes Glied ", "Selecionar ultimo termo "},
{"Value not reached by sequence", "Valeur non atteinte par la suite", "No se alcanza este valor", "Der Wert wird nicht von der Folge erreicht", "O valor nao e alcancado pela sequencia"},
/* Sequence: third tab */
{"n column", "Colonne n", "Columna n", "n Spalte", "Coluna n"},
/* Statistics */
{"Statistics", "Statistiques", "Estadistica", "Statistiken", "Estatistica"},
{"STATISTICS", "STATISTIQUES", "ESTADISTICA", "STATISTIKEN", "ESTATISTICA"},
{"Data", "Donnees", "Datos", "Daten", "Dados"},
{"Histogram", "Histogramme", "Histograma", "Histogramm", "Histograma"},
{"Box", "Boite", "Caja", "Boxplot", "Caixa"},
{"Stats", "Stats", "Medidas", "Stats", "Estat"},
/* Statistics: first tab */
{"Values", "Valeurs", "Valores", "Werte", "Valores"},
{"Sizes", "Effectifs", "Frecuencias", "Haufigkeiten", "Frequencias"},
{"Column options", "Options de la colonne", "Opciones de la columna", "Optionen Spalte", "Opcoes de coluna"},
{"Import from a list", "Importer une liste", "Importar una lista", "Laden eine Liste", "Importar de uma lista"},
/* Statistics: second tab */
{"No data to draw", "Aucune donnee a tracer", "Ningunos datos que dibujar", "Keine Daten zu zeichnen", "Nao ha dados para desenhar"},
{" Interval ", " Intervalle ", " Intervalo", " Intervall", " Intervalo"},
{" Size", " Effectif", " Frecuencia", " Haufigkeit", " Frequencia"},
{"Frequency", "Frequence", "Relativa", "Relative", "Relativa"},
{"Histogram settings", "Reglage de l'histogramme", "Parametros del histograma", "Einstellung des Histogramms", "Configurando o histograma"},
{"Bin width", "Largeur des rectangles", "Ancho del rectangulo", "Breite der Rechtecken", "Largura dos rectangulos"},
{"X start", "Debut de la serie", "Principio de la serie", "Beginn der Serie", "Inicio da serie"},
/* Statistics: third tab */
{"First quartile", "Premier quartile", "Primer cuartil", "Unteres Quartil", "Quartil inferior"},
{"Median", "Mediane", "Mediana", "Median", "Mediana"},
{"Third quartile", "Troisieme quartile", "Tercer cuartil", "Oberes Quartil", "Quartil superior"},
/* Statistics: fourth tab */
{"No values to calculate", "Aucune grandeur a calculer", "Ninguna medida que calcular", "Keine Grosse zu berechnen", "Nenhuma quantidade para calcular"},
{"Total size", "Effectif total", "Poblacion", "Anzahl der Elemente", "Numero de itens"},
{"Range", "Etendue", "Rango", "Spannweite", "Amplitude"},
{"Mean", "Moyenne", "Media", "Mittelwert", "Media"},
{"Standard deviation", "Ecart type", "Desviacion tipica", "Standardabweichung", "Desvio padrao"},
{englishStandardDeviationSigma, frenchStandardDeviationSigma, spanishStandardDeviationSigma, germanStandardDeviationSigma, portugueseStandardDeviationSigma},
{"Sample std deviation s", "Ecart type echantillon", "Desv. tipica muestral s", "Standardabweichung s", "Desvio padrao amostral s"},
{"Variance", "Variance", "Varianza", "Varianz", "Variancia"},
{"Interquartile range", "Ecart interquartile", "Rango intercuartilo", "Interquartilsabstand", "Interquartil"},
{"Sum of squares", "Somme des carres", "Suma cuadrados", "Quadratsumme", "Soma dos quadrados"},
/* Probability */
{"Probability", "Probabilites", "Probabilidad", "Wahrsch.", "Probabilidade"},
{"PROBABILITY", "PROBABILITES", "PROBABILIDAD", "WAHRSCHEINLICHKEIT", "PROBABILIDADE"},
{"Choose the distribution", "Choisir le type de loi", "Seleccionar la distribucion", "Wahlen Sie Verteilung", "Selecionar a distribuicao"},
{"Binomial", "Binomiale", "Binomial", "Binomial", "Binomial"},
{"Uniform", "Uniforme", "Uniforme", "Uniform", "Uniforme"},
{"Exponential", "Exponentielle", "Exponencial", "Exponential", "Exponencial"},
{"Normal", "Normale", "Normal", "Normal", "Normal"},
{"Poisson", "Poisson", "Poisson", "Poisson", "Poisson"},
{"Binomial distribution", "Loi binomiale", "Distribucion binomial", "Binomialverteilung", "Distribuicao binomial"},
{"Uniform distribution", "Loi uniforme", "Distribucion uniforme", "Uniformverteilung", "Distribuicao uniforme"},
{"Exponential distribution", "Loi exponentielle", "Distribucion exponencial", "Exponentialverteilung", "Distribuicao exponencial"},
{"Normal distribution", "Loi normale", "Distribucion normal", "Normalverteilung", "Distribuicao normal"},
{"Poisson distribution", "Loi de Poisson", "Distribucion de Poisson", "Poisson-Verteilung", "Distribuicao de Poisson"},
{"Choose parameters", "Choisir les parametres", "Seleccionar parametros", "Parameter auswahlen", "Selecionar os parametros"},
{"n: Number of trials", "n : Nombre de repetitions", "n : Numero de ensayos ", "n : Anzahl der Versuche", "n : Numero de ensaios"},
{"p: Success probability", "p : Probabilite de succes", "p : Probabilidad de exito ", "p : Erfolgswahrscheinlichkeit", "p : Probabilidade de sucesso"},
{"[a,b]: Interval", "[a,b] : Intervalle", "[a,b] : Intervalo", "[a,b] : Intervall", "[a,b] : Intervalo"},
{lambdaExponentialEnglishDefinition, lambdaExponentialFrenchDefinition, lambdaExponentialSpanishDefinition, lambdaExponentialGermanDefinition, lambdaExponentialPortugueseDefinition},
{meanEnglishDefinition, meanFrenchDefinition, meanSpanishDefinition, meanGermanDefinition, meanPortugueseDefinition},
{deviationEnglishDefinition, deviationFrenchDefinition, deviationSpanishDefinition, deviationGermanDefinition, deviationPortugueseDefinition},
{lambdaPoissonEnglishDefinition, lambdaPoissonFrenchDefinition, lambdaPoissonSpanishDefinition, lambdaPoissonGermanDefinition, lambdaPoissonPortugueseDefinition},
{"Calculate probabilities", "Calculer les probabilites", "Calcular las probabilidades", "Die Wahrscheinlichkeiten berechnen", "Calcular probabilidades"},
{"Forbidden value", "Valeur interdite", "Valor prohibido","Verbotener Wert", "Valor proibida"},
{"Undefined value", "Valeur non definie", "Valor indefinido", "Undefinierter Wert", "Valor indefinido"},
/* Regression */
{"Regression", "Regressions", "Regresion", "Regression", "Regressao"},
{"REGRESSION", "REGRESSIONS", "REGRESION", "REGRESSION", "REGRESSAO"},
{"Regression", "Regression", "Regresion", "Regression", "Regressao"},
{"Not enough data for regression", "Pas assez de donnees pour une regression", "Escasez de datos para la regresion", "Nicht genug Daten fur eine Regression", "Nao ha dados suficientes para uma regressao"},
{"reg", "reg", "reg", "reg", "reg"},
{"mean", "moyen", "media", "mittel", "media"},
{"Regression line", "Droite de regression", "Recta de regresion", "Regressionsgerade", "Linha de regressao"},
{"Prediction given X", "Prediction sachant X", "Prediccion dado X", "Berechne Y", "Predicao dado X"},
{"Prediction given Y", "Prediction sachant Y", "Prediccion dado Y", "Berechne X", "Predicao dado Y"},
{"Value not reached by regression", "Valeur non atteinte par la regression", "No se alcanza este valor", "Wert wird nicht von der Regression erreicht", "Valor nao alcancado pela regressao"},
{"Number of points", "Nombre de points", "Numero de puntos", "Punktanzahl", "Numero de pontos"},
{"Covariance", "Covariance", "Covarianza", "Kovarianz", "Covariancia"},
/* Settings */
{"Settings", "Parametres", "Configuracion", "Einstellungen", "Configuracao"},
{"SETTINGS", "PARAMETRES", "CONFIGURACION", "EINSTELLUNGEN", "CONFIGURACAO"},
{"Angle measure", "Unite d'angle", "Medida del angulo", "Winkeleinheit", "Valor do angulo"},
{"Result format", "Format resultat", "Formato resultado", "Zahlenformat", "Formato numerico"},
{"Complex format", "Forme complexe", "Formato complejo", "Komplex", "Complexos"},
{"Language", "Langue", "Idioma", "Sprache", "Idioma"},
{"Exam mode", "Mode examen", "Modo examen", "Testmodus", "Modo de Exame"},
{"Activate exam mode", "Activer le mode examen", "Activar el modo examen", "Start Testmodus", "Inicio modo de exame"},
{"Exam mode: active", "Mode examen: actif", "Modo examen: activo", "Testmodus : aktiv", "Modo de exame : ativo"},
{"All your data will be ", "Toutes vos donnees seront ", "Todos sus datos se ", "Alle Ihre Daten werden ", "Todos os seus dados serao "},
{"deleted when you activate ", "supprimees si vous activez ", "eliminaran al activar ", "geloscht, wenn Sie den ", "apagados se voce ligar "},
{"the exam mode.", "le mode examen.", "el modo examen.", "Testmodus einschalten.", "o modo de exame."},
{"Exit the exam ", "Voulez-vous sortir ", "Salir del modo ", "Wollen Sie den Testmodus ", "Voce quer sair do modo de "},
{"mode?", "du mode examen ?", "examen ?", "verlassen?", "exame ?"},
{"About", "A propos", "Acerca", "Uber", "Acerca"},
{"Degrees ", "Degres ", "Grados ", "Grad ", "Graus "},
{"Radians ", "Radians ", "Radianes ", "Bogenmass ", "Radianos "},
{"Auto ", "Auto ", "Auto ", "Auto ", "Auto "},
{"Scientific ", "Scientifique ", "Cientifico ", "Wissenschaftlich ", "Cientifico "},
{"deg", "deg", "gra", "gra", "gra"},
{"rad", "rad", "rad", "rad", "rad"},
{"sci/", "sci/", "sci/", "sci/", "sci/"},
{"Brightness", "Luminosite", "Brillo", "Helligkeit", "Brilho"},
{"Software version", "Version du logiciel", "Version de software", "Softwareversion", "Versao do software"},
{"Serial number", "Numero serie", "Numero serie", "Seriennummer", "Numero serie"},
{"Update pop-up", "Rappel mise a jour", "Pop-up de actualizacion", "Erinnerung: Update", "Alertas de atualizacao"},
{"You are starting the hardware", "Vous allez lancer le test usine.", "Esta iniciando la prueba de", "Sie werden den Hardwaretest", "Voce vai executar o teste da planta."},
{" test. At the end of the test, you", "Pour en sortir vous devrez", "fabrica. Para quitar la prueba,", "starten. Um den zu verlassen, mussen", "Para sair voce tem que executar"},
{"will have to reset the device and", "effectuer un reset qui supprimera", "debera resetear su equipo.", "Sie einen Reset durchfuhren, der", "uma redefinicao, que ira apagar"},
{"all your data will be deleted.", "vos donnees.", "", "Ihre Daten loschen werden.", "seus dados."},
/* Code */
{"BETA VERSION", "VERSION BETA", "BETA VERSION", "BETA VERSION", "BETA VERSION"},
{"You are using a pre-release and", "La version de Python que vous utilisez", "No esta utilizando una version", "You are using a pre-release and", "You are using a pre-release and"},
{"feature-limited version of Python.", "n'est pas une version definitive.", "definitiva de Python.", "feature-limited version of Python.", "feature-limited version of Python."},
{"You may encounter some", "Il est possible que son utilisation soit", "Es posible que encuentre varios bugs", "You may encounter", "You may encounter"},
{"unexpected bugs.", "limitee et que certains bugs apparaissent.", "y que su utilizacion sea limitada.", "unexpected bugs.", "unexpected bugs."},
{"Edit program", "Editer le programme", "Editar el programa", "Programm bearbeiten", "Editar programa"},
{"Execute program", "Executer le programme", "Ejecutar el programa", "Programm ausfuhren", "Executar programa"},
/* On boarding */
{"UPDATE AVAILABLE", "MISE A JOUR DISPONIBLE", "ACTUALIZACION DISPONIBLE", "UPDATE VERFUGBAR", "ATUALIZACAO DISPONIVEL"},
{"There are important upgrades", "Des ameliorations importantes existent", "Hay mejoras importantes", "Wichtige Verbesserungen fur Ihren", "Existem melhorias significativas"},
{"for your calculator.", "pour votre calculatrice.", "para su calculadora.", "Rechner stehen zur Verfugung.", "para a sua calculadora."},
{"Browse our page from your computer", "Connectez-vous depuis votre ordinateur", "Visita nuestra pagina desde su ordenador", "Melden Sie sich von Ihrem Computer an", "Navegue na nossa pagina do seu computador"},
{"www.numworks.com/update", "www.numworks.com/update", "www.numworks.com/update", "www.numworks.com/update", "www.numworks.com/update"},
{"Skip", "Passer", "Saltar", "Uberspringen", "Pular"},
};
const char sxy[4] = {Ion::Charset::CapitalSigma, 'x', 'y', 0};
constexpr static char mu[] = {Ion::Charset::SmallMu, 0};
constexpr static char sigma[] = {Ion::Charset::SmallSigma, 0};
constexpr static char lambda[] = {Ion::Charset::SmallLambda, 0};
constexpr static char rightIntegralSecondLegend[] = {Ion::Charset::LessEqual, 'X', ')', '=', 0};
constexpr static char leftIntegralFirstLegend[] = {'P', '(', 'X', Ion::Charset::LessEqual, 0};
constexpr static char finiteIntegralLegend[] = {Ion::Charset::LessEqual, 'X', Ion::Charset::LessEqual, 0};
const char * universalMessages[242] {
"",
"Python",
"PYTHON (BETA)",
"alpha",
"ALPHA",
"shift",
"x",
"y",
"n",
"p",
mu,
sigma,
lambda,
"a",
"b",
"r",
sxy,
"Xmin",
"Xmax",
"Ymin",
"Ymax",
"Y auto",
"P(",
rightIntegralSecondLegend,
leftIntegralFirstLegend,
")=",
finiteIntegralLegend,
"P(X=",
" D: y=ax+b ",
"Francais ",
"English ",
"Espanol ",
"Deutsch ",
"Portugues ",
"FCC ID",
/* Toolbox: commands */
"abs()",
"root(,)",
"log(,)",
"diff(,)",
"int(,,)",
"sum(,,)",
"product(,,)",
"arg()",
"re()",
"im()",
"conj()",
"binomial(,)",
"permute(,)",
"gcd(,)",
"lcm(,)",
"rem(,)",
"quo(,)",
"inverse()",
"det()",
"transpose()",
"trace()",
"dim()",
"sort<()",
"sort>()",
"max()",
"min()",
"floor()",
"frac()",
"ceil()",
"round(,)",
"cosh()",
"sinh()",
"tanh()",
"acosh()",
"asinh()",
"atanh()",
"prediction95(,)",
"prediction(,)",
"confidence(,)",
"abs(x)",
"root(x,n)",
"log(a,x)",
"diff(f(x),a)",
"int(f(x),a,b)",
"sum(f(n),nmin,nmax)",
"product(f(n),nmin,nmax)",
"arg(z)",
"re(z)",
"im(z)",
"conj(z)",
"binomial(n,k)",
"permute(n,r)",
"gcd(p,q)",
"lcm(p,q)",
"rem(p,q)",
"quo(p,q)",
"inverse(M)",
"det(M)",
"transpose(M)",
"trace(M)",
"dim(M)",
"sort<(L)",
"sort>(L)",
"max(L)",
"min(L)",
"floor(x)",
"frac(x)",
"ceil(x)",
"round(x,n)",
"cosh(x)",
"sinh(x)",
"tanh(x)",
"acosh(x)",
"asinh(x)",
"atanh(x)",
"prediction95(p,n)",
"prediction(p,n)",
"confidence(f,n)",
};
const char * translate(Message m, Language l) {
if ((int)m >= 0x8000) {
assert(universalMessages[(int)m - 0X8000] != nullptr);
return universalMessages[(int)m - 0x8000];
}
int languageIndex = (int)l;
if (l == Language::Default) {
languageIndex = (int) GlobalPreferences::sharedGlobalPreferences()->language();
}
assert(languageIndex > 0);
assert(((int)m*numberOfLanguages()+languageIndex-1)*sizeof(char *) < sizeof(messages));
return messages[(int)m][languageIndex-1];
}
int numberOfLanguages() {
return NumberOfLanguages;
}
}

View File

@@ -1,410 +0,0 @@
#ifndef APPS_I18N_H
#define APPS_I18N_H
#include <escher.h>
namespace I18n {
constexpr static int NumberOfLanguages = 5;
enum class Message : uint16_t {
Warning = 0,
Ok = 1,
Cancel = 2,
Next = 3,
SyntaxError,
MathError,
LowBattery,
/* Variables */
Variables,
Number,
Matrix,
List,
Empty,
/* Toolbox */
Toolbox,
AbsoluteValue,
NthRoot,
BasedLogarithm,
Calculation,
ComplexNumber,
Probability,
Arithmetic,
Matrices,
Lists,
Approximation,
HyperbolicTrigonometry,
Fluctuation,
DerivateNumber,
Integral,
Sum,
Product,
ComplexAbsoluteValue,
Agument,
ReelPart,
ImaginaryPart,
Conjugate,
Combination,
Permutation,
GreatCommonDivisor,
LeastCommonMultiple,
Remainder,
Quotient,
Inverse,
Determinant,
Transpose,
Trace,
Dimension,
Sort,
InvSort,
Maximum,
Minimum,
Floor,
FracPart,
Ceiling,
Rounding,
HyperbolicCosine,
HyperbolicSine,
HyperbolicTangent,
InverseHyperbolicCosine,
InverseHyperbolicSine,
InverseHyperbolicTangent,
Prediction95,
Prediction,
Confidence,
/* Applications */
Apps,
AppsCapital,
/* Calculation */
CalculApp,
CalculAppCapital,
/* Fonction */
FunctionApp,
FunctionAppCapital,
FunctionTab,
GraphTab,
ValuesTab,
Plot,
DisplayValues,
FunctionOptions,
AddFunction,
DeleteFunction,
NoFunctionToDelete,
ActivateDesactivate,
FunctionColor,
NoFunction,
NoActivatedFunction,
Axis,
Zoom,
Initialization,
Move,
ToZoom,
Or,
Trigonometric,
RoundAbscissa,
Orthonormal,
DefaultSetting,
PlotOptions,
Compute,
Goto,
ValueNotReachedByFunction,
Zeros,
Tangent,
Intersection,
SelectLowerBound,
SelectUpperBound,
NoZeroFound,
IntervalSet,
XStart,
XEnd,
Step,
XColumn,
FunctionColumn,
DerivativeColumn,
DerivativeFunctionColumn,
ClearColumn,
CopyColumnInList,
HideDerivativeColumn,
/* Sequence */
SequenceApp,
SequenceAppCapital,
SequenceTab,
AddSequence,
ChooseSequenceType,
SequenceType,
Explicite,
SingleRecurrence,
DoubleRecurrence,
SequenceOptions,
SequenceColor,
DeleteSequence,
NoSequence,
NoActivatedSequence,
NStart,
NEnd,
TermSum,
SelectFirstTerm,
SelectLastTerm,
ValueNotReachedBySequence,
NColumn,
/* Statistics */
StatsApp,
StatsAppCapital,
DataTab,
HistogramTab,
BoxTab,
StatTab,
Values,
Sizes,
ColumnOptions,
ImportList,
NoDataToPlot,
Interval,
Size,
Frequency,
HistogramSet,
RectangleWidth,
BarStart,
FirstQuartile,
Median,
ThirdQuartile,
NoValueToCompute,
TotalSize,
Range,
Mean,
StandardDeviation,
StandardDeviationSigma,
SampleStandardDeviationS,
Deviation,
InterquartileRange,
SquareSum,
/* Probability */
ProbaApp,
ProbaAppCapital,
ChooseLaw,
Binomial,
Uniforme,
Exponential,
Normal,
Poisson,
BinomialLaw,
UniformLaw,
ExponentialLaw,
NormalLaw,
PoissonLaw,
ChooseParameters,
RepetitionNumber,
SuccessProbability,
IntervalDefinition,
LambdaExponentialDefinition,
MeanDefinition,
DeviationDefinition,
LambdaPoissonDefinition,
ComputeProbability,
ForbiddenValue,
UndefinedValue,
/* Regression */
RegressionApp,
RegressionAppCapital,
Regression,
NoEnoughDataForRegression,
Reg,
MeanDot,
RegressionSlope,
XPrediction,
YPrediction,
ValueNotReachedByRegression,
NumberOfDots,
Covariance,
/* Settings */
SettingsApp,
SettingsAppCapital,
AngleUnit,
DisplayMode,
ComplexFormat,
Language,
ExamMode,
ActivateExamMode,
ExamModeActive,
ActiveExamModeMessage1,
ActiveExamModeMessage2,
ActiveExamModeMessage3,
ExitExamMode1,
ExitExamMode2,
About,
Degres,
Radian,
Auto,
Scientific,
Deg,
Rad,
Sci,
Brightness,
SoftwareVersion,
SerialNumber,
UpdatePopUp,
HardwareTestLaunch1,
HardwareTestLaunch2,
HardwareTestLaunch3,
HardwareTestLaunch4,
/* Code */
BetaVersion,
BetaVersionMessage1,
BetaVersionMessage2,
BetaVersionMessage3,
BetaVersionMessage4,
EditProgram,
ExecuteProgram,
/* On boarding */
UpdateAvailable,
UpdateMessage1,
UpdateMessage2,
UpdateMessage3,
UpdateMessage4,
Skip,
/* UNIVERSAL MESSAGES */
Default = 0x8000,
CodeApp,
CodeAppCapital,
Alpha,
CapitalAlpha,
Shift,
X,
Y,
N,
P,
Mu,
Sigma,
Lambda,
A,
B,
R,
Sxy,
XMin,
XMax,
YMin,
YMax,
YAuto,
RightIntegralFirstLegend,
RightIntegralSecondLegend,
LeftIntegralFirstLegend,
LeftIntegralSecondLegend,
FiniteIntegralLegend,
DiscreteLegend,
RegressionFormula,
French,
English,
Spanish,
German,
Portuguese,
FccId,
/* Toolbox: commands */
AbsCommand,
RootCommand,
LogCommand,
DiffCommand,
IntCommand,
SumCommand,
ProductCommand,
ArgCommand,
ReCommand,
ImCommand,
ConjCommand,
BinomialCommand,
PermuteCommand,
GcdCommand,
LcmCommand,
RemCommand,
QuoCommand,
InverseCommand,
DeterminantCommand,
TransposeCommand,
TraceCommand,
DimensionCommand,
SortCommand,
InvSortCommand,
MaxCommand,
MinCommand,
FloorCommand,
FracCommand,
CeilCommand,
RoundCommand,
CoshCommand,
SinhCommand,
TanhCommand,
AcoshCommand,
AsinhCommand,
AtanhCommand,
Prediction95Command,
PredictionCommand,
ConfidenceCommand,
AbsCommandWithArg,
RootCommandWithArg,
LogCommandWithArg,
DiffCommandWithArg,
IntCommandWithArg,
SumCommandWithArg,
ProductCommandWithArg,
ArgCommandWithArg,
ReCommandWithArg,
ImCommandWithArg,
ConjCommandWithArg,
BinomialCommandWithArg,
PermuteCommandWithArg,
GcdCommandWithArg,
LcmCommandWithArg,
RemCommandWithArg,
QuoCommandWithArg,
InverseCommandWithArg,
DeterminantCommandWithArg,
TransposeCommandWithArg,
TraceCommandWithArg,
DimensionCommandWithArg,
SortCommandWithArg,
InvSortCommandWithArg,
MaxCommandWithArg,
MinCommandWithArg,
FloorCommandWithArg,
FracCommandWithArg,
CeilCommandWithArg,
RoundCommandWithArg,
CoshCommandWithArg,
SinhCommandWithArg,
TanhCommandWithArg,
AcoshCommandWithArg,
AsinhCommandWithArg,
AtanhCommandWithArg,
Prediction95CommandWithArg,
PredictionCommandWithArg,
ConfidenceCommandWithArg,
};
enum class Language : uint16_t {
Default = 0,
English = 1,
French = 2,
Spanish = 3,
German = 4,
Portuguese = 5
};
}
#endif

178
apps/i18n.py Normal file
View File

@@ -0,0 +1,178 @@
#!/usr/bin/python
#coding=utf-8
import sys
import re
import unicodedata
from sets import Set
import argparse
ion_special_characters = {
u'Σ': "Ion::Charset::CapitalSigma",
u'λ': "Ion::Charset::SmallLambda",
u'μ': "Ion::Charset::SmallMu",
u'σ': "Ion::Charset::SmallSigma",
u'': "Ion::Charset::LessEqual"
}
def ion_char(i18n_letter):
if i18n_letter == '\'':
return "'\\\''"
if ord(i18n_letter) < 128:
return "'" + i18n_letter + "'"
if i18n_letter in ion_special_characters:
return ion_special_characters[i18n_letter]
normalized = unicodedata.normalize("NFD", i18n_letter).encode('ascii', 'ignore')
#sys.stderr.write("Warning: Normalizing unicode character \"" + i18n_letter + "\" -> \"" + normalized + "\"\n")
return "'" + normalized + "'"
def source_definition(i18n_string):
ion_characters = []
for i18n_letter in i18n_string.decode('utf8'):
ion_characters.append(ion_char(i18n_letter))
ion_characters.append("0")
return "{" + ", ".join(ion_characters) + "}"
def split_line(line):
match = re.match(r"^(\w+)\s*=\s*\"(.*)\"$", line)
if not match:
sys.stderr.write("Error: Invalid line \"" + line + "\"\n")
sys.exit(-1)
return (match.group(1), source_definition(match.group(2)))
def locale_from_filename(filename):
return re.match(r".*\.([a-z]+)\.i18n", filename).group(1)
def parse_files(files):
data = {}
messages = Set()
universal_messages = Set()
for path in files:
locale = locale_from_filename(path)
if locale not in data:
data[locale] = {}
with open(path, "r") as file:
for line in file:
name,definition = split_line(line)
if locale == "universal":
if name in messages:
sys.stderr.write("Error: Redefinition of message \"" + name + "\" as universal\n")
sys.exit(-1)
if name in universal_messages:
sys.stderr.write("Error: Redefinition of universal message \"" + name + "\"\n")
sys.exit(-1)
universal_messages.add(name)
else:
messages.add(name)
data[locale][name] = definition
return {"messages": sorted(messages), "universal_messages": sorted(universal_messages), "data": data}
def print_header(data, path, locales):
f = open(path, 'w')
f.write("#ifndef APPS_I18N_H\n")
f.write("#define APPS_I18N_H\n")
f.write("\n")
f.write("// This file is auto-generated by i18n.py\n")
f.write("\n")
f.write("#include <escher.h>\n")
f.write("\n")
f.write("namespace I18n {\n")
f.write("\n")
f.write("constexpr static int NumberOfLanguages = %d;\n" % len(locales))
f.write("\n")
f.write("enum class Message : uint16_t {\n")
for message in data["messages"]:
f.write(" " + message + ",\n")
f.write("\n")
f.write(" UniversalMessageMarker,\n")
f.write("\n")
for message in data["universal_messages"]:
f.write(" " + message + ",\n")
f.write("};\n")
f.write("\n")
f.write("enum class Language : uint16_t {\n")
f.write(" Default = 0,\n")
for locale in locales:
f.write(" " + locale.upper() + ",\n")
f.write("};\n")
f.write("\n")
f.write("constexpr const Message LanguageNames[NumberOfLanguages] = {\n");
for locale in locales:
f.write(" Message::Language" + locale.upper() + ",\n")
f.write("};\n")
f.write("\n")
f.write("}\n")
f.write("\n")
f.write("#endif\n")
f.close()
def print_implementation(data, path, locales):
f = open(path, 'w')
f.write("#include \"i18n.h\"\n")
f.write("#include \"global_preferences.h\"\n")
f.write("#include <assert.h>\n");
f.write("\n")
f.write("namespace I18n {\n")
f.write("\n")
for message in data["messages"]:
for locale in locales:
if not locale in data["data"]:
sys.stderr.write("Error: Undefined locale \"" + locale + "\"\n")
sys.exit(-1)
if not message in data["data"][locale]:
sys.stderr.write("Error: Undefined key \"" + message + "\" for locale \"" + locale + "\"\n")
sys.exit(-1)
f.write("constexpr static char " + locale + message + "[] = " + data["data"][locale][message] + ";\n")
f.write("\n")
f.write("constexpr static const char * messages[%d][%d] = {\n" % (len(data["messages"]), len(locales)))
for message in data["messages"]:
f.write(" {")
for locale in locales:
if not locale in data["data"]:
sys.stderr.write("Error: Undefined locale \"" + locale + "\"\n")
sys.exit(-1)
if not message in data["data"][locale]:
sys.stderr.write("Error: Undefined key \"" + message + "\" for locale \"" + locale + "\"\n")
sys.exit(-1)
f.write(locale + message + ", ")#; + data["data"][locale][message] + ",\n")
f.write("},\n")
f.write("};\n")
f.write("\n")
for message in data["universal_messages"]:
f.write("constexpr static char universal" + message + "[] = " + data["data"]["universal"][message] + ";\n")
f.write("\n")
f.write("constexpr static const char * universalMessages[%d] = {\n" % len(data["universal_messages"]))
for message in data["universal_messages"]:
f.write(" universal" + message + ",\n")
f.write("};\n")
f.write("\n")
f.write("const char * translate(Message m, Language l) {\n")
f.write(" int universalMessageOffset = (int)Message::UniversalMessageMarker+1;\n")
f.write(" if ((int)m >= universalMessageOffset) {\n")
f.write(" assert(universalMessages[(int)m - universalMessageOffset] != nullptr);\n")
f.write(" return universalMessages[(int)m - universalMessageOffset];\n")
f.write(" }")
f.write(" int languageIndex = (int)l;\n")
f.write(" if (l == Language::Default) {\n")
f.write(" languageIndex = (int) GlobalPreferences::sharedGlobalPreferences()->language();\n")
f.write(" }\n")
f.write(" assert(languageIndex > 0);\n")
f.write(" assert(((int)m*NumberOfLanguages+languageIndex-1)*sizeof(char *) < sizeof(messages));\n")
f.write(" return messages[(int)m][languageIndex-1];\n")
f.write("}\n")
f.write("\n")
f.write("}\n")
f.close()
parser = argparse.ArgumentParser(description="Process some i18n files.")
parser.add_argument('--header', help='the .h file to generate')
parser.add_argument('--implementation', help='the .cpp file to generate')
parser.add_argument('--locales', nargs='+', help='locale to actually generate')
parser.add_argument('--files', nargs='+', help='an i18n file')
args = parser.parse_args()
data = parse_files(args.files)
if args.header:
print_header(data, args.header, args.locales)
if args.implementation:
print_implementation(data, args.implementation, args.locales)

View File

@@ -0,0 +1 @@
LanguageDE = "Deutsch "

View File

@@ -0,0 +1 @@
LanguageEN = "English "

View File

@@ -0,0 +1 @@
LanguageES = "Español "

View File

@@ -0,0 +1 @@
LanguageFR = "Français "

View File

@@ -0,0 +1 @@
LanguagePT = "Portugués "

View File

@@ -6,5 +6,13 @@ app_objs += $(addprefix apps/on_boarding/,\
update_controller.o\
)
i18n_files += $(addprefix apps/on_boarding/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/on_boarding/logo_icon.png

View File

@@ -0,0 +1,6 @@
UpdateAvailable = "UPDATE VERFUGBAR"
UpdateMessage1 = "Wichtige Verbesserungen fur Ihren"
UpdateMessage2 = "Rechner stehen zur Verfugung."
UpdateMessage3 = "Melden Sie sich von Ihrem Computer an"
UpdateMessage4 = "www.numworks.com/update"
Skip = "Uberspringen"

View File

@@ -0,0 +1,6 @@
UpdateAvailable = "UPDATE AVAILABLE"
UpdateMessage1 = "There are important upgrades"
UpdateMessage2 = "for your calculator."
UpdateMessage3 = "Browse our page from your computer"
UpdateMessage4 = "www.numworks.com/update"
Skip = "Skip"

View File

@@ -0,0 +1,6 @@
UpdateAvailable = "ACTUALIZACION DISPONIBLE"
UpdateMessage1 = "Hay mejoras importantes"
UpdateMessage2 = "para su calculadora."
UpdateMessage3 = "Visita nuestra pagina desde su ordenador"
UpdateMessage4 = "www.numworks.com/update"
Skip = "Saltar"

View File

@@ -0,0 +1,6 @@
UpdateAvailable = "MISE A JOUR DISPONIBLE"
UpdateMessage1 = "Des ameliorations importantes existent"
UpdateMessage2 = "pour votre calculatrice."
UpdateMessage3 = "Connectez-vous depuis votre ordinateur"
UpdateMessage4 = "www.numworks.com/update"
Skip = "Passer"

View File

@@ -0,0 +1,6 @@
UpdateAvailable = "ATUALIZACAO DISPONIVEL"
UpdateMessage1 = "Existem melhorias significativas"
UpdateMessage2 = "para a sua calculadora."
UpdateMessage3 = "Navegue na nossa pagina do seu computador"
UpdateMessage4 = "www.numworks.com/update"
Skip = "Pular"

View File

@@ -24,6 +24,14 @@ app_objs += $(addprefix apps/probability/,\
parameters_controller.o\
)
i18n_files += $(addprefix apps/probability/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/probability/probability_icon.png
app_images += $(addprefix apps/probability/images/,\
@@ -45,4 +53,4 @@ app_images += $(addprefix apps/probability/images/,\
normal_icon.png\
poisson_icon.png\
uniform_icon.png\
)
)

View File

@@ -0,0 +1,24 @@
ProbaApp = "Wahrsch."
ProbaAppCapital = "WAHRSCHEINLICHKEIT"
ChooseLaw = "Wahlen Sie Verteilung"
Binomial = "Binomial"
Uniforme = "Uniform"
Exponential = "Exponential"
Normal = "Normal"
Poisson = "Poisson"
BinomialLaw = "Binomialverteilung"
UniformLaw = "Uniformverteilung"
ExponentialLaw = "Exponentialverteilung"
NormalLaw = "Normalverteilung"
PoissonLaw = "Poisson-Verteilung"
ChooseParameters = "Parameter auswahlen"
RepetitionNumber = "n : Anzahl der Versuche"
SuccessProbability = "p : Erfolgswahrscheinlichkeit"
IntervalDefinition = "[a,b] : Intervall"
LambdaExponentialDefinition = "λ : Parameter"
MeanDefinition = "μ : Erwartungswert"
DeviationDefinition = "σ : Standardabweichung"
LambdaPoissonDefinition = "λ : Parameter"
ComputeProbability = "Die Wahrscheinlichkeiten berechnen"
ForbiddenValue = "Verbotener Wert"
UndefinedValue = "Undefinierter Wert"

View File

@@ -0,0 +1,24 @@
ProbaApp = "Probability"
ProbaAppCapital = "PROBABILITY"
ChooseLaw = "Choose the distribution"
Binomial = "Binomial"
Uniforme = "Uniform"
Exponential = "Exponential"
Normal = "Normal"
Poisson = "Poisson"
BinomialLaw = "Binomial distribution"
UniformLaw = "Uniform distribution"
ExponentialLaw = "Exponential distribution"
NormalLaw = "Normal distribution"
PoissonLaw = "Poisson distribution"
ChooseParameters = "Choose parameters"
RepetitionNumber = "n: Number of trials"
SuccessProbability = "p: Success probability"
IntervalDefinition = "[a,b]: Interval"
LambdaExponentialDefinition = "λ: Rate parameter"
MeanDefinition = "μ: Mean"
DeviationDefinition = "σ: Standard deviation"
LambdaPoissonDefinition = "λ: Parameter"
ComputeProbability = "Calculate probabilities"
ForbiddenValue = "Forbidden value"
UndefinedValue = "Undefined value"

View File

@@ -0,0 +1,24 @@
ProbaApp = "Probabilidad"
ProbaAppCapital = "PROBABILIDAD"
ChooseLaw = "Seleccionar la distribucion"
Binomial = "Binomial"
Uniforme = "Uniforme"
Exponential = "Exponencial"
Normal = "Normal"
Poisson = "Poisson"
BinomialLaw = "Distribucion binomial"
UniformLaw = "Distribucion uniforme"
ExponentialLaw = "Distribucion exponencial"
NormalLaw = "Distribucion normal"
PoissonLaw = "Distribucion de Poisson"
ChooseParameters = "Seleccionar parametros"
RepetitionNumber = "n : Numero de ensayos "
SuccessProbability = "p : Probabilidad de exito "
IntervalDefinition = "[a,b] : Intervalo"
LambdaExponentialDefinition = "λ : Parametro"
MeanDefinition = "μ : Media"
DeviationDefinition = "σ : Desviacion tipica"
LambdaPoissonDefinition = "λ : Parametro"
ComputeProbability = "Calcular las probabilidades"
ForbiddenValue = "Valor prohibido"
UndefinedValue = "Valor indefinido"

View File

@@ -0,0 +1,24 @@
ProbaApp = "Probabilites"
ProbaAppCapital = "PROBABILITES"
ChooseLaw = "Choisir le type de loi"
Binomial = "Binomiale"
Uniforme = "Uniforme"
Exponential = "Exponentielle"
Normal = "Normale"
Poisson = "Poisson"
BinomialLaw = "Loi binomiale"
UniformLaw = "Loi uniforme"
ExponentialLaw = "Loi exponentielle"
NormalLaw = "Loi normale"
PoissonLaw = "Loi de Poisson"
ChooseParameters = "Choisir les parametres"
RepetitionNumber = "n : Nombre de repetitions"
SuccessProbability = "p : Probabilite de succes"
IntervalDefinition = "[a,b] : Intervalle"
LambdaExponentialDefinition = "λ : Parametre"
MeanDefinition = "μ : Moyenne"
DeviationDefinition = "σ : Ecart type"
LambdaPoissonDefinition = "λ : Parametre"
ComputeProbability = "Calculer les probabilites"
ForbiddenValue = "Valeur interdite"
UndefinedValue = "Valeur non definie"

View File

@@ -0,0 +1,24 @@
ProbaApp = "Probabilidade"
ProbaAppCapital = "PROBABILIDADE"
ChooseLaw = "Selecionar a distribuicao"
Binomial = "Binomial"
Uniforme = "Uniforme"
Exponential = "Exponencial"
Normal = "Normal"
Poisson = "Poisson"
BinomialLaw = "Distribuicao binomial"
UniformLaw = "Distribuicao uniforme"
ExponentialLaw = "Distribuicao exponencial"
NormalLaw = "Distribuicao normal"
PoissonLaw = "Distribuicao de Poisson"
ChooseParameters = "Selecionar os parametros"
RepetitionNumber = "n : Numero de ensaios"
SuccessProbability = "p : Probabilidade de sucesso"
IntervalDefinition = "[a,b] : Intervalo"
LambdaExponentialDefinition = "λ : Parametro"
MeanDefinition = "μ : Media"
DeviationDefinition = "σ : Desvio padrao"
LambdaPoissonDefinition = "λ : Parametro"
ComputeProbability = "Calcular probabilidades"
ForbiddenValue = "Valor proibida"
UndefinedValue = "Valor indefinido"

View File

@@ -15,4 +15,12 @@ app_objs += $(addprefix apps/regression/,\
store_controller.o\
)
i18n_files += $(addprefix apps/regression/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/regression/regression_icon.png

View File

@@ -0,0 +1,12 @@
RegressionApp = "Regression"
RegressionAppCapital = "REGRESSION"
Regression = "Regression"
NoEnoughDataForRegression = "Nicht genug Daten fur eine Regression"
Reg = "reg"
MeanDot = "mittel"
RegressionSlope = "Regressionsgerade"
XPrediction = "Berechne Y"
YPrediction = "Berechne X"
ValueNotReachedByRegression = "Wert wird nicht von der Regression erreicht"
NumberOfDots = "Punktanzahl"
Covariance = "Kovarianz"

View File

@@ -0,0 +1,12 @@
RegressionApp = "Regression"
RegressionAppCapital = "REGRESSION"
Regression = "Regression"
NoEnoughDataForRegression = "Not enough data for regression"
Reg = "reg"
MeanDot = "mean"
RegressionSlope = "Regression line"
XPrediction = "Prediction given X"
YPrediction = "Prediction given Y"
ValueNotReachedByRegression = "Value not reached by regression"
NumberOfDots = "Number of points"
Covariance = "Covariance"

View File

@@ -0,0 +1,12 @@
RegressionApp = "Regresion"
RegressionAppCapital = "REGRESION"
Regression = "Regresion"
NoEnoughDataForRegression = "Escasez de datos para la regresion"
Reg = "reg"
MeanDot = "media"
RegressionSlope = "Recta de regresion"
XPrediction = "Prediccion dado X"
YPrediction = "Prediccion dado Y"
ValueNotReachedByRegression = "No se alcanza este valor"
NumberOfDots = "Numero de puntos"
Covariance = "Covarianza"

View File

@@ -0,0 +1,12 @@
RegressionApp = "Regressions"
RegressionAppCapital = "REGRESSIONS"
Regression = "Regression"
NoEnoughDataForRegression = "Pas assez de donnees pour une regression"
Reg = "reg"
MeanDot = "moyen"
RegressionSlope = "Droite de regression"
XPrediction = "Prediction sachant X"
YPrediction = "Prediction sachant Y"
ValueNotReachedByRegression = "Valeur non atteinte par la regression"
NumberOfDots = "Nombre de points"
Covariance = "Covariance"

View File

@@ -0,0 +1,12 @@
RegressionApp = "Regressao"
RegressionAppCapital = "REGRESSAO"
Regression = "Regressao"
NoEnoughDataForRegression = "Nao ha dados suficientes para uma regressao"
Reg = "reg"
MeanDot = "media"
RegressionSlope = "Linha de regressao"
XPrediction = "Predicao dado X"
YPrediction = "Predicao dado Y"
ValueNotReachedByRegression = "Valor nao alcancado pela regressao"
NumberOfDots = "Numero de pontos"
Covariance = "Covariancia"

View File

@@ -23,4 +23,12 @@ app_objs += $(addprefix apps/sequence/,\
sequence_title_cell.o\
)
i18n_files += $(addprefix apps/sequence/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/sequence/sequence_icon.png

View File

@@ -0,0 +1,21 @@
SequenceApp = "Folge"
SequenceAppCapital = "FOLGE"
SequenceTab = "Folgen"
AddSequence = "Folge hinzuzufugen"
ChooseSequenceType = "Das Bildungsgesetz der Folge auswahlen"
SequenceType = "Bildungsgesetz der Folge"
Explicite = "Explizit"
SingleRecurrence = "Rekursiv, Ordnung 1"
DoubleRecurrence = "Rekursiv, Ordnung 2"
SequenceOptions = "Optionen Folge"
SequenceColor = "Farbe der Folge"
DeleteSequence = "Folge loschen"
NoSequence = "Keine Folge"
NoActivatedSequence = "Keine aktive Folge"
NStart = "Startwert"
NEnd = "Endwert"
TermSum = "Summe der Glieder"
SelectFirstTerm = "Erster Glied "
SelectLastTerm = "Letztes Glied "
ValueNotReachedBySequence = "Der Wert wird nicht von der Folge erreicht"
NColumn = "n Spalte"

View File

@@ -0,0 +1,21 @@
SequenceApp = "Sequences"
SequenceAppCapital = "SEQUENCES"
SequenceTab = "Sequences"
AddSequence = "Add sequence"
ChooseSequenceType = "Choose sequence type"
SequenceType = "Sequence type"
Explicite = "Explicit expression"
SingleRecurrence = "Recursive first order"
DoubleRecurrence = "Recursive second order"
SequenceOptions = "Sequence options"
SequenceColor = "Sequence color"
DeleteSequence = "Delete sequence"
NoSequence = "No sequence"
NoActivatedSequence = "No sequence is turned on"
NStart = "N start"
NEnd = "N end"
TermSum = "Sum of terms"
SelectFirstTerm = "Select First Term "
SelectLastTerm = "Select last term "
ValueNotReachedBySequence = "Value not reached by sequence"
NColumn = "n column"

View File

@@ -0,0 +1,21 @@
SequenceApp = "Sucesion"
SequenceAppCapital = "SUCESION"
SequenceTab = "Sucesiones"
AddSequence = "Agregar una sucesion"
ChooseSequenceType = "Seleccionar el tipo de sucesion"
SequenceType = "Tipo de sucesion"
Explicite = "Formula explicita"
SingleRecurrence = "Recurrencia de orden uno"
DoubleRecurrence = "Recurrencia de orden dos"
SequenceOptions = "Opciones de la sucesion"
SequenceColor = "Color de la sucesion"
DeleteSequence = "Eliminar la sucesion"
NoSequence = "Ninguna sucesion"
NoActivatedSequence = "Ninguna sucesion activada"
NStart = "N inicio"
NEnd = "N fin"
TermSum = "Suma de terminos"
SelectFirstTerm = "Seleccionar el premer termino "
SelectLastTerm = "Seleccionar el ultimo termino "
ValueNotReachedBySequence = "No se alcanza este valor"
NColumn = "Columna n"

View File

@@ -0,0 +1,21 @@
SequenceApp = "Suites"
SequenceAppCapital = "SUITES"
SequenceTab = "Suites"
AddSequence = "Ajouter une suite"
ChooseSequenceType = "Choisir le type de suite"
SequenceType = "Type de suite"
Explicite = "Explicite"
SingleRecurrence = "Recurrente d'ordre 1"
DoubleRecurrence = "Recurrente d'ordre 2"
SequenceOptions = "Options de la suite"
SequenceColor = "Couleur de la suite"
DeleteSequence = "Supprimer la suite"
NoSequence = "Aucune suite"
NoActivatedSequence = "Aucune suite activee"
NStart = "N debut"
NEnd = "N fin"
TermSum = "Somme des termes"
SelectFirstTerm = "Selectionner le premier terme "
SelectLastTerm = "Selectionner le dernier terme "
ValueNotReachedBySequence = "Valeur non atteinte par la suite"
NColumn = "Colonne n"

View File

@@ -0,0 +1,21 @@
SequenceApp = "Sequencia"
SequenceAppCapital = "SEQUENCIA"
SequenceTab = "Sequencias"
AddSequence = "Adicionar uma sequencia"
ChooseSequenceType = "Escolha o tipo de sequencia"
SequenceType = "Tipo de sequencia"
Explicite = "Explicita"
SingleRecurrence = "Recorrencia de Primeira Ordem"
DoubleRecurrence = "Recorrencia de Segunda Ordem"
SequenceOptions = "Opcoes de sequencia"
SequenceColor = "Cor da sequencia"
DeleteSequence = "Eliminar a sequencia"
NoSequence = "Sem sequencia"
NoActivatedSequence = "Sem sequencia ativada"
NStart = "N inicio"
NEnd = "N fim"
TermSum = "Soma dos termos"
SelectFirstTerm = "Selecionar primeiro termo "
SelectLastTerm = "Selecionar ultimo termo "
ValueNotReachedBySequence = "O valor nao e alcancado pela sequencia"
NColumn = "Coluna n"

View File

@@ -9,4 +9,12 @@ app_objs += $(addprefix apps/settings/,\
sub_controller.o\
)
i18n_files += $(addprefix apps/settings/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/settings/settings_icon.png

View File

@@ -0,0 +1,30 @@
SettingsApp = "Einstellungen"
SettingsAppCapital = "EINSTELLUNGEN"
AngleUnit = "Winkeleinheit"
DisplayMode = "Zahlenformat"
ComplexFormat = "Komplex"
Language = "Sprache"
ExamMode = "Testmodus"
ActivateExamMode = "Start Testmodus"
ExamModeActive = "Testmodus : aktiv"
ActiveExamModeMessage1 = "Alle Ihre Daten werden "
ActiveExamModeMessage2 = "geloscht, wenn Sie den "
ActiveExamModeMessage3 = "Testmodus einschalten."
ExitExamMode1 = "Wollen Sie den Testmodus "
ExitExamMode2 = "verlassen?"
About = "Uber"
Degres = "Grad "
Radian = "Bogenmass "
Auto = "Auto "
Scientific = "Wissenschaftlich "
Deg = "gra"
Rad = "rad"
Sci = "sci/"
Brightness = "Helligkeit"
SoftwareVersion = "Softwareversion"
SerialNumber = "Seriennummer"
UpdatePopUp = "Erinnerung: Update"
HardwareTestLaunch1 = "Sie werden den Hardwaretest"
HardwareTestLaunch2 = "starten. Um den zu verlassen, mussen"
HardwareTestLaunch3 = "Sie einen Reset durchfuhren, der"
HardwareTestLaunch4 = "Ihre Daten loschen werden."

View File

@@ -0,0 +1,30 @@
SettingsApp = "Settings"
SettingsAppCapital = "SETTINGS"
AngleUnit = "Angle measure"
DisplayMode = "Result format"
ComplexFormat = "Complex format"
Language = "Language"
ExamMode = "Exam mode"
ActivateExamMode = "Activate exam mode"
ExamModeActive = "Exam mode: active"
ActiveExamModeMessage1 = "All your data will be "
ActiveExamModeMessage2 = "deleted when you activate "
ActiveExamModeMessage3 = "the exam mode."
ExitExamMode1 = "Exit the exam "
ExitExamMode2 = "mode?"
About = "About"
Degres = "Degrees "
Radian = "Radians "
Auto = "Auto "
Scientific = "Scientific "
Deg = "deg"
Rad = "rad"
Sci = "sci/"
Brightness = "Brightness"
SoftwareVersion = "Software version"
SerialNumber = "Serial number"
UpdatePopUp = "Update pop-up"
HardwareTestLaunch1 = "You are starting the hardware"
HardwareTestLaunch2 = " test. At the end of the test, you"
HardwareTestLaunch3 = "will have to reset the device and"
HardwareTestLaunch4 = "all your data will be deleted."

View File

@@ -0,0 +1,30 @@
SettingsApp = "Configuracion"
SettingsAppCapital = "CONFIGURACION"
AngleUnit = "Medida del angulo"
DisplayMode = "Formato resultado"
ComplexFormat = "Formato complejo"
Language = "Idioma"
ExamMode = "Modo examen"
ActivateExamMode = "Activar el modo examen"
ExamModeActive = "Modo examen: activo"
ActiveExamModeMessage1 = "Todos sus datos se "
ActiveExamModeMessage2 = "eliminaran al activar "
ActiveExamModeMessage3 = "el modo examen."
ExitExamMode1 = "Salir del modo "
ExitExamMode2 = "examen ?"
About = "Acerca"
Degres = "Grados "
Radian = "Radianes "
Auto = "Auto "
Scientific = "Cientifico "
Deg = "gra"
Rad = "rad"
Sci = "sci/"
Brightness = "Brillo"
SoftwareVersion = "Version de software"
SerialNumber = "Numero serie"
UpdatePopUp = "Pop-up de actualizacion"
HardwareTestLaunch1 = "Esta iniciando la prueba de"
HardwareTestLaunch2 = "fabrica. Para quitar la prueba,"
HardwareTestLaunch3 = "debera resetear su equipo."
HardwareTestLaunch4 = ""

View File

@@ -0,0 +1,30 @@
SettingsApp = "Parametres"
SettingsAppCapital = "PARAMETRES"
AngleUnit = "Unite d'angle"
DisplayMode = "Format resultat"
ComplexFormat = "Forme complexe"
Language = "Langue"
ExamMode = "Mode examen"
ActivateExamMode = "Activer le mode examen"
ExamModeActive = "Mode examen: actif"
ActiveExamModeMessage1 = "Toutes vos donnees seront "
ActiveExamModeMessage2 = "supprimees si vous activez "
ActiveExamModeMessage3 = "le mode examen."
ExitExamMode1 = "Voulez-vous sortir "
ExitExamMode2 = "du mode examen ?"
About = "A propos"
Degres = "Degres "
Radian = "Radians "
Auto = "Auto "
Scientific = "Scientifique "
Deg = "deg"
Rad = "rad"
Sci = "sci/"
Brightness = "Luminosite"
SoftwareVersion = "Version du logiciel"
SerialNumber = "Numero serie"
UpdatePopUp = "Rappel mise a jour"
HardwareTestLaunch1 = "Vous allez lancer le test usine."
HardwareTestLaunch2 = "Pour en sortir vous devrez"
HardwareTestLaunch3 = "effectuer un reset qui supprimera"
HardwareTestLaunch4 = "vos donnees."

View File

@@ -0,0 +1,30 @@
SettingsApp = "Configuracao"
SettingsAppCapital = "CONFIGURACAO"
AngleUnit = "Valor do angulo"
DisplayMode = "Formato numerico"
ComplexFormat = "Complexos"
Language = "Idioma"
ExamMode = "Modo de Exame"
ActivateExamMode = "Inicio modo de exame"
ExamModeActive = "Modo de exame : ativo"
ActiveExamModeMessage1 = "Todos os seus dados serao "
ActiveExamModeMessage2 = "apagados se voce ligar "
ActiveExamModeMessage3 = "o modo de exame."
ExitExamMode1 = "Voce quer sair do modo de "
ExitExamMode2 = "exame ?"
About = "Acerca"
Degres = "Graus "
Radian = "Radianos "
Auto = "Auto "
Scientific = "Cientifico "
Deg = "gra"
Rad = "rad"
Sci = "sci/"
Brightness = "Brilho"
SoftwareVersion = "Versao do software"
SerialNumber = "Numero serie"
UpdatePopUp = "Alertas de atualizacao"
HardwareTestLaunch1 = "Voce vai executar o teste da planta."
HardwareTestLaunch2 = "Para sair voce tem que executar"
HardwareTestLaunch3 = "uma redefinicao, que ira apagar"
HardwareTestLaunch4 = "seus dados."

View File

@@ -196,10 +196,8 @@ void MainController::willDisplayCellForIndex(HighlightCell * cell, int index) {
return;
}
if (index == 4) {
I18n::Message languages[I18n::NumberOfLanguages] = {I18n::Message::English, I18n::Message::French, I18n::Message::Spanish, I18n::Message::German, I18n::Message::Portuguese};
int index = (int)GlobalPreferences::sharedGlobalPreferences()->language()-1;
MessageTableCellWithChevronAndMessage * myTextCell = static_cast<MessageTableCellWithChevronAndMessage *>(cell);
myTextCell->setSubtitle(languages[index]);
static_cast<MessageTableCellWithChevronAndMessage *>(cell)->setSubtitle(I18n::LanguageNames[index]);
return;
}
#if OS_WITH_SOFTWARE_UPDATE_PROMPT

7
apps/shared.de.i18n Normal file
View File

@@ -0,0 +1,7 @@
Warning = "Achtung"
Ok = "Bestatigen"
Cancel = "Abbrechen"
Next = "Nachste"
SyntaxError = "Syntaxfehler"
MathError = "Mathematischen Fehler"
LowBattery = "Batterie leer"

7
apps/shared.en.i18n Normal file
View File

@@ -0,0 +1,7 @@
Warning = "Warning"
Ok = "Confirm"
Cancel = "Cancel"
Next = "Next"
SyntaxError = "Syntax error"
MathError = "Math error"
LowBattery = "Low battery"

7
apps/shared.es.i18n Normal file
View File

@@ -0,0 +1,7 @@
Warning = "Cuidado"
Ok = "Confirmar"
Cancel = "Cancelar"
Next = "Siguiente"
SyntaxError = "Error sintactico"
MathError = "Error matematico"
LowBattery = "Bateria baja"

7
apps/shared.fr.i18n Normal file
View File

@@ -0,0 +1,7 @@
Warning = "Attention"
Ok = "Valider"
Cancel = "Annuler"
Next = "Suivant"
SyntaxError = "Attention a la syntaxe"
MathError = "Erreur mathematique"
LowBattery = "Batterie faible"

7
apps/shared.pt.i18n Normal file
View File

@@ -0,0 +1,7 @@
Warning = "Atencao"
Ok = "Confirmar"
Cancel = "Cancelar"
Next = "Seguinte"
SyntaxError = "Erro de sintaxe"
MathError = "Erro matematico"
LowBattery = "Bateria fraca"

108
apps/shared.universal.i18n Normal file
View File

@@ -0,0 +1,108 @@
Default = ""
CodeApp = "Python"
CodeAppCapital = "PYTHON (BETA)"
Alpha = "alpha"
CapitalAlpha = "ALPHA"
Shift = "shift"
X = "x"
Y = "y"
N = "n"
P = "p"
Mu = "μ"
Sigma = "σ"
Lambda = "λ"
A = "a"
B = "b"
R = "r"
Sxy = "Σxy"
XMin = "Xmin"
XMax = "Xmax"
YMin = "Ymin"
YMax = "Ymax"
YAuto = "Y auto"
RightIntegralFirstLegend = "P("
RightIntegralSecondLegend = "≤X) = "
LeftIntegralFirstLegend = "P(X≤"
LeftIntegralSecondLegend = ") = "
FiniteIntegralLegend = "≤X≤"
DiscreteLegend = "P(X = "
RegressionFormula = " D: y=ax+b "
FccId = "FCC ID"
AbsCommand = "abs()"
RootCommand = "root(,)"
LogCommand = "log(,)"
DiffCommand = "diff(,)"
IntCommand = "int(,,)"
SumCommand = "sum(,,)"
ProductCommand = "product(,,)"
ArgCommand = "arg()"
ReCommand = "re()"
ImCommand = "im()"
ConjCommand = "conj()"
BinomialCommand = "binomial(,)"
PermuteCommand = "permute(,)"
GcdCommand = "gcd(,)"
LcmCommand = "lcm(,)"
RemCommand = "rem(,)"
QuoCommand = "quo(,)"
InverseCommand = "inverse()"
DeterminantCommand = "det()"
TransposeCommand = "transpose()"
TraceCommand = "trace()"
DimensionCommand = "dim()"
SortCommand = "sort<()"
InvSortCommand = "sort>()"
MaxCommand = "max()"
MinCommand = "min()"
FloorCommand = "floor()"
FracCommand = "frac()"
CeilCommand = "ceil()"
RoundCommand = "round(,)"
CoshCommand = "cosh()"
SinhCommand = "sinh()"
TanhCommand = "tanh()"
AcoshCommand = "acosh()"
AsinhCommand = "asinh()"
AtanhCommand = "atanh()"
Prediction95Command = "prediction95(,)"
PredictionCommand = "prediction(,)"
ConfidenceCommand = "confidence(,)"
AbsCommandWithArg = "abs(x)"
RootCommandWithArg = "root(x,n)"
LogCommandWithArg = "log(a,x)"
DiffCommandWithArg = "diff(f(x),a)"
IntCommandWithArg = "int(f(x),a,b)"
SumCommandWithArg = "sum(f(n),nmin,nmax)"
ProductCommandWithArg = "product(f(n),nmin,nmax)"
ArgCommandWithArg = "arg(z)"
ReCommandWithArg = "re(z)"
ImCommandWithArg = "im(z)"
ConjCommandWithArg = "conj(z)"
BinomialCommandWithArg = "binomial(n,k)"
PermuteCommandWithArg = "permute(n,r)"
GcdCommandWithArg = "gcd(p,q)"
LcmCommandWithArg = "lcm(p,q)"
RemCommandWithArg = "rem(p,q)"
QuoCommandWithArg = "quo(p,q)"
InverseCommandWithArg = "inverse(M)"
DeterminantCommandWithArg = "det(M)"
TransposeCommandWithArg = "transpose(M)"
TraceCommandWithArg = "trace(M)"
DimensionCommandWithArg = "dim(M)"
SortCommandWithArg = "sort<(L)"
InvSortCommandWithArg = "sort>(L)"
MaxCommandWithArg = "max(L)"
MinCommandWithArg = "min(L)"
FloorCommandWithArg = "floor(x)"
FracCommandWithArg = "frac(x)"
CeilCommandWithArg = "ceil(x)"
RoundCommandWithArg = "round(x,n)"
CoshCommandWithArg = "cosh(x)"
SinhCommandWithArg = "sinh(x)"
TanhCommandWithArg = "tanh(x)"
AcoshCommandWithArg = "acosh(x)"
AsinhCommandWithArg = "asinh(x)"
AtanhCommandWithArg = "atanh(x)"
Prediction95CommandWithArg = "prediction95(p,n)"
PredictionCommandWithArg = "prediction(p,n)"
ConfidenceCommandWithArg = "confidence(f,n)"

View File

@@ -1,6 +1,7 @@
#include "language_controller.h"
#include "../global_preferences.h"
#include "../apps_container.h"
#include "../i18n.h"
namespace Shared {
@@ -60,9 +61,7 @@ int LanguageController::reusableCellCount() {
}
void LanguageController::willDisplayCellForIndex(HighlightCell * cell, int index) {
MessageTableCell * myCell = (MessageTableCell *) cell;
I18n::Message languages[I18n::NumberOfLanguages] = {I18n::Message::English, I18n::Message::French, I18n::Message::Spanish, I18n::Message::German, I18n::Message::Portuguese};
myCell->setMessage(languages[index]);
static_cast<MessageTableCell *>(cell)->setMessage(I18n::LanguageNames[index]);
}
}

View File

@@ -16,4 +16,12 @@ app_objs += $(addprefix apps/statistics/,\
store_controller.o\
)
i18n_files += $(addprefix apps/statistics/,\
base.de.i18n\
base.en.i18n\
base.es.i18n\
base.fr.i18n\
base.pt.i18n\
)
app_images += apps/statistics/stat_icon.png

View File

@@ -0,0 +1,30 @@
StatsApp = "Statistiken"
StatsAppCapital = "STATISTIKEN"
DataTab = "Daten"
HistogramTab = "Histogramm"
BoxTab = "Boxplot"
StatTab = "Stats"
Values = "Werte"
Sizes = "Haufigkeiten"
ColumnOptions = "Optionen Spalte"
ImportList = "Laden eine Liste"
NoDataToPlot = "Keine Daten zu zeichnen"
Interval = " Intervall"
Size = " Haufigkeit"
Frequency = "Relative"
HistogramSet = "Einstellung des Histogramms"
RectangleWidth = "Breite der Rechtecken"
BarStart = "Beginn der Serie"
FirstQuartile = "Unteres Quartil"
Median = "Median"
ThirdQuartile = "Oberes Quartil"
NoValueToCompute = "Keine Grosse zu berechnen"
TotalSize = "Anzahl der Elemente"
Range = "Spannweite"
Mean = "Mittelwert"
StandardDeviation = "Standardabweichung"
StandardDeviationSigma = "Standardabweichung σ"
SampleStandardDeviationS = "Standardabweichung s"
Deviation = "Varianz"
InterquartileRange = "Interquartilsabstand"
SquareSum = "Quadratsumme"

View File

@@ -0,0 +1,30 @@
StatsApp = "Statistics"
StatsAppCapital = "STATISTICS"
DataTab = "Data"
HistogramTab = "Histogram"
BoxTab = "Box"
StatTab = "Stats"
Values = "Values"
Sizes = "Sizes"
ColumnOptions = "Column options"
ImportList = "Import from a list"
NoDataToPlot = "No data to draw"
Interval = " Interval "
Size = " Size"
Frequency = "Frequency"
HistogramSet = "Histogram settings"
RectangleWidth = "Bin width"
BarStart = "X start"
FirstQuartile = "First quartile"
Median = "Median"
ThirdQuartile = "Third quartile"
NoValueToCompute = "No values to calculate"
TotalSize = "Total size"
Range = "Range"
Mean = "Mean"
StandardDeviation = "Standard deviation"
StandardDeviationSigma = "Standard deviation σ"
SampleStandardDeviationS = "Sample std deviation s"
Deviation = "Variance"
InterquartileRange = "Interquartile range"
SquareSum = "Sum of squares"

View File

@@ -0,0 +1,30 @@
StatsApp = "Estadistica"
StatsAppCapital = "ESTADISTICA"
DataTab = "Datos"
HistogramTab = "Histograma"
BoxTab = "Caja"
StatTab = "Medidas"
Values = "Valores"
Sizes = "Frecuencias"
ColumnOptions = "Opciones de la columna"
ImportList = "Importar una lista"
NoDataToPlot = "Ningunos datos que dibujar"
Interval = " Intervalo"
Size = " Frecuencia"
Frequency = "Relativa"
HistogramSet = "Parametros del histograma"
RectangleWidth = "Ancho del rectangulo"
BarStart = "Principio de la serie"
FirstQuartile = "Primer cuartil"
Median = "Mediana"
ThirdQuartile = "Tercer cuartil"
NoValueToCompute = "Ninguna medida que calcular"
TotalSize = "Poblacion"
Range = "Rango"
Mean = "Media"
StandardDeviation = "Desviacion tipica"
StandardDeviationSigma = "Desviacion tipica σ"
SampleStandardDeviationS = "Desviacion tipica muestral s"
Deviation = "Varianza"
InterquartileRange = "Rango intercuartilo"
SquareSum = "Suma cuadrados"

View File

@@ -0,0 +1,30 @@
StatsApp = "Statistiques"
StatsAppCapital = "STATISTIQUES"
DataTab = "Donnees"
HistogramTab = "Histogramme"
BoxTab = "Boite"
StatTab = "Stats"
Values = "Valeurs"
Sizes = "Effectifs"
ColumnOptions = "Options de la colonne"
ImportList = "Importer une liste"
NoDataToPlot = "Aucune donnee a tracer"
Interval = " Intervalle "
Size = " Effectif"
Frequency = "Frequence"
HistogramSet = "Reglage de l'histogramme"
RectangleWidth = "Largeur des rectangles"
BarStart = "Debut de la serie"
FirstQuartile = "Premier quartile"
Median = "Mediane"
ThirdQuartile = "Troisieme quartile"
NoValueToCompute = "Aucune grandeur a calculer"
TotalSize = "Effectif total"
Range = "Etendue"
Mean = "Moyenne"
StandardDeviation = "Ecart type"
StandardDeviationSigma = "Ecart type"
SampleStandardDeviationS = "Ecart type echantillon"
Deviation = "Variance"
InterquartileRange = "Ecart interquartile"
SquareSum = "Somme des carres"

View File

@@ -0,0 +1,30 @@
StatsApp = "Estatistica"
StatsAppCapital = "ESTATISTICA"
DataTab = "Dados"
HistogramTab = "Histograma"
BoxTab = "Caixa"
StatTab = "Estat"
Values = "Valores"
Sizes = "Frequencias"
ColumnOptions = "Opcoes de coluna"
ImportList = "Importar de uma lista"
NoDataToPlot = "Nao ha dados para desenhar"
Interval = " Intervalo"
Size = " Frequencia"
Frequency = "Relativa"
HistogramSet = "Configurando o histograma"
RectangleWidth = "Largura dos rectangulos"
BarStart = "Inicio da serie"
FirstQuartile = "Quartil inferior"
Median = "Mediana"
ThirdQuartile = "Quartil superior"
NoValueToCompute = "Nenhuma quantidade para calcular"
TotalSize = "Numero de itens"
Range = "Amplitude"
Mean = "Media"
StandardDeviation = "Desvio padrao"
StandardDeviationSigma = "Desvio padrao σ"
SampleStandardDeviationS = "Desvio padrao amostral s"
Deviation = "Variancia"
InterquartileRange = "Interquartil"
SquareSum = "Soma dos quadrados"

50
apps/toolbox.de.i18n Normal file
View File

@@ -0,0 +1,50 @@
Toolbox = "Toolbox"
AbsoluteValue = "Betragsfunktion"
NthRoot = "n-te Wurzel"
BasedLogarithm = "Logarithmus zur Basis a"
Calculation = "Berechnung"
ComplexNumber = "Komplexen Zahlen"
Probability = "Kombinatorik"
Arithmetic = "Arithmetisch"
Matrices = "Matrizen"
Lists = "Listen"
Approximation = "Approximation"
HyperbolicTrigonometry = "Hyperbelfunktionen"
Fluctuation = "Konfidenzintervall"
DerivateNumber = "Ableitung"
Integral = "Integral"
Sum = "Summe"
Product = "Produkt"
ComplexAbsoluteValue = "Betrag"
Agument = "Argument"
ReelPart = "Realer Teil"
ImaginaryPart = "Imaginarer Teil"
Conjugate = "Konjugiert"
Combination = "Kombination"
Permutation = "Permutation"
GreatCommonDivisor = "ggT"
LeastCommonMultiple = "kgV"
Remainder = "Rest"
Quotient = "Ganzzahlquotient"
Inverse = "Inverse"
Determinant = "Determinante"
Transpose = "Transponierte"
Trace = "Spur"
Dimension = "Grosse"
Sort = "Sortieren aufsteigend"
InvSort = "Sortieren absteigend"
Maximum = "Maximalwert"
Minimum = "Mindestwert"
Floor = "Untergrenze"
FracPart = "Bruchanteil"
Ceiling = "Obergrenze"
Rounding = "Runden"
HyperbolicCosine = "Kosinus hyperbolicus"
HyperbolicSine = "Sinus hyperbolicus"
HyperbolicTangent = "Tangens hyperbolicus"
InverseHyperbolicCosine = "Areakosinus hyperbolicus"
InverseHyperbolicSine = "Areasinus hyperbolicus"
InverseHyperbolicTangent = "Areatangens hyperbolicus"
Prediction95 = "Schwankungsbereich 95%"
Prediction = "Einfaches Schwankungsbereich"
Confidence = "Konfidenzintervall"

50
apps/toolbox.en.i18n Normal file
View File

@@ -0,0 +1,50 @@
Toolbox = "Toolbox"
AbsoluteValue = "Absolute value"
NthRoot = "nth-root"
BasedLogarithm = "Logarithm to base a"
Calculation = "Calculation"
ComplexNumber = "Complex numbers"
Probability = "Combinatorics"
Arithmetic = "Arithmetic"
Matrices = "Matrix"
Lists = "List"
Approximation = "Approximation"
HyperbolicTrigonometry = "Hyperbolic trigonometry"
Fluctuation = "Prediction Interval"
DerivateNumber = "Derivative"
Integral = "Integral"
Sum = "Sum"
Product = "Product"
ComplexAbsoluteValue = "Absolute value"
Agument = "Argument"
ReelPart = "Real part"
ImaginaryPart = "Imaginary part"
Conjugate = "Conjugate"
Combination = "Combination"
Permutation = "Permutation"
GreatCommonDivisor = "GCD"
LeastCommonMultiple = "LCM"
Remainder = "Remainder division p by q"
Quotient = "Quotient division p by q"
Inverse = "Inverse"
Determinant = "Determinant"
Transpose = "Transpose"
Trace = "Trace"
Dimension = "Size"
Sort = "Sort ascending "
InvSort = "Sort descending"
Maximum = "Maximum"
Minimum = "Minimum"
Floor = "Floor"
FracPart = "Fractional part"
Ceiling = "Ceiling"
Rounding = "Rounding to n digits"
HyperbolicCosine = "Hyperbolic cosine"
HyperbolicSine = "Hyperbolic sine"
HyperbolicTangent = "Hyperbolic tangent"
InverseHyperbolicCosine = "Inverse hyperbolic cosine"
InverseHyperbolicSine = "Inverse hyperbolic sine"
InverseHyperbolicTangent = "Inverse hyperbolic tangent"
Prediction95 = "Prediction interval 95%"
Prediction = "Simple prediction interval"
Confidence = "Confidence interval"

50
apps/toolbox.es.i18n Normal file
View File

@@ -0,0 +1,50 @@
Toolbox = "Toolbox"
AbsoluteValue = "Valor absoluto"
NthRoot = "Raiz enesima"
BasedLogarithm = "Logaritmo en base a"
Calculation = "Calculos"
ComplexNumber = "Numeros complejos"
Probability = "Combinatoria"
Arithmetic = "Aritmetica"
Matrices = "Matriz"
Lists = "Listas"
Approximation = "Aproximacion"
HyperbolicTrigonometry = "Trigonometria hiperbolica"
Fluctuation = "Interval de prediccion"
DerivateNumber = "Derivada"
Integral = "Integral"
Sum = "Suma"
Product = "Productorio"
ComplexAbsoluteValue = "Modulo"
Agument = "Argumento"
ReelPart = "Parte real"
ImaginaryPart = "Parte imaginaria"
Conjugate = "Conjugado"
Combination = "Combinacion"
Permutation = "Variacion"
GreatCommonDivisor = "MCD"
LeastCommonMultiple = "MCM"
Remainder = "Resto division p por q"
Quotient = "Cociente division p por q"
Inverse = "Inversa"
Determinant = "Determinante"
Transpose = "Transpuesta"
Trace = "Traza"
Dimension = "Tamano"
Sort = "Clasificacion ascendente"
InvSort = "Clasificacion descendente"
Maximum = "Maximo"
Minimum = "Minimo"
Floor = "Parte entera"
FracPart = "Parte fraccionaria"
Ceiling = "Techo"
Rounding = "Redondeo n digitos"
HyperbolicCosine = "Coseno hiperbolico"
HyperbolicSine = "Seno hiperbolico"
HyperbolicTangent = "Tangente hiperbolica"
InverseHyperbolicCosine = "Argumento coseno hiperbolico"
InverseHyperbolicSine = "Argumento seno hiperbolico"
InverseHyperbolicTangent = "Argumento tangente hiperbolica"
Prediction95 = "Intervalo de prediccion 95%"
Prediction = "Intervalo de prediccion simple"
Confidence = "Intervalo de confianza"

50
apps/toolbox.fr.i18n Normal file
View File

@@ -0,0 +1,50 @@
Toolbox = "Toolbox"
AbsoluteValue = "Valeur absolue"
NthRoot = "Racine n-ieme"
BasedLogarithm = "Logarithme base a"
Calculation = "Calculs"
ComplexNumber = "Nombres complexes"
Probability = "Denombrement"
Arithmetic = "Arithmetique"
Matrices = "Matrices"
Lists = "Listes"
Approximation = "Approximation"
HyperbolicTrigonometry = "Trigonometrie hyperbolique"
Fluctuation = "Intervalle fluctuation"
DerivateNumber = "Nombre derive"
Integral = "Integrale"
Sum = "Somme"
Product = "Produit"
ComplexAbsoluteValue = "Module"
Agument = "Argument"
ReelPart = "Partie reelle"
ImaginaryPart = "Partie imaginaire"
Conjugate = "Conjugue"
Combination = "k parmi n"
Permutation = "Arrangement"
GreatCommonDivisor = "PGCD"
LeastCommonMultiple = "PPCM"
Remainder = "Reste division p par q"
Quotient = "Quotient division p par q"
Inverse = "Inverse"
Determinant = "Determinant"
Transpose = "Transposee"
Trace = "Trace "
Dimension = "Taille"
Sort = "Tri croissant"
InvSort = "Tri decroissant"
Maximum = "Maximum"
Minimum = "Minimum"
Floor = "Partie entiere"
FracPart = "Partie fractionnaire"
Ceiling = "Plafond"
Rounding = "Arrondi n chiffres"
HyperbolicCosine = "Cosinus hyperbolique"
HyperbolicSine = "Sinus hyperbolique"
HyperbolicTangent = "Tangente hyperbolique"
InverseHyperbolicCosine = "Argument cosinus hyperbolique"
InverseHyperbolicSine = "Argument sinus hyperbolique"
InverseHyperbolicTangent = "Argument tangente hyperbolique"
Prediction95 = "Intervalle fluctuation 95% (Term)"
Prediction = "Intervalle fluctuation simple (2de)"
Confidence = "Intervalle confiance"

50
apps/toolbox.pt.i18n Normal file
View File

@@ -0,0 +1,50 @@
Toolbox = "Toolbox"
AbsoluteValue = "Valor absoluto"
NthRoot = "Radiciacao"
BasedLogarithm = "Logaritmo na base a"
Calculation = "Calculo"
ComplexNumber = "Numeros complexos"
Probability = "Combinatoria"
Arithmetic = "Aritmetica"
Matrices = "Matrizes"
Lists = "Listas"
Approximation = "Aproximacao"
HyperbolicTrigonometry = "Funcoes hiperbolicas"
Fluctuation = "Intervalo de confianca"
DerivateNumber = "Derivada"
Integral = "Integral"
Sum = "Somatorio"
Product = "Produto"
ComplexAbsoluteValue = "Modulo"
Agument = "Argumento"
ReelPart = "Parte real"
ImaginaryPart = "Parte imaginaria"
Conjugate = "Conjugado"
Combination = "Combinacao"
Permutation = "Permutacao"
GreatCommonDivisor = "MDC"
LeastCommonMultiple = "MMC"
Remainder = "Resto da divisao inteira"
Quotient = "Quociente"
Inverse = "Matriz inversa"
Determinant = "Determinante"
Transpose = "Matriz transposta"
Trace = "Traco"
Dimension = "Tamanho"
Sort = "Ordem crescente"
InvSort = "Ordem decrescente"
Maximum = "Maximo"
Minimum = "Minimo"
Floor = "Parte inteira"
FracPart = "Parte fraccionaria"
Ceiling = "Teto"
Rounding = "Arredondar"
HyperbolicCosine = "Cosseno hiperbolico"
HyperbolicSine = "Seno hiperbolico"
HyperbolicTangent = "Tangente hiperbolica"
InverseHyperbolicCosine = "Arco cosseno hiperbolico"
InverseHyperbolicSine = "Arco seno hiperbolico"
InverseHyperbolicTangent = "Arco tangente hiperbolica"
Prediction95 = "Intervalo de previsao 95%"
Prediction = "Intervalo de previsao simples"
Confidence = "Intervalo de confianca"

5
apps/variables.de.i18n Normal file
View File

@@ -0,0 +1,5 @@
Variables = "Variablen"
Number = "Zahlen"
Matrix = "Matrizen"
List = "Listen"
Empty = "Leer"

5
apps/variables.en.i18n Normal file
View File

@@ -0,0 +1,5 @@
Variables = "Variables"
Number = "Numbers"
Matrix = "Matrices"
List = "Lists"
Empty = "Empty"

5
apps/variables.es.i18n Normal file
View File

@@ -0,0 +1,5 @@
Variables = "Variables"
Number = "Numeros"
Matrix = "Matrices"
List = "Listas"
Empty = "Vacio"

5
apps/variables.fr.i18n Normal file
View File

@@ -0,0 +1,5 @@
Variables = "Variables"
Number = "Nombres"
Matrix = "Matrices"
List = "Listes"
Empty = "Vide"

5
apps/variables.pt.i18n Normal file
View File

@@ -0,0 +1,5 @@
Variables = "Variaveis"
Number = "Numeros"
Matrix = "Matrizes"
List = "Listas"
Empty = "Vacuo"