#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.
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.
Adds the 494 strings that apache/lang/tr was missing, so the module is now
fully translated, and removes apache/lang/tr.auto.
Apache configuration vocabulary is left in English so it still matches the
config files and documentation: directive and container names (Directory,
Files, Location, Proxy, Require, RequireAny, RequireAll, Allow/Deny/Order,
ServerName, Multiviews), protocol tokens (HTTP/1.1, HTTP/2, h2, h2c),
header names (ETag, Location:, Host:, Via:, Last-Modified), the .htaccess
filename, DBM, WebDAV, PROPFIND, suexec, gcache and the mod_* module
names.
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.
Expose missing prefork, worker, and event MPM tuning directives under Apache Processes and Limits, including MaxRequestWorkers, ServerLimit, ThreadLimit, ThreadsPerChild, and spare-thread controls.
https://github.com/webmin/webmin/issues/1821
* Note: Bring the Apache module to parity with the Nginx module's Debian
sites-available/sites-enabled handling: list disabled vhost files
alongside active ones, toggle their state via symlink with apachectl
configtest rollback, and delete VirtualHost blocks from inactive files.
When Virtualmin manages a vhost, defer enable/disable to Virtualmin's
own forms instead of touching the symlink directly.
https://forum.virtualmin.com/t/enable-disable-toggle-buttons-in-ngnix-module/137238/4?u=ilia
If you un-tick all values for "SSL protocols" option and save the page, configuration file will end up with "SSLProtocol " without value, which is going to result in non-working SSL website