diff --git a/apps/regression/Makefile b/apps/regression/Makefile index 1046839f6..a4f175879 100644 --- a/apps/regression/Makefile +++ b/apps/regression/Makefile @@ -39,6 +39,7 @@ i18n_files += $(addprefix apps/regression/,\ base.es.i18n\ base.fr.i18n\ base.pt.i18n\ + base.universal.i18n\ ) app_images += apps/regression/regression_icon.png diff --git a/apps/regression/graph_controller.cpp b/apps/regression/graph_controller.cpp index 695d23e72..66ebe8cbc 100644 --- a/apps/regression/graph_controller.cpp +++ b/apps/regression/graph_controller.cpp @@ -82,8 +82,8 @@ void GraphController::reloadBannerView() { return; } - m_bannerView.setMessageAtIndex(I18n::Message::RegressionFormula, 3); - + Model * model = m_store->modelForSeries(selectedSeriesIndex()); + m_bannerView.setMessageAtIndex(model->formulaMessage(), 3); char buffer[k_maxNumberOfCharacters + PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits)]; int numberOfChar = 0; const char * legend = " P("; diff --git a/apps/regression/model/cubic_model.h b/apps/regression/model/cubic_model.h index 9827d0308..7a6ee8b25 100644 --- a/apps/regression/model/cubic_model.h +++ b/apps/regression/model/cubic_model.h @@ -10,6 +10,7 @@ class CubicModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::CubicRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/exponential_model.h b/apps/regression/model/exponential_model.h index 0c7c2b486..9d06547d5 100644 --- a/apps/regression/model/exponential_model.h +++ b/apps/regression/model/exponential_model.h @@ -10,6 +10,7 @@ class ExponentialModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::ExponentialRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/linear_model.h b/apps/regression/model/linear_model.h index b9674cbfa..e9074b0cb 100644 --- a/apps/regression/model/linear_model.h +++ b/apps/regression/model/linear_model.h @@ -10,6 +10,7 @@ class LinearModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::LinearRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; virtual void fit(Store * store, int series, double * modelCoefficients, Poincare::Context * context) override; diff --git a/apps/regression/model/logarithmic_model.h b/apps/regression/model/logarithmic_model.h index 67e9e148b..7dadad93f 100644 --- a/apps/regression/model/logarithmic_model.h +++ b/apps/regression/model/logarithmic_model.h @@ -10,6 +10,7 @@ class LogarithmicModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::LogarithmicRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/logistic_model.h b/apps/regression/model/logistic_model.h index 7eb10b85c..c504da2a6 100644 --- a/apps/regression/model/logistic_model.h +++ b/apps/regression/model/logistic_model.h @@ -10,6 +10,7 @@ class LogisticModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::LogisticRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/model.h b/apps/regression/model/model.h index ae3657254..469e64fc7 100644 --- a/apps/regression/model/model.h +++ b/apps/regression/model/model.h @@ -2,6 +2,7 @@ #define REGRESSION_MODEL_H #include +#include "../../i18n.h" #include #include @@ -26,6 +27,7 @@ public: static constexpr int k_maxNumberOfCoefficients = 5; virtual ~Model() = default; virtual Poincare::ExpressionLayout * layout() = 0; + virtual I18n::Message formulaMessage() const = 0; virtual double evaluate(double * modelCoefficients, double x) const = 0; virtual double levelSet(double * modelCoefficients, double y) const = 0; virtual void fit(Store * store, int series, double * modelCoefficients, Poincare::Context * context); diff --git a/apps/regression/model/power_model.h b/apps/regression/model/power_model.h index df8da8fdf..ae4592825 100644 --- a/apps/regression/model/power_model.h +++ b/apps/regression/model/power_model.h @@ -10,6 +10,7 @@ class PowerModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::PowerRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/quadratic_model.h b/apps/regression/model/quadratic_model.h index 607cb1ab1..edb589cae 100644 --- a/apps/regression/model/quadratic_model.h +++ b/apps/regression/model/quadratic_model.h @@ -10,6 +10,7 @@ class QuadraticModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::QuadraticRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/quartic_model.h b/apps/regression/model/quartic_model.h index bca5f7188..ba41b207a 100644 --- a/apps/regression/model/quartic_model.h +++ b/apps/regression/model/quartic_model.h @@ -10,6 +10,7 @@ class QuarticModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::QuarticRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/regression/model/trigonometric_model.h b/apps/regression/model/trigonometric_model.h index 0cd120b68..fa50a7aac 100644 --- a/apps/regression/model/trigonometric_model.h +++ b/apps/regression/model/trigonometric_model.h @@ -10,6 +10,7 @@ class TrigonometricModel : public Model { public: using Model::Model; Poincare::ExpressionLayout * layout() override; + I18n::Message formulaMessage() const override { return I18n::Message::TrigonometricRegressionFormula; } double evaluate(double * modelCoefficients, double x) const override; double levelSet(double * modelCoefficients, double y) const override; double partialDerivate(double * modelCoefficients, int derivateCoefficientIndex, double x) const override; diff --git a/apps/shared.universal.i18n b/apps/shared.universal.i18n index f15af9174..a6929d263 100644 --- a/apps/shared.universal.i18n +++ b/apps/shared.universal.i18n @@ -51,7 +51,6 @@ QuoCommandWithArg = "quo(p,q)" RandintCommandWithArg = "randint(a,b)" RandomCommandWithArg = "random()" ReCommandWithArg = "re(z)" -RegressionFormula = " D: y=ax+b " RemCommandWithArg = "rem(p,q)" RightIntegralFirstLegend = "P(" RightIntegralSecondLegend = "≤X)="