i18n(fr): complete French translation to 100% + extract 3DPrinterOS dialog (#14037)

i18n(fr): complete French translation and extract 3DPrinterOS dialog

Translation (localization/i18n/fr/OrcaSlicer_fr.po):
- Translate 222 missing strings and revise 23 fuzzy entries (vouvoiement)
- Quality review of the existing catalog: fix 42 entries
  - "supported" calque -> "pris en charge" (physical sense -> "soutenu")
  - accented capitals (Emission -> Émission, Editer -> Modifier)
  - "cryptage" -> "chiffrement"; "initiés" -> "lancés"; "impacté" -> "affecté"
  - "basé sur" rephrased contextually; ASCII "..." -> "…" in FR strings
- Result: 0 untranslated, 0 fuzzy; placeholders preserved; msgfmt clean

Extraction (3DPrinterOS upload dialog, src/slic3r/Utils/3DPrinterOS.cpp):
- Wrap 9 hardcoded user-facing strings in _L()
- Align the radio-label comparison on _L() so the show/hide logic
  keeps working once the label is translated
- Add the file to localization/i18n/list.txt for gettext extraction
- Add the 7 new msgids to OrcaSlicer.pot and translate them in fr.po

Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
foXaCe
2026-06-05 20:11:00 +02:00
committed by GitHub
parent 1ec574bcbb
commit 57535f30ba
4 changed files with 441 additions and 413 deletions

View File

@@ -19712,3 +19712,24 @@ msgstr ""
#: resources/data/hints.ini: [hint:Avoid warping]
msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping?"
msgstr ""
msgid "3DPrinterOS Cloud upload options"
msgstr ""
msgid "Single file"
msgstr ""
msgid "Project File"
msgstr ""
msgid "Project:"
msgstr ""
msgid "Printer type:"
msgstr ""
msgid "Printer type not found, please select manually."
msgstr ""
msgid "Authorizing..."
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -218,6 +218,7 @@ src/slic3r/GUI/CreatePresetsDialog.cpp
src/slic3r/GUI/DailyTips.cpp
src/slic3r/Utils/CalibUtils.cpp
src/slic3r/GUI/PhysicalPrinterDialog.cpp
src/slic3r/Utils/3DPrinterOS.cpp
src/slic3r/Utils/AstroBox.cpp
src/slic3r/Utils/Duet.cpp
src/slic3r/Utils/FlashAir.cpp

View File

@@ -44,7 +44,7 @@ public:
const wxString preset_name)
: Slic3r::GUI::DPIDialog(parent,
wxID_ANY,
"3DPrinterOS Cloud upload options",
_L("3DPrinterOS Cloud upload options"),
wxDefaultPosition,
wxSize(100 * Slic3r::GUI::wxGetApp().em_unit(), -1),
wxDEFAULT_DIALOG_STYLE),
@@ -54,15 +54,15 @@ public:
SetBackgroundColour(*wxWHITE);
SetForegroundColour(*wxBLACK);
singleRadio = new wxRadioButton(this, wxID_ANY, "Single file", wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
projectRadio = new wxRadioButton(this, wxID_ANY, "Project File");
projectsLabel = new wxStaticText(this, wxID_ANY, "Project:");
wxStaticText* printerLabel = new wxStaticText(this, wxID_ANY, "Printer type:");
singleRadio = new wxRadioButton(this, wxID_ANY, _L("Single file"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
projectRadio = new wxRadioButton(this, wxID_ANY, _L("Project File"));
projectsLabel = new wxStaticText(this, wxID_ANY, _L("Project:"));
wxStaticText* printerLabel = new wxStaticText(this, wxID_ANY, _L("Printer type:"));
projectsComboBox = new wxComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, DD_NO_CHECK_ICON);
printerTypeComboBox = new wxComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, DD_NO_CHECK_ICON | wxTE_READONLY);
printerWarningLabel = new wxStaticText(this, wxID_ANY, "Printer type not found, please select manually.");
printerWarningLabel = new wxStaticText(this, wxID_ANY, _L("Printer type not found, please select manually."));
printerWarningLabel->SetForegroundColour(*wxRED);
printerWarningLabel->Hide();
@@ -83,8 +83,8 @@ public:
}
}
okButton = new wxButton(this, wxID_OK, "OK");
wxButton* cancelButton = new wxButton(this, wxID_CANCEL, "Cancel");
okButton = new wxButton(this, wxID_OK, _L("OK"));
wxButton* cancelButton = new wxButton(this, wxID_CANCEL, _L("Cancel"));
wxBoxSizer* radioSizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer* btnSizer = new wxBoxSizer(wxHORIZONTAL);
@@ -120,7 +120,7 @@ public:
wxRadioButton* selectedRadio = dynamic_cast<wxRadioButton*>(event.GetEventObject());
if (selectedRadio) {
wxString label = selectedRadio->GetLabel();
if (label == wxString("Project File")) {
if (label == _L("Project File")) {
projectsComboBox->Show();
projectsLabel->Show();
} else {
@@ -182,8 +182,8 @@ public:
SetForegroundColour(*wxBLACK);
auto* sizer = new wxBoxSizer(wxVERTICAL);
sizer->Add(new wxStaticText(this, wxID_ANY, "Authorizing..."), 1, wxALL | wxCENTER, 10);
auto* cancelBtn = new wxButton(this, wxID_CANCEL, "Cancel");
sizer->Add(new wxStaticText(this, wxID_ANY, _L("Authorizing...")), 1, wxALL | wxCENTER, 10);
auto* cancelBtn = new wxButton(this, wxID_CANCEL, _L("Cancel"));
sizer->Add(cancelBtn, 0, wxALL | wxALIGN_CENTER, 10);
SetSizerAndFit(sizer);