Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (86 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/pl/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 88.9% (355 of 399 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (107 of 107 strings) Translation: OpenWrt/LuCI/applications/filemanager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfilemanager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (86 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (82 of 82 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (116 of 116 strings) Translation: OpenWrt/LuCI/applications/radicale Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (177 of 177 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (186 of 186 strings) Translation: OpenWrt/LuCI/applications/unbound Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsunbound/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.9% (187 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (193 of 193 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (107 of 107 strings) Translation: OpenWrt/LuCI/applications/filemanager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfilemanager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2 of 2 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (46 of 46 strings) Translation: OpenWrt/LuCI/applications/xfrpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 35.2% (6 of 17 strings) Translation: OpenWrt/LuCI/applications/eoip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationseoip/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (21 of 21 strings) Translation: OpenWrt/LuCI/applications/tor Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstor/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (33 of 33 strings) Translation: OpenWrt/LuCI/applications/alist Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsalist/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (172 of 172 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (20 of 20 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 91.5% (65 of 71 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/smartdns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssmartdns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 58.3% (94 of 161 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (46 of 46 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 90.6% (68 of 75 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 98.3% (180 of 183 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (59 of 59 strings) Translation: OpenWrt/LuCI/applications/dump1090 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdump1090/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translation: OpenWrt/LuCI/applications/ksmbd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsksmbd/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (17 of 17 strings) Translation: OpenWrt/LuCI/applications/omcproxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsomcproxy/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/wifischedule Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswifischedule/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (82 of 82 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (33 of 33 strings) Translation: OpenWrt/LuCI/applications/vnstat2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsvnstat2/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (20 of 20 strings) Translation: OpenWrt/LuCI/applications/ltqtapi Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsltqtapi/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 69.8% (65 of 93 strings) Translation: OpenWrt/LuCI/applications/clamav Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsclamav/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/dynapoint Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdynapoint/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (26 of 26 strings) Translation: OpenWrt/LuCI/applications/dcwapd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdcwapd/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (49 of 49 strings) Translation: OpenWrt/LuCI/applications/mjpg-streamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmjpg-streamer/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translation: OpenWrt/LuCI/applications/cshark Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscshark/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 32.1% (9 of 28 strings) Translation: OpenWrt/LuCI/applications/udpxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsudpxy/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.1% (134 of 138 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (44 of 44 strings) Translation: OpenWrt/LuCI/applications/ser2net Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsser2net/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (116 of 116 strings) Translation: OpenWrt/LuCI/applications/radicale Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 21.2% (35 of 165 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (40 of 40 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2 of 2 strings) Translation: OpenWrt/LuCI/applications/olsr-viz Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-viz/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (168 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (14 of 14 strings) Translation: OpenWrt/LuCI/applications/pagekitec Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspagekitec/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/privoxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsprivoxy/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 53.0% (26 of 49 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (22 of 22 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (49 of 49 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (62 of 62 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 43.7% (7 of 16 strings) Translation: OpenWrt/LuCI/applications/squid Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssquid/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (102 of 102 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (16 of 16 strings) Translation: OpenWrt/LuCI/applications/hd-idle Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshd-idle/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (28 of 28 strings) Translation: OpenWrt/LuCI/applications/acl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacl/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (62 of 62 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (66 of 66 strings) Translation: OpenWrt/LuCI/applications/frps Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (89 of 89 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 96.6% (145 of 150 strings) Translation: OpenWrt/LuCI/applications/https-dns-proxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (16 of 16 strings) Translation: OpenWrt/LuCI/applications/nextdns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnextdns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (6 of 6 strings) Translation: OpenWrt/LuCI/applications/olsr-services Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-services/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 58.8% (147 of 250 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 94.4% (68 of 72 strings) Translation: OpenWrt/LuCI/applications/attendedsysupgrade Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (177 of 177 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (12 of 12 strings) Translation: OpenWrt/LuCI/applications/bcp38 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (171 of 171 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (186 of 186 strings) Translation: OpenWrt/LuCI/applications/unbound Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsunbound/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.9% (187 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (44 of 44 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (193 of 193 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (62 of 62 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (16 of 16 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translation: OpenWrt/LuCI/applications/cshark Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscshark/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.1% (134 of 138 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (44 of 44 strings) Translation: OpenWrt/LuCI/applications/ser2net Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsser2net/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (168 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (22 of 22 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (102 of 102 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (66 of 66 strings) Translation: OpenWrt/LuCI/applications/frps Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (89 of 89 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (26 of 26 strings) Translation: OpenWrt/LuCI/applications/dcwapd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdcwapd/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (177 of 177 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (183 of 183 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Polish) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Polish) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (33 of 33 strings) Translation: OpenWrt/LuCI/applications/alist Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsalist/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (168 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (102 of 102 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (191 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/dynapoint Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdynapoint/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (26 of 26 strings) Translation: OpenWrt/LuCI/applications/dcwapd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdcwapd/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (177 of 177 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/pl/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (183 of 183 strings) Translated using Weblate (Polish) Currently translated at 100.0% (399 of 399 strings) Translated using Weblate (Polish) Currently translated at 100.0% (82 of 82 strings) Translated using Weblate (Polish) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (Polish) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (Polish) Currently translated at 100.0% (191 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (191 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/dynapoint Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdynapoint/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (399 of 399 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Polish) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (German) Currently translated at 95.0% (58 of 61 strings) Translation: OpenWrt/LuCI/applications/acme Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacme/de/ Translated using Weblate (Polish) Currently translated at 100.0% (150 of 150 strings) Translation: OpenWrt/LuCI/applications/https-dns-proxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (191 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/dynapoint Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdynapoint/pl/ Translated using Weblate (German) Currently translated at 100.0% (177 of 177 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/de/ Translated using Weblate (Polish) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/ Translated using Weblate (Tamil) Currently translated at 100.0% (71 of 71 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (3 of 3 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (86 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (46 of 46 strings) Translation: OpenWrt/LuCI/applications/xfrpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/smartdns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssmartdns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (116 of 116 strings) Translation: OpenWrt/LuCI/applications/radicale Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (66 of 66 strings) Translation: OpenWrt/LuCI/applications/frps Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (89 of 89 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (171 of 171 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (195 of 195 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (16 of 16 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (282 of 282 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Tamil) Currently translated at 0.0% (0 of 71 strings) Translated using Weblate (Tamil) Currently translated at 9.3% (235 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 0.0% (0 of 71 strings) Translated using Weblate (Tamil) Currently translated at 9.3% (235 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 0.0% (0 of 71 strings) Translated using Weblate (Tamil) Currently translated at 9.3% (235 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 0.0% (0 of 71 strings) Translated using Weblate (Tamil) Currently translated at 9.3% (235 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 0.0% (0 of 71 strings) Translated using Weblate (Tamil) Currently translated at 9.3% (235 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 0.0% (0 of 71 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (Tamil) Currently translated at 9.3% (235 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 8.0% (4 of 50 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (76 of 76 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/ta/ Translated using Weblate (Tamil) Currently translated at 8.8% (221 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 2.0% (1 of 50 strings) Translated using Weblate (Tamil) Currently translated at 5.2% (4 of 76 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/ta/ Translated using Weblate (Tamil) Currently translated at 8.7% (220 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 2.0% (1 of 50 strings) Translated using Weblate (Tamil) Currently translated at 5.2% (4 of 76 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/ta/ Translated using Weblate (Tamil) Currently translated at 100.0% (16 of 16 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/wifischedule Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswifischedule/ta/ Translated using Weblate (Tamil) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (53 of 53 strings) Translated using Weblate (Tamil) Currently translated at 8.7% (220 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 2.0% (1 of 50 strings) Translated using Weblate (Tamil) Currently translated at 100.0% (33 of 33 strings) Translation: OpenWrt/LuCI/applications/v2raya Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsv2raya/ta/ Translated using Weblate (Tamil) Currently translated at 100.0% (128 of 128 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/ta/ Translated using Weblate (Tamil) Currently translated at 20.7% (11 of 53 strings) Translated using Weblate (Tamil) Currently translated at 8.7% (219 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Tamil) Currently translated at 5.2% (4 of 76 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/ta/ Translated using Weblate (Tamil) Currently translated at 100.0% (33 of 33 strings) Translation: OpenWrt/LuCI/applications/vnstat2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsvnstat2/ta/ Translated using Weblate (Tamil) Currently translated at 15.1% (5 of 33 strings) Translation: OpenWrt/LuCI/applications/v2raya Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsv2raya/ta/ Translated using Weblate (Tamil) Currently translated at 100.0% (186 of 186 strings) Translation: OpenWrt/LuCI/applications/unbound Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsunbound/ta/ Translated using Weblate (Tamil) Currently translated at 8.6% (217 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ta/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (86 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 94.4% (68 of 72 strings) Translation: OpenWrt/LuCI/applications/attendedsysupgrade Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (86 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (211 of 211 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.9% (187 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 45.4% (30 of 66 strings) Translation: OpenWrt/LuCI/applications/sshtunnel Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssshtunnel/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (38 of 38 strings) Translation: OpenWrt/LuCI/applications/advanced-reboot Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadvanced-reboot/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (195 of 195 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.9% (187 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (193 of 193 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.9% (187 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (195 of 195 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.9% (187 of 191 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (282 of 282 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (2505 of 2505 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Co-authored-by: Bob Idle <102661087+bobidle@users.noreply.github.com> Co-authored-by: Hosted Weblate <hosted@weblate.org> Co-authored-by: Matthaiks <kitynska@gmail.com> Co-authored-by: Piotr Kołtun <pkoltungm@gmail.com> Co-authored-by: ZW <roc_fe@users.noreply.hosted.weblate.org> Co-authored-by: தமிழ்நேரம் <anishprabu.t@gmail.com> Signed-off-by: Bob Idle <102661087+bobidle@users.noreply.github.com> Signed-off-by: Matthaiks <kitynska@gmail.com> Signed-off-by: Piotr Kołtun <pkoltungm@gmail.com> Signed-off-by: ZW <roc_fe@users.noreply.hosted.weblate.org> Signed-off-by: தமிழ்நேரம் <anishprabu.t@gmail.com> Translate-URL: https://hosted.weblate.org/projects/openwrt/luci_modules_luci-mod-dsl/ta/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luci_modules_luci-mod-dsl/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscommands/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfilebrowser/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfwknopd/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsminidlna/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsopenvpn/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsp910nd/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsqos/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale2/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsrp-pppoe-server/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssamba4/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssamba4/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssplash/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssplash/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstinyproxy/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstransmission/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsuhttpd/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsupnp/ta/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswatchcat/ta/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswatchcat/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswol/ta/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswol/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/lucimodulesluci-mod-battstatus/ta/ Translate-URL: https://hosted.weblate.org/projects/openwrt/lucimodulesluci-mod-dashboard/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/lucimodulesluci-mod-dashboard/ta/ Translate-URL: https://hosted.weblate.org/projects/openwrt/lucimodulesluci-mod-dashboard/zh_Hant/ Translation: OpenWrt/LuCI/applications/commands Translation: OpenWrt/LuCI/applications/coovachilli Translation: OpenWrt/LuCI/applications/filebrowser Translation: OpenWrt/LuCI/applications/firewall Translation: OpenWrt/LuCI/applications/fwknopd Translation: OpenWrt/LuCI/applications/minidlna Translation: OpenWrt/LuCI/applications/natmap Translation: OpenWrt/LuCI/applications/nut Translation: OpenWrt/LuCI/applications/olsr Translation: OpenWrt/LuCI/applications/openvpn Translation: OpenWrt/LuCI/applications/p910nd Translation: OpenWrt/LuCI/applications/qos Translation: OpenWrt/LuCI/applications/radicale2 Translation: OpenWrt/LuCI/applications/rp-pppoe-server Translation: OpenWrt/LuCI/applications/samba4 Translation: OpenWrt/LuCI/applications/splash Translation: OpenWrt/LuCI/applications/statistics Translation: OpenWrt/LuCI/applications/tinyproxy Translation: OpenWrt/LuCI/applications/transmission Translation: OpenWrt/LuCI/applications/uhttpd Translation: OpenWrt/LuCI/applications/upnp Translation: OpenWrt/LuCI/applications/watchcat Translation: OpenWrt/LuCI/applications/wol Translation: OpenWrt/LuCI/modules/luci-mod-battstatus Translation: OpenWrt/LuCI/modules/luci-mod-dashboard Translation: OpenWrt/LuCI/modules/luci-mod-dsl
Backups
The backup scheme implemented in /etc/init.d/luci_statistics
aims to
limit writes to stable storage, to preserve flash memory lifetime.
(Flash-memory based routers may have limited lifetime of write cycles,
we want to conserve those.) While it would be simpler to run a periodic
backup as a cron job, you'd risk wearing out the flash memory. This
scheme only writes backups to flash during shutdowns/reboots and
upgrades.
The backup is only enabled if the administrator sets
luci_statistics.collectd_rrdtool.backup=1
.
We only want to restore a sysupgrade backup file if:
-
It was installed by
sysupgrade -r
(restore configuration files), and we have rebooted. In this case, there is an orderly shutdown that calls the shutdown methods. We do not want to overwrite the restored sysupgrade backup file during shutdown, but after reboot we do want to restore it. -
It was generated during a true sysupgrade, and we are rebooting into the new image:
sysupgrade
with any or none of-o
,-c
,-f
,-u
, resulting in a new image being installed and a config file being preserved for processing after reboot. In this case we do not want to overwrite the backup while rebooting during the upgrade.sysupgrade
in this case stores a.tgz
archive of all preserved files where it can be found after rebooting into the new image, and it does not run the shutdown scripts before rebooting.
When the administrator runs sysupgrade -b
(command line or LuCI), we
create a sysupgrade backup file and it is included in the combined
backup. Then the system continues running. When we later stop or
restart or reboot (orderly conditions, when
/etc/init.d/luci_statistics
is called to shut down), we do not want to
use the saved sysupgrade backup. If we had a control path after
sysupgrade -b
that would allow us to remove the sysupgrade backup, this
would be simple. But we don't!
What we can do is arrange that a sysupgrade backup contains enough information to indicate if it should be restored.
-
True sysupgrade is straightforward: we arrange that the backed-up file list only includes the sysupgrade backup file and one twin file (see below). The next starting of
/etc/init.d/luci_statistics
after a sysupgrade will restore the sysupgrade backup. -
Continued system operation after
sysupgrade -b
: next time we stop the service (during reboot or during other init script actions), we check for a stale sysupgrade backup, and if we detect it we remove it. -
sysupgrade -r
only unpacks the backup files, it does not erase other non-backed-up files still in the overlay. Its intended use is to then immediately reboot, which will run an orderly shutdown/normal backup. We must ensure the orderly shutdown in this case preserves the sysupgrade backup, unlike the previous case.
To implement these cases, we use a pair of twinned files, only one of which is included in the list of files preserved by sysupgrade. If we detect mismatched files (or only one file present) during service shutdown or startup, we trust that the sysupgrade backup should be kept and restored. If the files are matched, that indicates that we have not restored files since the sysupgrade backup, and the current normal backup should be used instead.
During sysupgrade backup
/etc/init.d/luci_statistics sysupgrade_backup
is invoked by sysupgrade
for true upgrade or for the -l
or -b
flags. We detect the list flag
(-l
) by checking the process environment, and if found, we only
generate a list: we don't actually do a backup. For all cases, we edit
the list of files listed already and remove any other mentions of
/etc/luci_statistics
to ensure that only the backup file and one of
the twin files is in the backup list.
During sysupgrade
During a true sysupgrade, only the sysupgrade backup file and one of the twin files is restored after the image reboots, so the first running of startup scripting will restore the sysupgrade backup. This could be at the time of first boot, if the image has been built to include this package, or it could be later when the package is downloaded, installed, and the service is started.
During backup (including orderly shutdown)
During backup (run during shutdown), if there is a matched set of twins,
then we know that sometime since the last service start the
administrator ran sysupgrade -b
and had the chance to copy the
resulting backup. We can now erase the twins and the sysupgrade backup.
If there is a mismatched set of twins, then someone restored a backup
such as with sysupgrade -r
and we should now be rebooting, so we
should leave the sysupgrade files alone to be processed on service
restart (after reboot).
If someone takes a sysupgrade -b
backup and then restores it before
they reboot or restart statistics, the twins will still match, and we
then don't keep the statistics from the restored backup, we instead take
a new backup from current data and use that on reboot.
During startup
If there are matched twin files (the normal case for shutdown/reboot without sysupgrade), then the sysupgrade backup is ignored and the regular backup is restored. If there are mismatched twin files, then the sysupgrade backup is restored.
During disorderly reboot
In a system crash or other disorderly reboot, the shutdown scripts do
not run. What remains on the system is the previous contents of
/etc/luci_statistics
.
-
If the system never started luci_statistics, or it was cleanly shut down before the crash, then there is no difference in behavior from normal startup: we restore either the sysupgrade backup (if luci_statistics had never run) or the regular backup (if luci_statistics was cleanly stopped)
-
If luci_statistics and collectd were running at the time of the crash, there could be a regular backup and a sysupgrade backup present, plus volatile data in /tmp (which are lost in the crash). The regular backup would be from the most recent time the system cleanly stopped luci_statistics. During the subsequent reboot/service start up:
-
If there is a sysupgrade backup on disk from having run
sysupgrade -b
, with both twin files matching (meaning the administrator had taken a backup sometime during the life of the system, before the crash), they are ignored and a regular backup (if any) is restored. -
If the sysupgrade backup has mismatched twin files or only one twin, then it is used to restore state. This would be the case if a sysupgrade restored configuration (
sysupgrade -r
), whether or not it did an orderly shutdown/reboot, or if the file system were damaged in a crash and only one of the twin files survived.
-