Merge pull request #112092 from timothyqiu/ts-nums

Move localized number formatting methods to `TranslationServer`
This commit is contained in:
Thaddeus Crews
2025-11-10 17:47:09 -06:00
27 changed files with 348 additions and 394 deletions

View File

@@ -33,6 +33,7 @@
#include "core/input/input.h"
#include "core/math/expression.h"
#include "core/os/keyboard.h"
#include "core/string/translation_server.h"
#include "editor/settings/editor_settings.h"
#include "editor/themes/editor_scale.h"
#include "scene/theme/theme_db.h"
@@ -51,9 +52,7 @@ String EditorSpinSlider::get_tooltip(const Point2 &p_pos) const {
}
String EditorSpinSlider::get_text_value() const {
return TS->format_number(editing_integer
? itos(get_value())
: String::num(get_value(), Math::range_step_decimals(get_step())));
return TranslationServer::get_singleton()->format_number(editing_integer ? itos(get_value()) : String::num(get_value(), Math::range_step_decimals(get_step())), _get_locale());
}
void EditorSpinSlider::gui_input(const Ref<InputEvent> &p_event) {
@@ -582,19 +581,21 @@ String EditorSpinSlider::get_suffix() const {
}
void EditorSpinSlider::_evaluate_input_text() {
const String &lang = _get_locale();
Ref<Expression> expr;
expr.instantiate();
// Convert commas ',' to dots '.' for French/German etc. keyboard layouts.
String text = value_input->get_text().replace_char(',', '.');
text = text.replace_char(';', ',');
text = TS->parse_number(text);
text = TranslationServer::get_singleton()->parse_number(text, lang);
Error err = expr->parse(text);
if (err != OK) {
// If the expression failed try without converting commas to dots - they might have been for parameter separation.
text = value_input->get_text();
text = TS->parse_number(text);
text = TranslationServer::get_singleton()->parse_number(text, lang);
err = expr->parse(text);
if (err != OK) {