A tick box and a value in the same cell was not clear to use. Width and
height now take two rows each: "Width" / "Width fixed" and "Height" /
"Height fixed". Not fixed, the value shows the size the field has now
and cannot be edited; ticking "fixed" makes it editable at once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In a symbol text's properties, "Width (fixed)" and the new "Height
(fixed)" each carry a tick box. Not ticked, the field follows the text
and shows the size it has now, ready to be fixed; ticked, it keeps the
size beside the box.
A fixed height is new: the field keeps it whatever is written, and the
lines that do not fit are cut off, neither drawn nor picked, to shorten
a text where room is short. It is saved as text_height on the text,
only when set, and changed through an undoable property command like
the width. Translations for all languages.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Phrase book: replace the original entries with a glossary of the
agreed Swedish terms (fixes the swapped From/To, French sources and
old terms) and align the appended suggestions with qet_sv.ts.
- About dialog and CREDIT: credit the Swedish translation and note that
parts of it are AI-generated. The new "Swedish translation (partly
AI-generated)" string is added to every .ts file, translated for sv,
fr and en and left unfinished for the others.
- publiccode.yml: add a Swedish description.
Note: the Swedish texts in this commit were generated with an AI
assistant (Claude) and then reviewed by the Swedish translator.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Translate the 1857 unfinished strings (4265 of 4265 now finished) and
correct 302 existing translations: wrong meanings (e.g. "Number of
sheets" as "Bladnamn", Cancel as "Ångra"), broken --help and HTML
output, empty strings marked finished, typos and drafting terms.
Terminology made consistent: symbol (element), beteckning (element
label), förbindning (conductor), ritningshuvud (title block),
huvud/slav (master/slave), anslutning for a symbol's terminal and
plint for a terminal-block terminal.
Note: the new translations and the corrections in this commit were
generated with an AI assistant (Claude) and then reviewed by the
Swedish translator.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new command, "Place symbol texts", for the selected symbols: their
label and the notes beside it go as one block next to the drawing of
the symbol, 3 px away, at one of the nine points of the text alignment
dialog, chosen in a 3 x 3 grid that opens from the toolbar button and
from the Edit menu. A click on the button places them at the point
chosen last (left of the symbol at first).
Left of the symbol the lines are aligned right, so that they hang on it
and a longer text grows away from it (their alignment is set too);
right of it aligned left; above, below and on it centred. The lines
keep their order and their spacing, a group of texts is placed as one
line with the same alignment, a turned symbol is placed in the folio's
directions, and everything is one undo step.
Element::drawingRect() gives the area the drawing covers, tighter than
the bounding rect, which is rounded up to the grid. A toolbar command
with a menu now shows as a button with an arrow beside it.
Translations for all languages.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The menu entry and its status tip in every translation file, added by
hand next to "Display or hide the grid of sheet" so that the files are
not rewritten by lupdate. German: "Fadenkreuz über die ganze Seite".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Translate the 2660 untranslated strings of qet_it.ts, including 91
plural forms (singular and plural), so the file no longer has any
unfinished entry.
- Reuse the terms already used in the file (pagina, elemento,
conduttore, terminale, morsetto/morsettiera, cavo, progetto,
cartiglio, collezione, riferimento incrociato, potenziale,
Installazione (=) / Posizione (+)); new cable terms: anima (core),
schermo (shield).
- Style editor colours translated as descriptive names, like the
existing ones.
- Keep placeholders (%1, %n, %{...}), HTML tags, accelerators and
line breaks.
- The "unfinished" drafts were retranslated from the current source
text.
- PlcLinkWidget: the English source "Log in" is translated as
"Collega" (link), which matches the context.
- Checked with lrelease: 4137 translations, none unfinished.
Machine-assisted translation: a review by a native speaker is welcome.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Translate the 1378 untranslated strings of qet_zh.ts, including 82
plural forms, so the file no longer has any unfinished entry.
- Reuse the terms already used in the file (图页, 元件, 导线, 端子排,
线缆, 工程, 标题栏, 库, 交叉引用, 电势); new cable terms: 芯线
(core), 屏蔽 (shield).
- Keep placeholders (%1, %n), HTML tags, accelerators and line breaks.
- The 134 "unfinished" drafts were retranslated from the current
source text.
- Checked with lrelease: 4137 translations, none unfinished.
Machine-assisted translation: a review by a native speaker is welcome.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Implement ElementTextFormatPattern to capture and reapply dynamic element text formats (font, color, alignment, rotation, frame, positions, groups) across elements.
- When applying a format, missing ElementInfo texts present on the source template are added to the target element with the template's layout and styling, matching other texts in order.
- Register actions under Edit menu, diagram context menu, and ShortcutManager (customizable via Toolbar settings).
- Bind default shortcuts Ctrl+Alt+C (copy text format) and Ctrl+Alt+V (apply text format).
- Provide full undo/redo support via ApplyElementTextFormatCommand.
- Add SVG icons format-copy and format-apply.
- Include English source strings and German/French translations.
lupdate for the strings added by #1472 and this branch; the rest of the
change is moved line numbers. Review of #1472 (scorpio810, point 11).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The strings the zipped project format added (Save a copy for an older
QElectroTech, the notice when a .qet is saved as .qetz beside it, the
.qetz file filters) and the undo text of a symbol's information changed
through the project database. Only French, by hand, in the wording the
file already uses ("Projets QElectroTech (*.qet)", "Modifier les
informations de l'élément", "Fichier"); the other languages are left for
their translators. lrelease: 0 unfinished; lupdate over sources keeps
every entry finished.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The six <location> lines the crop translation added pointed into
the folder the branch was built in. They are relative to lang/ now,
like the others in the file, with the current line numbers. No text
or translation changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The French of the six new texts (the crop mode's name and hints, "Crop on
the folio", "Reset crop", "Properties..."), as lupdate's own entries,
inserted where lupdate places them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The texts added with dropping picture files on a folio (#1416) had no
entry in the translation files yet, so the French interface showed them
in English, and the English one wrote "Add 1 image(s)".
- qet_fr.ts: the French of all nine texts (the eight of #1416 and the
"%1: %2" of the list of refused files), "%1 : %2" with the French
space before the colon.
- qet_en.ts: the singular and plural of "Add %n image(s)".
The entries are lupdate's own, inserted where lupdate places them, so a
later refresh of the .ts files moves nothing; lupdate run over sources/
finds them all as existing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lupdate over sources/ adds the 32 strings merged since the conversion to
English (#1390); with the entries already empty on master, 59 had
no Polish text and 2 only a lupdate guess. All 61 are translated with the
file's terms; "cable" is
"przewód" and its wires "żyły".
Corrections to existing entries:
- "master" (master element) is "główny", not "nadrzędny", in the 11
entries that still used it (properties, cross-references, search and
replace, terminal editor); "nadrzędny" stays where it means a parent
folder or collection.
- the help text for %folio in two widgets still had a French sentence
("Les variables suivantes sont utilisables :") inside the Polish text.
- "Komentaż PLC" typo, now "Komentarz PLC".
- 6 colons with a French space before them ("Marginesy :").
Most of the diff is lupdate moving line numbers. Checked with lrelease
(3847 translations, no warning) and the placeholder check for every
changed entry.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lupdate over sources/ adds the 32 strings merged since the conversion to
English (#1390), among them picture drop, element scaling, paste element
information, the terminal strip cable fields and the settings-loading
dialog. With the 29 entries that were already empty on master, 61
entries had no German text, so the German UI showed
English there. All 61 are translated with the terms the file already
uses (Bauteil, Anschluss, Klemme, Raster, Kabel/Adern, Spiegeln).
As arummler noted in #1381, "Programmable Logic Controller (PLC)" read
"SPS (PLC)"; it is now "Speicherprogrammierbare Steuerung (SPS)" in both
places, and "PLC-Querverweis" becomes "SPS-Querverweis" like every other
PLC string in the file.
Most of the diff is lupdate moving line numbers. Checked with lrelease
(3847 translations, no warning) and the placeholder check for every
changed entry.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 of the 79 plural messages in qet_fr.ts used the old "(s)" marker in
both forms, e.g. "Ce document PDF contient %n page(s)" for one page and
for many. They come from the time French was the source language: the
French source text had "(s)", and when French became a translation in
#1379 and #1390 that text was copied into both forms. Reported by
arummler in #1381.
Each of them now has a singular form (also used for 0, as Qt's French
rule does) and a plural form, with the agreements that follow ("%n
borne de cet élément n'est pas sur la grille" / "%n bornes ... ne sont
pas"). Only <numerusform> lines change; no other message is touched.
Checked with lrelease (3815 finished, no warning); placeholders checked
for every form.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#1379 added misc/i18n/mirror_source_language.py and an INSTALL.md rule
to run it on lang/qet_fr.ts after update_translations, while French was
the source language. Since #1390 the code is English and qet_fr.ts is an
ordinary translation, so following the rule would copy English text into
empty French entries. The repository test still checked qet_fr.ts and
kept passing.
The rule, the script's description and the repository test now name
lang/qet_en.ts. The script refuses a file whose <TS> header names a
language different from its sourcelanguage (qet_fr.ts says fr_FR / en),
exits 2 and leaves it untouched; files without a sourcelanguage, like
the fixtures, are accepted as before. The 6 entries master added since
the conversion are mirrored, so qet_en.ts is complete again.
Tests: 19 in misc/i18n/test_mirror_source_language.py. The repository
test fails on master (6 entries to mirror); with the check_languages()
call removed, the two refusal tests fail and a run on qet_fr.ts goes
through.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated by tools/qet-en-source/regenerate.sh, not edited by hand. The
tree is the fresh conversion; this commit only joins it to the PR's
history so the branch is never force-pushed.
Generated by tools/qet-en-source/regenerate.sh, not edited by hand. The
tree is the fresh conversion; this commit only joins it to the PR's
history so the branch is never force-pushed.
Every tr() source string in the code and the forms is now the English
text, and French is a translation (qet_fr.ts) like the other languages.
Generated, not hand-edited: master ef795a21e5 converted by
qet-en-source (harness 4c4ddc9).
3144 messages get an English source, 665 already had one, 0 left French; 8 shared-wording pairs disambiguated.
C++: 2904 literals in 233 files. Forms: 809 strings in 65 files. All 34 .ts files re-keyed; qet_fr.ts filled.
lupdate check: PASS. What each of 38 languages shows, old vs new: same 118266, English instead of French 38433, comment fallback 51, differences 0.
Nine messages were never passed through tr(), so every user saw them in
French: the undo entries for grouping and ungrouping terminals, for
editing an arc (3), an ellipse, a rectangle and a PLC table in the
element editor, and the error box when integrating a title block
template fails. They are now wrapped, text unchanged.
qet_en.ts also lacked English for 63 messages added since the last
translations update (Customize dialog, mouse gestures, toolbar contents,
mirror, element scale, paste element information, paper format).
update_translations was run on qet_en.ts with lupdate's guessing
heuristics off, then the 72 new entries were translated. Most of the
diff is lupdate refreshing line numbers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit d0657f36db)
Nine messages were never passed through tr(), so every user saw them in
French: the undo entries for grouping and ungrouping terminals, for
editing an arc (3), an ellipse, a rectangle and a PLC table in the
element editor, and the error box when integrating a title block
template fails. They are now wrapped, text unchanged.
qet_en.ts also lacked English for 63 messages added since the last
translations update (Customize dialog, mouse gestures, toolbar contents,
mirror, element scale, paste element information, paper format).
update_translations was run on qet_en.ts with lupdate's guessing
heuristics off, then the 72 new entries were translated. Most of the
diff is lupdate refreshing line numbers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lupdate over sources/ adds the 164 strings merged after the last
translations update (da39ec1c8) and revives 3 entries it had wrongly
marked vanished (the issue #1366 describes for English); the mirror
script then fills the new ones. qet_fr.qm: 3792 finished, 0 unfinished,
0 null records.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The strings in the code are French and serve as both translation key
and displayed text. lang/qet_fr.ts was almost empty: 3425 messages and
22 plural messages had no translation, so lrelease compiled them as
null-string records (3469 in qet_fr.qm) and the French UI showed the
code text through QTranslator's null fallback. Correcting French
wording therefore meant changing the key, which orphans the translation
of that string in all 33 other language files; the "Élement" typo fix
needed a key rename in 34 files for one accent.
This copies every empty French entry's source text into its own
translation, so qet_fr.qm is complete (514 KB, 0 null records, like
the other languages) and French wording can be corrected in the .ts
alone. Translations that already had text (113 French renderings of
English-written sources, 16 identical, 54 plurals) are untouched, as
are the 10 vanished entries. The file is byte-identical outside the
rewritten <translation> elements.
misc/i18n/mirror_source_language.py does the copy and is meant to run
after update_translations; --check exits 1 when a run is needed.
Forgetting it breaks nothing: an empty entry still falls back to the
code text. INSTALL.md section 10 explains the rule and that
-removeidentical must never be added to lrelease. Tests:
misc/i18n/test_mirror_source_language.py with a before/after fixture
pair covering every message class.
No visible change in the application.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>