#2829 landed on master and touched 173 of the same keys this branch
rewrites, which is where the conflicts came from.
Resolved by rule rather than by hand: for any key #2829 already fixed
and merged, master's value wins (54 keys); everything else keeps this
branch's version. That keeps the diff against master limited to what is
genuinely new here, and avoids re-editing work that is already upstream.
It also avoids a regression. This branch was cut before #2829, so it
still carried the old double-encoded UTF-8 in nine mailboxes strings
(confirm_warnallf, left_autoreply, left_folders, left_forward,
left_pass, left_sig, mail_fromfilter, mail_selread, mail_subfilter).
Taking master's value for those keeps them fixed. A mojibake scan over
the whole tree after the merge reports 0 remaining lines.
master also added acl/forgot_sudouser, which is translated here, so
lang/tr is still complete at 31,523 of 31,523 keys.
Every module now has a reviewed desc_tr and longdesc_tr in
module.info.tr - 245 strings across 125 modules. Previously 37 were
reviewed, 194 came from module.info.tr.auto and 14 were missing
entirely (grub2, hardware-info, kea-dhcp, logviewer, nftables, systemd,
xterm), so those modules showed English titles in the Webmin menu.
The reviewed strings are removed from module.info.tr.auto, which now
holds only name_tr - the same split the de and ca translations use.
Thirty-six of those files became empty and are deleted.
Some of the machine text this replaces was wrong rather than just
clumsy:
sarg "Squid Report Generator" had become "Kalamar Rapor
Oluşturucu" - the fish, not the proxy
heartbeat the product name was translated as "Kalp Atışı"
cluster-cron "Cron Jobs" had become "Cron İş İlanları" (job ads)
proc "renice" was translated as "rename"
samba "file and print shares" was split into "create a samba
file" and "print the shares"
exports, hpuxexports, sgiexports, inetd, init, mount, net
each repeated the file path mid-sentence
firewall, the "(iptables)" and "(ip6tables)" qualifiers that
firewall6 distinguish the two modules were dropped
Turkish capitalisation of English words was also wrong throughout
("İptables", "İnetd", "İscsitarget", "İnternet"), and three previously
reviewed strings were stored as double-encoded UTF-8 (cron/desc_tr,
mailboxes/desc_tr, mailboxes/longdesc_tr).
cluster-cron and ldap-server carried a stray desc_de_tr key - a German
key that had leaked into the Turkish file. It is removed.
A consistency check of every lang/tr against its lang/en turned up 58
lines that were wrong independently of the missing translations. All of
them are fixed here:
Missing or wrong $N placeholders (the value silently disappears from
the message at runtime, or the wrong value is shown):
acl/cert_eca, acl/hide_desc, adsl-client/index_stopdesc,
apache/reconfig_ever, apache/log_files, apache/log_files_l,
bind8/log_manual, dhcpd/listl_lfnotcont, fdisk/mkfs_desc1,
fdisk/fsck_desc1, fdisk/tunefs_desc, hpuxexports/save_ehost,
inittab/log_rename, mysql/index_ever, mysql/index_version,
mysql/log_perm_create, mysql/log_perm_delete, mysql/log_perm_modify,
sendmail/index_epath, sendmail/index_startmsg, sendmail/asave_ematch,
sendmail/mailers_efile, sendmail/generics_efile,
webalizer/index_ewebalizer, webalizer/index_econf
cron/env_ename carried a $1 that lang/en does not have, and its text
described a different error than the key means.
adsl-client/index_stopdesc and inittab/log_rename each repeated $1
where $2 was meant, so both values printed the same string.
HTML markup that did not match lang/en:
bind8/mass_desc, dhcpd/index_dhcpdnotfound, firewall/index_existing,
inetd/index_applymsg, mysql/index_nomod, mysql/index_nomods,
samba/esync_msg, samba/viewu_list, sendmail/trusts_desc,
sendmail/mailers_desc2, sendmail/domains_desc, squid/clear_msgclear,
status/proc_thresh
Several of these were also truncated mid-sentence, dropping a whole
sentence of the original text; those are now translated in full.
Encoding:
mailboxes/confirm_warnf was stored as double-encoded UTF-8 and
displayed as mojibake. It also used $1 twice instead of $1 and $2.
Trailing whitespace:
proc/kill_term, kill_hup, kill_stop, kill_cont
Untranslated strings:
fdisk/select_* device descriptions, mount/irix_mode0, irix_mode0cd,
shorewall/tunnels_ipsec:noah
bind8/mass_desc previously translated the literal configuration
keywords master, slave, stub and forward into Turkish; they are now
left in English, since they are values the user has to type.
With this change every module has a complete lang/tr and no lang/tr.auto
files are left in the tree:
mount 92 new strings - Linux/FreeBSD/IRIX mount options
bandwidth 83 strings - bandwidth monitoring and reports
mailboxes 78 new strings - attachments, iCal, HTML composer
firewall 76 new strings - IPset, physdev, chain rename and move
gray-theme 72 strings - theme layout and system information page
fdisk 72 new strings - parted, NVME, partition table format
servers 71 new strings - automatic server discovery
stunnel 69 strings - SSL tunnels via inetd/xinetd
cron 68 new strings - crond control and manual editing
custom 63 new strings - SQL commands and output formats
cluster-copy 62 strings - scheduled file copies across servers
firewall/move_chain reads "Current change" in lang/en where "Current
chain" is clearly meant; it is translated by intent as "Mevcut zincir".
Command and format names that appear verbatim in configuration files
(parted, fdisk, hdparm, SMART, GPT, MS-DOS, NVME, tmpfs, CIFS, NFSv4,
inetd, xinetd, crond, IPset, physdev, TCP-wrappers) stay in English.
Adds complete lang/tr files for three previously untranslated modules
and removes their machine-generated lang/tr.auto files:
bsdfdisk 292 strings - BSD slice/partition, GEOM, ZFS and newfs UI
ipfilter 304 strings - IPFilter rules, NAT/redirect and clustering
zones 268 strings - Solaris zone management
Also fixes two strings that were still English in existing files:
acl/log_reset and firewall/edit_flags. The latter also had its $1/$2
placeholders in the wrong order relative to lang/en.
Protocol keywords, command names and configuration values (TCP, ICMP,
NAT, CIDR, ZFS, GEOM, glabel, VT100, NIS+, ro,nosuid) are kept in
English, matching the rest of the Turkish translation.
Corrects verifiable defects in the shipped Turkish translations across
25 modules. No .auto (machine-translated) files are touched.
Placeholder bugs (33 keys) - substitution variables were missing,
duplicated or renumbered relative to lang/en:
* fdisk/mkfs_desc1 used $1 twice, so the "all data will be permanently
erased" confirmation named the filesystem type instead of the target
device.
* apache/reconfig_ever linked to <a href='$1'> instead of $2, pointing
the "module configuration" link at the version string.
* useradmin/export_eopen contained the Perl special variable $! rather
than $1.
* adsl-client/index_stopdesc, inittab/log_rename, hpuxexports/save_ehost,
mysql/log_perm_* and others repeated $1 where $2/$3 was intended.
* cron/env_ename referenced $1, which lang/en does not provide.
HTML markup bugs (19 keys) - tags were dropped or swapped, breaking
rendering or links:
* useradmin/batch_desc6 and batch_desc3 contained the literal strings
"$batch_desc1" and "$batch_desc0" and rendered as plain text.
* bind8/mass_desc translated the literal named.conf keywords master,
slave, stub and forward, which would lead users to enter invalid
configuration values. These are now left untranslated.
* mysql/index_nomod, samba/esync_msg, squid/clear_msgclear and others
lost <tt>/<b> pairs present in lang/en.
Encoding (10 keys) - mailboxes/lang/tr contained double-encoded UTF-8
(mojibake), e.g. "klasöründen" instead of "klasöründen".
Untranslated strings (96 keys) - htaccess-htpasswd/lang/tr was a verbatim
copy of lang/en and is now fully translated. Remaining English strings in
fdisk, mount, shorewall, webalizer, xinetd and firewall are translated.
Technical identifiers (LVM VG/LV, IPsec AH) are deliberately kept in
English.
All modified files are valid UTF-8, keep their original key order and
line count, and their placeholders now match lang/en exactly.