Merge upstream/master: translation wave plus generic device

Upstream moved 56 commits ahead of the last merge. Six files conflicted,
all of them files where upstream's French -> English tr() translation wave
touched lines we had also touched with the cable feature. Resolution rule
applied everywhere: take upstream's English source strings, keep our cable
additions.

Resolved:

- sources/ui/xrefpropertieswidget.ui : kept our structure (m_labels_gb
  pulled out of the display group, m_slave_row, the m_font_pb "Police..."
  button of the cable cross-reference) and mechanically applied upstream's
  20 English string replacements on top of it.

- sources/ui/xrefpropertieswidget.cpp : our version plus upstream's 7
  translated combo entries; the tr("Cable") item we add for the cable
  cross-reference type stays.

- sources/autoNum/ui/numparteditorw.cpp : upstream's English part names
  ("number format 1", "Sheet no.", "Plant", "Location", ...) for the
  number-format list, with our comment explaining why type 3 (cable) takes
  the conductor kinds of variable.

- sources/ui/configpage/configpages.cpp : upstream's English tab titles
  (Conductors / Elements / Sheets) plus our Cables tab.

- sources/ui/configpage/projectconfigpages.cpp : upstream's "Sheets" tab
  title plus our Cables tab block (single-rule SelectAutonumW(3)).

- sources/qetdiagrameditor.cpp : union of both sides - upstream's new
  "Add a generic device" action (icon, status tip, data id) and its
  English menu names ("File"/"Edit"/"Project"/"Display"), together with our
  cable action, the Numbering and Lists menus, the cable list actions and
  the CSV export in the Project menu.

Kept French: our own cable tr() source strings stay French for now. That
is the smaller change and the translation pass can follow separately.

Verified: full build 1065/1065, ctest 91/92 (only the pre-existing
headless tst_menubarkeyboard fails: no window manager, so Alt+F and F10
cannot open a menu bar), smoke start exit 124, no conflict marker left in
the tree.
This commit is contained in:
Kellermorph
2026-10-09 20:44:58 +02:00
437 changed files with 233166 additions and 197854 deletions
+32 -35
View File
@@ -628,21 +628,21 @@ QString QETProject::pathNameTitle() const
if (!project_title_.isEmpty()) {
final_title = QString(
tr(
"Projet « %1 : %2»",
"Project « %1 : %2»",
"displayed title for a ProjectView - %1 is the project title, -%2 is the project path"
)
).arg(project_title_, m_file_path);
} else if (!m_file_path.isEmpty()) {
final_title = QString(
tr(
"Projet %1",
"Project %1",
"displayed title for a title-less project - %1 is the file name"
)
).arg(QFileInfo(m_file_path).completeBaseName());
} else {
final_title = QString(
tr(
"Projet sans titre",
"Untitled project",
"displayed title for a project-less, file-less project"
)
);
@@ -651,7 +651,7 @@ QString QETProject::pathNameTitle() const
if (isReadOnly()) {
final_title = QString(
tr(
"%1 [lecture seule]",
"%1 [read-only]",
"displayed title for a read-only project - %1 is a displayable title"
)
).arg(final_title);
@@ -661,7 +661,7 @@ QString QETProject::pathNameTitle() const
if (m_modified || !m_undo_stack->isClean()) {
final_title = QString(
tr(
"%1 [modifié]",
"%1 [modified]",
"displayed title for a modified project - %1 is a displayable title"
)
).arg(final_title);
@@ -1952,12 +1952,13 @@ ElementsLocation QETProject::importElement(ElementsLocation &location)
QDomElement new_kind = location.xml().firstChildElement("kindInformations");
if (!new_kind.firstChildElement("slaveContactGroups").isNull()) {
QMessageBox::StandardButton answer = QET::QetMessageBox::warning(nullptr,
tr("Système de contacts modifié"),
tr("Le nouvel élément définit des groupes de contacts esclaves.\n"
"Les éléments esclaves existants ne seront pas automatiquement "
"assignés. Vous devrez relier manuellement les esclaves "
"et assigner les groupes de contacts.\n\n"
"Voulez-vous continuer ?"),
tr("Modified contact system"),
tr("The new element defines slave contact groups.\n"
"Existing slave elements will not be automatically assigned. "
"You will need to link the slaves manually and assign the "
"contact groups.\n"
"\n"
"Do you wish to continue?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::Yes);
if (answer == QMessageBox::No) {
@@ -2041,7 +2042,7 @@ QString QETProject::integrateTitleBlockTemplate(const TitleBlockTemplateLocation
if (!m_titleblocks_collection.setTemplateXmlDescription(target_name, src_tbt.getTemplateXmlDescription()))
{
handler -> errorWithATemplate(src_tbt, tr("Une erreur s'est produite durant l'intégration du modèle.", "error message"));
handler -> errorWithATemplate(src_tbt, tr("An error occurred during the template integration.", "error message"));
target_name = QString();
}
return(target_name);
@@ -2195,16 +2196,16 @@ void QETProject::readProjectXml(QDomDocument &xml_project)
{
int ret = QET::QetMessageBox::warning(
nullptr,
tr("Avertissement",
tr("Warning",
"message box title"),
tr("Ce document semble avoir été enregistré avec une version %1"
"\n qui est ultérieure à votre version !"
" \n"
"Vous utilisez actuellement QElectroTech en version %2")
tr("This document appears to have been saved with version %1\n"
" which is later than your version ! \n"
"You are currently using QElectroTech in version %2")
.arg(root_elmt.attribute(QStringLiteral("version")), QetVersion::currentVersion().toString() %
tr(".\n Il est alors possible que l'ouverture de tout ou partie de ce "
"document échoue.\n"
"Que désirez vous faire ?"),
tr(".\n"
" It is then possible that the opening of all or part of this "
"document fails.\n"
"What do you wish to do ?"),
"message box content"),
QMessageBox::Open | QMessageBox::Cancel
);
@@ -2222,14 +2223,14 @@ void QETProject::readProjectXml(QDomDocument &xml_project)
{
auto ret = QET::QetMessageBox::warning(
nullptr,
tr("Avertissement ", "message box title"),
tr("Le projet que vous tentez d'ouvrir est partiellement "
"compatible avec votre version %1 de QElectroTech.\n")
tr("Warning ", "message box title"),
tr("The project you are trying to open is partially "
"compatible with your version %1 of QElectroTech.\n")
.arg(QetVersion::currentVersion().toString()) %
tr("Afin de le rendre totalement compatible veuillez ouvrir ce même projet "
"avec la version 0.8, ou 0.80 de QElectroTech et sauvegarder le projet "
"et l'ouvrir à nouveau avec cette version.\n"
"Que désirez vous faire ?"),
tr("In order to make it fully compatible please open this same project with "
"version 0.8, or 0.80 of QElectroTech and save the project and open it "
"again with this version.\n"
"What do you wish to do ?"),
QMessageBox::Open | QMessageBox::Cancel
);
@@ -2349,10 +2350,8 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
dlgWaiting = DialogWaiting::instance();
dlgWaiting -> setModal(true);
dlgWaiting -> show();
dlgWaiting -> setTitle(tr("<p align=\"center\">"
"<b>Ouverture du projet en cours...</b><br/>"
"Création des folios"
"</p>"));
dlgWaiting -> setTitle(tr("<p align=\"center\"><b>Opening the project "
"...</b><br/>Creation of sheets</p>"));
}
//Search the diagrams in the project
@@ -2403,10 +2402,8 @@ void QETProject::readDiagramsXml(QDomDocument &xml_project)
//and refresh the text of conductor
if(dlgWaiting)
{
dlgWaiting->setTitle( tr("<p align=\"center\">"
"<b>Ouverture du projet en cours...</b><br/>"
"Mise en place des références croisées"
"</p>"));
dlgWaiting->setTitle( tr("<p align=\"center\"><b>Opening the project "
"...</b><br/>Setting up cross references</p>"));
}
}