summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-11-04 15:34:36 +0200
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-11-04 15:34:36 +0200
commitb8b94803b540ec7c43192a42ea9860a6df13c6c4 (patch)
tree9ceddae2869cb80b91eccb3cd8c5614aae25e864
parent94b0c2e7954bd5222f1909b07301da351d99d6f4 (diff)
parent882cef9d0d3818bd7d0d4abfb1100ce77ab24886 (diff)
Merge branch 'dev' into work/v1.9
# Conflicts: # src/lang.c
-rw-r--r--AUTHORS.md47
-rw-r--r--CMakeLists.txt5
-rwxr-xr-xpo/compile.py1
-rw-r--r--po/cs.po587
-rw-r--r--po/en.po3
-rw-r--r--po/es.po203
-rw-r--r--po/fi.po5
-rw-r--r--po/gl.po5
-rw-r--r--po/hu.po2111
-rw-r--r--po/ru.po219
-rw-r--r--po/sr.po59
-rw-r--r--po/tok.po190
-rw-r--r--po/uk.po27
-rw-r--r--res/about/version.gmi8
-rw-r--r--res/lang/de.binbin28666 -> 28684 bytes
-rw-r--r--res/lang/en.binbin26126 -> 26144 bytes
-rw-r--r--res/lang/eo.binbin24903 -> 24921 bytes
-rw-r--r--res/lang/es.binbin29050 -> 29538 bytes
-rw-r--r--res/lang/es_MX.binbin26991 -> 27009 bytes
-rw-r--r--res/lang/fi.binbin29357 -> 29373 bytes
-rw-r--r--res/lang/fr.binbin29872 -> 29890 bytes
-rw-r--r--res/lang/gl.binbin28710 -> 28728 bytes
-rw-r--r--res/lang/hu.binbin0 -> 30570 bytes
-rw-r--r--res/lang/ia.binbin27991 -> 28009 bytes
-rw-r--r--res/lang/ie.binbin28196 -> 28214 bytes
-rw-r--r--res/lang/isv.binbin24830 -> 24848 bytes
-rw-r--r--res/lang/pl.binbin29267 -> 29285 bytes
-rw-r--r--res/lang/ru.binbin41639 -> 43838 bytes
-rw-r--r--res/lang/sk.binbin25163 -> 25181 bytes
-rw-r--r--res/lang/sr.binbin42354 -> 43296 bytes
-rw-r--r--res/lang/tok.binbin26441 -> 26566 bytes
-rw-r--r--res/lang/uk.binbin43138 -> 43172 bytes
-rw-r--r--res/lang/zh_Hans.binbin24943 -> 24961 bytes
-rw-r--r--res/lang/zh_Hant.binbin25084 -> 25102 bytes
-rw-r--r--src/app.c12
-rw-r--r--src/gmdocument.c36
-rw-r--r--src/gmdocument.h22
-rw-r--r--src/gopher.c4
-rw-r--r--src/history.c11
-rw-r--r--src/history.h1
-rw-r--r--src/lang.c2
-rw-r--r--src/ui/documentwidget.c6
-rw-r--r--src/ui/text.c2
-rw-r--r--src/ui/text_simple.c16
-rw-r--r--src/ui/util.c24
-rw-r--r--src/ui/widget.c96
46 files changed, 3571 insertions, 131 deletions
diff --git a/AUTHORS.md b/AUTHORS.md
new file mode 100644
index 00000000..06b4041b
--- /dev/null
+++ b/AUTHORS.md
@@ -0,0 +1,47 @@
1# Authors and Contributors
2
3Lagrange was created by Jaakko Keränen (<jaakko.keranen@iki.fi>) in July 2020. The source code license is **BSD 2-Clause**. UI translations (_*.po_) are under **CC-BY-SA 4.0**.
4
5Legend: `C` code, `T` translation
6
7```
8C 2596 Jaakko Keränen <jaakko.keranen@iki.fi>
9CT 39 Nikolay Korotkiy <sikmir@gmail.com>
10 T 34 Olga Smirnova <mistresssilvara@hotmail.com>
11 T 25 Alyssa Liddell <e-liss@tuta.io>
12 T 25 Shibo Lyu <github@of.sb>
13 T 24 jan Anja <cyber@sysrq.in>
14 T 20 Страхиња Радић <contact@strahinja.org>
15 T 17 MCMic <come@chilliet.eu>
16 T 14 Wally Hackenslacker <mastor89@protonmail.com>
17 T 9 Xosé M <correoxm@disroot.org>
18 T 9 Aaron Fischer <mail@aaron-fischer.net>
19 T 8 El Mau <public@correolibre.net>
20 T 7 Waterrail <maksymiliankrol03@gmail.com>
21 T 6 Tadeáš Erban <tadysekerbosek@gmail.com>
22 T 5 roy niang <roy@royniang.com>
23 T 2 Arns Udovič <zordsdavini@arns.lt>
24C 2 Manos Pitsidianakis <el13635@mail.ntua.gr>
25 T 2 tbodt <tblodt@icloud.com>
26 T 2 Alex Schroeder <alex@alexschroeder.ch>
27 T 2 methbkts <methbkts@gmail.com>
28C 2 Alyssa Rosenzweig <alyssa@rosenzweig.io>
29 T 2 Gabriel de Oliveira Ferreira Machado <goliv04053@tutanota.com>
30C 2 Br0000k <77938600+Br0000k@users.noreply.github.com>
31C 1 Charles <charles@cdaniels.net>
32C 1 Thomas Adam <thomas.adam@smoothwall.net>
33C 1 Dario Vladovic <d.vladimyr@gmail.com>
34C 1 SolidHal <hal@halemmerich.com>
35C 1 David Gillies <dave.gillies@gmail.com>
36C 1 Raph M <raph@raphm.com>
37 T 1 Eric <spice2wolf@gmail.com>
38C 1 Adam Mizerski <adam@mizerski.pl>
39 T 1 Marek Ľach <mareklachbc@tutanota.com>
40C 1 zocker <zocker@10zen.eu>
41C 1 Zach DeCook <zachdecook@librem.one>
42 T 1 Botond Balázs <balazsbotond@gmail.com>
43C 1 Waweic <waweic@protonmail.com>
44C 1 Waweic <waweic@activ.ism.rocks>
45```
46
47This table of contributors has been extracted from Git history and is sorted by commit count. \ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 77e25b45..41c1b392 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -77,6 +77,7 @@ set (RESOURCES
77 res/lang/fi.bin 77 res/lang/fi.bin
78 res/lang/fr.bin 78 res/lang/fr.bin
79 res/lang/gl.bin 79 res/lang/gl.bin
80 res/lang/hu.bin
80 res/lang/ia.bin 81 res/lang/ia.bin
81 res/lang/ie.bin 82 res/lang/ie.bin
82 res/lang/isv.bin 83 res/lang/isv.bin
@@ -438,13 +439,13 @@ elseif (UNIX AND NOT APPLE)
438 file (WRITE ${desktop} "[Desktop Entry] 439 file (WRITE ${desktop} "[Desktop Entry]
439Name=Lagrange 440Name=Lagrange
440Comment=${PROJECT_DESCRIPTION} 441Comment=${PROJECT_DESCRIPTION}
441Categories=Network 442Categories=Network;
442Exec=${CMAKE_INSTALL_PREFIX}/bin/lagrange %U 443Exec=${CMAKE_INSTALL_PREFIX}/bin/lagrange %U
443Terminal=false 444Terminal=false
444Type=Application 445Type=Application
445StartupWMClass=lagrange 446StartupWMClass=lagrange
446Icon=fi.skyjake.Lagrange 447Icon=fi.skyjake.Lagrange
447MimeType=x-scheme-handler/gemini;x-scheme-handler/gopher 448MimeType=x-scheme-handler/gemini;x-scheme-handler/gopher;
448") 449")
449 install (TARGETS app DESTINATION bin) 450 install (TARGETS app DESTINATION bin)
450 install (FILES ${desktop} DESTINATION share/applications) 451 install (FILES ${desktop} DESTINATION share/applications)
diff --git a/po/compile.py b/po/compile.py
index a2b35ec4..f046ca96 100755
--- a/po/compile.py
+++ b/po/compile.py
@@ -13,6 +13,7 @@ BUILD_LANGS = [
13 'fi', 13 'fi',
14 'fr', 14 'fr',
15 'gl', 15 'gl',
16 'hu',
16 'ia', 17 'ia',
17 'ie', 18 'ie',
18 'isv', 19 'isv',
diff --git a/po/cs.po b/po/cs.po
index a7a641ae..0f8b3d4b 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,7 +1,7 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-10-15 05:50+0000\n" 4"PO-Revision-Date: 2021-11-02 23:51+0000\n"
5"Last-Translator: Tadeáš Erban <tadysekerbosek@gmail.com>\n" 5"Last-Translator: Tadeáš Erban <tadysekerbosek@gmail.com>\n"
6"Language-Team: Czech <http://weblate.skyjake.fi/projects/lagrange/ui/cs/>\n" 6"Language-Team: Czech <http://weblate.skyjake.fi/projects/lagrange/ui/cs/>\n"
7"Language: cs\n" 7"Language: cs\n"
@@ -433,8 +433,8 @@ msgstr "Rozložení"
433msgid "sidebar.unread" 433msgid "sidebar.unread"
434msgid_plural "sidebar.unread.n" 434msgid_plural "sidebar.unread.n"
435msgstr[0] "Nepřečtená" 435msgstr[0] "Nepřečtená"
436msgstr[1] "Nepřečtench" 436msgstr[1] "Nepřečten"
437msgstr[2] "Nepřečten" 437msgstr[2] "Nepřečtench"
438 438
439msgid "hint.findtext" 439msgid "hint.findtext"
440msgstr "Najít text na stránce" 440msgstr "Najít text na stránce"
@@ -480,7 +480,7 @@ msgid "feeds.edit"
480msgstr "Upravit kanál…" 480msgstr "Upravit kanál…"
481 481
482msgid "feeds.unsubscribe" 482msgid "feeds.unsubscribe"
483msgstr "Zrušit odběr…" 483msgstr "Ukončit odběr…"
484 484
485msgid "feeds.markallread" 485msgid "feeds.markallread"
486msgstr "Označit všechny jako přečtené" 486msgstr "Označit všechny jako přečtené"
@@ -612,3 +612,582 @@ msgid_plural "ident.usedonurls.n"
612msgstr[0] "Používá se na jedné adrese URL" 612msgstr[0] "Používá se na jedné adrese URL"
613msgstr[1] "Používá se na %zu adresách URL" 613msgstr[1] "Používá se na %zu adresách URL"
614msgstr[2] "Používá se na %zu adresách URL" 614msgstr[2] "Používá se na %zu adresách URL"
615
616msgid "ident.temporary"
617msgstr "Dočasná"
618
619# strftime() formatted
620#, c-format
621msgid "ident.expiry"
622msgstr "Platnost vyprší %d. %m. %Y"
623
624msgid "ident.stopuse"
625msgstr "Nepoužívat na této stránce"
626
627# The %s format characters are used to highlight the word "Help" and must be used in the translation in same way as here.
628#, c-format
629msgid "ident.gotohelp"
630msgstr ""
631"Otevřete %sNápovědu%s pro více informací o TLS klientských certifikátech."
632
633msgid "pageinfo.cert.ca.unverified"
634msgstr "Neověřen certifikační autoritou"
635
636msgid "dlg.cert.fingerprint"
637msgstr "Zkopírovat otisk"
638
639msgid "dlg.input.send"
640msgstr "Odeslat"
641
642msgid "heading.save"
643msgstr "SOUBOR ULOŽEN"
644
645msgid "dlg.save.opendownload"
646msgstr "Otevřít stažený soubor"
647
648#, c-format
649msgid "dlg.import.found"
650msgid_plural "dlg.import.found.n"
651msgstr[0] "Na stránce byl nalezen nový odkaz."
652msgstr[1] "Na stránce byly nalezeny %d nové odkazy."
653msgstr[2] "Na stránce bylo nalezeno %d nových odkazů."
654
655msgid "link.bookmark"
656msgstr "Založit odkaz…"
657
658msgid "dlg.file.delete.confirm"
659msgstr "Jste si jisti, že chcete odstranit tento soubor?"
660
661#, c-format
662msgid "dlg.certwarn.mayberenewed"
663msgid_plural "dlg.certwarn.mayberenewed.n"
664msgstr[0] ""
665"Přijatý certifikát mohl být nedávno obnoven - je pro správnou doménu a "
666"nevypršel. Dosud důvěryhodný certifikát vyprší %s, za jeden den."
667msgstr[1] ""
668"Přijatý certifikát mohl být nedávno obnoven - je pro správnou doménu a "
669"nevypršel. Dosud důvěryhodný certifikát vyprší %s, za %d dny."
670msgstr[2] ""
671"Přijatý certifikát mohl být nedávno obnoven - je pro správnou doménu a "
672"nevypršel. Dosud důvěryhodný certifikát vyprší %s, za %d dny."
673
674# button in the mobile New Identity dialog
675msgid "dlg.certimport.pickfile"
676msgstr "Nahrát soubor certifikátu/klíče"
677
678msgid "bookmark.export.count"
679msgid_plural "bookmark.export.count.n"
680msgstr[0] "Máte %d záložku."
681msgstr[1] "Máte %d záložky."
682msgstr[2] "Máte %d záložek."
683
684msgid "bookmark.export.taginfo"
685msgstr ""
686"V tomto seznamu, každý nadpis představuje značení záložek. Pouze označené "
687"záložky jsou vypsány. Záložky s více než jedním označením jsou vypsány pod "
688"každým."
689
690msgid "bookmark.export.format.otherlines"
691msgstr ""
692"Řádky s odrážkami a citáty jsou vyhrazeny pro dodatečné informace ohledně "
693"předcházející záložky. Textové řádky a předformátovaný text jsou považovány "
694"jako komentáře a měly by být ignorovány."
695
696#, c-format
697msgid "dlg.confirm.ident.delete"
698msgstr ""
699"Opravdu chcete odstranit totožnost %s\"%s\"%s včetně jejího certifikátu a "
700"soukromých klíčů?"
701
702msgid "heading.uploadport"
703msgstr "Port Titanu pro odesílání"
704
705msgid "dlg.uploadport.msg"
706msgstr ""
707"Nastavte port pro používání s Titanem pro tuto URL. Bude uložen v "
708"konfiguraci pro tuto stránku."
709
710msgid "lang.zh.hans"
711msgstr "Čínština (Zjednodušená)"
712
713msgid "lang.pt"
714msgstr "Portugalština"
715
716# %s refers to name of an identity.
717#, c-format
718msgid "dlg.ident.notes"
719msgstr "Poznámky ohledně %s:"
720
721msgid "pageinfo.header.cached"
722msgstr "(obsah uložený v mezipaměti )"
723
724msgid "pageinfo.domain.mismatch"
725msgstr "Doménové jméno se liší"
726
727msgid "dlg.save.incomplete"
728msgstr "Obsah této stránky se ještě stahuje."
729
730msgid "heading.autoreload"
731msgstr "AUTOMATICKÉ OBNOVOVÁNÍ"
732
733msgid "dlg.autoreload"
734msgstr "Vyberte interval automatických aktualizací pro tuto kartu."
735
736msgid "heading.file.delete"
737msgstr "ODSTRANIT SOUBOR"
738
739msgid "dlg.certwarn.different"
740msgstr "Přijatý certifikát je platný, ale je jiný než ten, kterému důvěřujeme."
741
742msgid "link.hint.image"
743msgstr "Zobrazit obrázek"
744
745msgid "bookmark.export.format.sub"
746msgstr ""
747"Tato stránka je formátována podle doprovodná specifikace \"Odebírání Gemini "
748"stránek\"."
749
750msgid "bookmark.export.format.linklines"
751msgstr "Každý odkaz představuje záložku."
752
753# Interpret as "Results from feeds..."
754msgid "heading.lookup.feeds"
755msgstr "KANÁLY"
756
757# Interpret as "Results from history..."
758msgid "heading.lookup.history"
759msgstr "HISTORIE"
760
761# Interpret as "Results from page content..."
762msgid "heading.lookup.pagecontent"
763msgstr "OBSAH STRÁNKY"
764
765msgid "dlg.upload.id.none"
766msgstr "Žádné"
767
768msgid "heading.upload.file"
769msgstr "Soubor"
770
771msgid "dlg.upload.send"
772msgstr "Nahrát na server"
773
774msgid "dlg.uploadport.set"
775msgstr "Nastavit port"
776
777msgid "dlg.translate.to"
778msgstr "Pro:"
779
780msgid "lang.ia"
781msgstr "Interlingua"
782
783msgid "lang.ie"
784msgstr "Interlingva"
785
786msgid "lang.es.mx"
787msgstr "Španělština (Mexická)"
788
789msgid "heading.newident"
790msgstr "NOVÁ TOTOŽNOST"
791
792msgid "lang.uk"
793msgstr "Ukrajinština"
794
795msgid "lang.sr"
796msgstr "Srbština"
797
798msgid "dlg.newident.create"
799msgstr "VYTVOŘIT TOTOŽNOST"
800
801msgid "menu.website"
802msgstr "Stránka projektu…"
803
804msgid "num.fonts"
805msgid_plural "num.fonts.n"
806msgstr[0] "%zu písmo"
807msgstr[1] "%zu písma"
808msgstr[2] "%zu písem"
809
810msgid "menu.fonts"
811msgstr "Spravovat písma…"
812
813msgid "num.files"
814msgid_plural "num.files.n"
815msgstr[0] "%zu soubor"
816msgstr[1] "%zu soubory"
817msgstr[2] "%zu souborů"
818
819msgid "ident.use"
820msgstr "Používat na této stránce"
821
822msgid "ident.stopuse.all"
823msgstr "Nikde nepoužívat"
824
825msgid "ident.export"
826msgstr "Exportovat"
827
828msgid "heading.ident.use"
829msgstr "POUŽITÍ TOTOŽNOSTI"
830
831msgid "menu.edit.notes"
832msgstr "Upravit poznámky…"
833
834msgid "heading.ident.notes"
835msgstr "POZNÁMKY TOTOŽNOSTI"
836
837msgid "ident.fingerprint"
838msgstr "Zkopírovat otisk"
839
840msgid "heading.unsub"
841msgstr "UKONČIT ODBĚR"
842
843#, c-format
844msgid "dlg.confirm.unsub"
845msgstr "Opravdu chcete ukončit odběr kanálu \"%s\"?"
846
847msgid "dlg.unsub"
848msgstr "Ukončit odběr"
849
850#, c-format
851msgid "error.unsupported.suggestsave"
852msgstr ""
853"Můžete uložit jako soubor do složky stažených souborů: Buď stiskněte %s nebo "
854"vyberte \"%s\" z nabídky."
855
856msgid "error.server.msg"
857msgstr "Server odpověděl s následující zprávou:"
858
859msgid "heading.pageinfo"
860msgstr "INFORMACE O STRÁNCE"
861
862msgid "pageinfo.cert.status"
863msgstr "Stav certifikátu:"
864
865msgid "pageinfo.cert.ca.verified"
866msgstr "Ověřen certifikační autoritou"
867
868msgid "ident.delete"
869msgstr "Odstranit totožnost…"
870
871msgid "heading.ident.delete"
872msgstr "ODSTRANIT TOTOŽNOST"
873
874msgid "dlg.ident.delete"
875msgstr "Odstranit totožnost a její soubory"
876
877msgid "sidebar.empty.idents"
878msgstr "Žádné totožnosti"
879
880msgid "pageinfo.cert.notexpired"
881msgstr "Platný"
882
883msgid "pageinfo.cert.expired"
884msgstr "Prošlý"
885
886msgid "pageinfo.cert.trusted"
887msgstr "Důvěryhodný"
888
889msgid "pageinfo.cert.untrusted"
890msgstr "Nedůvěryhodný"
891
892msgid "pageinfo.domain.match"
893msgstr "Doménové jméno se shoduje"
894
895msgid "dlg.cert.trust"
896msgstr "Důvěřovat"
897
898#, c-format
899msgid "dlg.input.prompt"
900msgstr "Prosím vyplňte %s:"
901
902msgid "dlg.input.linebreak"
903msgstr "Zalomení řádku"
904
905msgid "heading.save.incomplete"
906msgstr "STRÁNKA NEÚPLNÁ"
907
908msgid "dlg.save.size"
909msgstr "Velikost:"
910
911msgid "heading.save.error"
912msgstr "CHYBA PŘI UKLÁDÁNÍ SOUBORU"
913
914msgid "heading.import.bookmarks"
915msgstr "NAHRÁT ZÁLOŽKY"
916
917#, c-format
918msgid "dlg.import.add"
919msgid_plural "dlg.import.add.n"
920msgstr[0] "%sPřidat záložku"
921msgstr[1] "%sPřidat %d záložky"
922msgstr[2] "%sPřidat %d záložek"
923
924msgid "dlg.import.notnew"
925msgstr "Všechny odkazy na této stránce jsou už založené."
926
927#, c-format
928msgid "num.hours"
929msgid_plural "num.hours.n"
930msgstr[0] "%d hodina"
931msgstr[1] "%d hodiny"
932msgstr[2] "%d hodin"
933
934#, c-format
935msgid "dlg.certwarn.expired"
936msgstr "Přijatému certifikátu vypršela platnost %s."
937
938msgid "reload.never"
939msgstr "Nikdy"
940
941msgid "reload.onceperday"
942msgstr "Jednou za den"
943
944#, c-format
945msgid "num.minutes"
946msgid_plural "num.minutes.n"
947msgstr[0] "%d minuta"
948msgstr[1] "%d minuty"
949msgstr[2] "%d minut"
950
951msgid "link.newtab"
952msgstr "Otevřít odkaz v nové kartě"
953
954msgid "link.newtab.background"
955msgstr "Otevřít odkaz v kartě na pozadí"
956
957msgid "link.side"
958msgstr "Otevřít odkaz na vedlejší straně"
959
960msgid "link.side.newtab"
961msgstr "Otevřít odkaz v nové kartě na vedlejší straně"
962
963msgid "link.browser"
964msgstr "Otevřít odkaz ve výchozím prohlížeči"
965
966msgid "link.noproxy"
967msgstr "Otevřít bez použití proxy"
968
969msgid "link.copy"
970msgstr "Zkopírovat odkaz"
971
972msgid "link.download"
973msgstr "Stáhnout odkazovaný soubor"
974
975msgid "link.file.delete"
976msgstr "Odstranit soubor"
977
978msgid "dlg.file.delete"
979msgstr "Odstranit"
980
981msgid "heading.openlink"
982msgstr "OTEVŘÍT ODKAZ"
983
984#, c-format
985msgid "dlg.openlink.confirm"
986msgstr ""
987"Chcete tento odkaz otevřít ve výchozím prohlížeči?\n"
988"%s%s"
989
990msgid "dlg.openlink"
991msgstr "Otevřít odkaz"
992
993msgid "dlg.certwarn.title"
994msgstr "Bezpečnostní chyba"
995
996msgid "dlg.certwarn.domain"
997msgstr ""
998"Přijatý certifikát je pro špatnou doménu (%s). Toto může být problém s "
999"nastavením serveru."
1000
1001msgid "dlg.certwarn.domain.expired"
1002msgstr ""
1003"Přijatému certifikátu vypršela platnost a ještě k tomu je pro špatnou doménu."
1004
1005msgid "dlg.certimport.help"
1006msgstr ""
1007"Vložte PEM kódovaný certifikát a/nebo soukromý klíč,\n"
1008"nebo přetáhněte .crt/.key soubor do tohoto okna."
1009
1010msgid "dlg.certimport.notfound.page"
1011msgstr "Žádný certifikát nebo klíč nebyl nalezen na této stránce."
1012
1013msgid "dlg.certimport.notfound"
1014msgstr "Žádný certifikát nebo soukromý klíč nebyl nalezen."
1015
1016msgid "heading.certimport.pasted"
1017msgstr "VLOŽENO ZE SCHRÁNKY"
1018
1019msgid "heading.certimport.dropped"
1020msgstr "PŘETÁHNUTÝ SOUBOR"
1021
1022msgid "dlg.certimport.import"
1023msgstr "Nahrát"
1024
1025msgid "heading.certimport"
1026msgstr "NAHRÁT TOTOŽNOST"
1027
1028msgid "dlg.certimport.notes"
1029msgstr "Poznámky:"
1030
1031msgid "hint.certimport.description"
1032msgstr "popis"
1033
1034msgid "dlg.certimport.nocert"
1035msgstr "Žádný certifikát"
1036
1037msgid "dlg.certimport.nokey"
1038msgstr "Žádný soukromý klíč"
1039
1040msgid "link.hint.audio"
1041msgstr "Přehrát zvuk"
1042
1043msgid "bookmark.title.blank"
1044msgstr "Prázdná stránka"
1045
1046msgid "bookmark.export.title.folder"
1047msgstr "Záložky"
1048
1049msgid "bookmark.export.title.tag"
1050msgstr "Značení záložek"
1051
1052msgid "bookmark.export.title.time"
1053msgstr "Vytvořené záložky"
1054
1055msgid "bookmark.export.saving"
1056msgstr ""
1057"Uložte tuto stránku aby jste je exportovali, nebo je můžete zkopírovat do "
1058"schránky."
1059
1060msgid "bookmark.export.format.folders"
1061msgstr "Struktura složek je definována nadpisy druhého a třetího řádu."
1062
1063msgid "bookmark.export.format.tags"
1064msgstr "Označení jsou definována nadpisy druhého řádu."
1065
1066# Interpret as "Results from bookmarks..."
1067msgid "heading.lookup.bookmarks"
1068msgstr "ZÁLOŽKY"
1069
1070# Interpret as "Other results..."
1071msgid "heading.lookup.other"
1072msgstr "JINÉ"
1073
1074msgid "upload.id"
1075msgstr "Totožnost:"
1076
1077# Interpret as "Results from identitites..."
1078msgid "heading.lookup.identities"
1079msgstr "TOTOŽNOSTI"
1080
1081msgid "dlg.upload.id.default"
1082msgstr "Výchozí"
1083
1084msgid "heading.upload.text"
1085msgstr "Text"
1086
1087msgid "hint.upload.text"
1088msgstr "vložte text k odeslání"
1089
1090msgid "menu.page.upload"
1091msgstr "Nahrát stránku na server pomocí Titanu…"
1092
1093msgid "heading.upload"
1094msgstr "NAHRÁT NA SERVER POMOCÍ TITANU"
1095
1096msgid "upload.file.name"
1097msgstr "Jméno souboru:"
1098
1099msgid "upload.file.drophere"
1100msgstr "(přetáhni soubor do tohoto okna)"
1101
1102msgid "upload.file.size"
1103msgstr "Velikost souboru:"
1104
1105msgid "upload.mime"
1106msgstr "MIME typ:"
1107
1108msgid "upload.token"
1109msgstr "Token:"
1110
1111msgid "hint.upload.token"
1112msgstr "podívejte se na instrukce serveru"
1113
1114msgid "upload.port"
1115msgstr "Port…"
1116
1117# used on mobile
1118msgid "dlg.upload.text"
1119msgstr "Nahrát prostý text na server"
1120
1121# used on mobile
1122msgid "dlg.upload.file"
1123msgstr "Nahrát soubor na server"
1124
1125# used on mobile
1126msgid "dlg.upload.pickfile"
1127msgstr "Vybrat soubor"
1128
1129msgid "heading.translate"
1130msgstr "PŘELOŽIT STRÁNKU"
1131
1132msgid "dlg.translate.unavail"
1133msgstr "Služba nedostupná"
1134
1135msgid "dlg.translate.fail"
1136msgstr "Požadavek selhal"
1137
1138msgid "dlg.translate"
1139msgstr "Přeložit"
1140
1141msgid "dlg.translate.from"
1142msgstr "Od:"
1143
1144msgid "lang.ar"
1145msgstr "Arabština"
1146
1147msgid "lang.zh"
1148msgstr "Čínština"
1149
1150msgid "lang.zh.hant"
1151msgstr "Čínština (Tradiční)"
1152
1153msgid "lang.de"
1154msgstr "Němčina"
1155
1156msgid "lang.en"
1157msgstr "Angličtina"
1158
1159msgid "lang.fi"
1160msgstr "Finština"
1161
1162msgid "lang.fr"
1163msgstr "Francouzština"
1164
1165msgid "lang.gl"
1166msgstr "Galicijština"
1167
1168msgid "lang.hi"
1169msgstr "Hindština"
1170
1171msgid "lang.it"
1172msgstr "Italština"
1173
1174msgid "lang.ja"
1175msgstr "Japonština"
1176
1177msgid "lang.pl"
1178msgstr "Polština"
1179
1180msgid "lang.ru"
1181msgstr "Ruština"
1182
1183msgid "lang.eo"
1184msgstr "Esperanto"
1185
1186msgid "lang.es"
1187msgstr "Španělština"
1188
1189msgid "lang.sk"
1190msgstr "Slovenština"
1191
1192msgid "keys.upload"
1193msgstr "Nahrát stránku pomocí Titanu"
diff --git a/po/en.po b/po/en.po
index 7258935d..83dec03f 100644
--- a/po/en.po
+++ b/po/en.po
@@ -1100,6 +1100,9 @@ msgstr "Portuguese"
1100msgid "lang.ru" 1100msgid "lang.ru"
1101msgstr "Russian" 1101msgstr "Russian"
1102 1102
1103msgid "lang.hu"
1104msgstr "Hungarian"
1105
1103msgid "lang.uk" 1106msgid "lang.uk"
1104msgstr "Ukrainian" 1107msgstr "Ukrainian"
1105 1108
diff --git a/po/es.po b/po/es.po
index 80851530..c8537b45 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,7 +1,7 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-10-04 12:08+0000\n" 4"PO-Revision-Date: 2021-11-02 23:51+0000\n"
5"Last-Translator: Wally Hackenslacker <mastor89@protonmail.com>\n" 5"Last-Translator: Wally Hackenslacker <mastor89@protonmail.com>\n"
6"Language-Team: Spanish <http://weblate.skyjake.fi/projects/lagrange/ui/es/>\n" 6"Language-Team: Spanish <http://weblate.skyjake.fi/projects/lagrange/ui/es/>\n"
7"Language: es\n" 7"Language: es\n"
@@ -661,9 +661,7 @@ msgstr ""
661 661
662#, c-format 662#, c-format
663msgid "dlg.confirm.unsub" 663msgid "dlg.confirm.unsub"
664msgstr "" 664msgstr "¿De verdad quiere eliminar la suscripción \"%s\"?"
665"¿De verdad quiere eliminar la suscripción\n"
666"\"%s\"?"
667 665
668msgid "dlg.openlink" 666msgid "dlg.openlink"
669msgstr "Abrir Enlace" 667msgstr "Abrir Enlace"
@@ -1198,7 +1196,7 @@ msgid "error.tls"
1198msgstr "Falla de Red/TLS" 1196msgstr "Falla de Red/TLS"
1199 1197
1200msgid "error.tls.msg" 1198msgid "error.tls.msg"
1201msgstr "Fallo de comunicación con el servidor. Aquí está el mensaje de error:" 1199msgstr "Fallo de comunicación con el servidor."
1202 1200
1203msgid "error.temporary" 1201msgid "error.temporary"
1204msgstr "Falla Temporal" 1202msgstr "Falla Temporal"
@@ -1274,9 +1272,8 @@ msgstr "Descargar Archivo Enlazado"
1274#, c-format 1272#, c-format
1275msgid "dlg.confirm.ident.delete" 1273msgid "dlg.confirm.ident.delete"
1276msgstr "" 1274msgstr ""
1277"¿De verdad quiere borrar la identidad\n" 1275"¿De verdad quiere borrar la identidad%s\"%s\"%s incluyendo su certificado y "
1278"%s%s%s\n" 1276"archivos de clave privada?"
1279"incluyendo su certificado y archivos de clave privada?"
1280 1277
1281msgid "dlg.certwarn.different" 1278msgid "dlg.certwarn.different"
1282msgstr "" 1279msgstr ""
@@ -1668,8 +1665,8 @@ msgstr "PUERTO DE CARGA POR TITAN"
1668 1665
1669msgid "dlg.uploadport.msg" 1666msgid "dlg.uploadport.msg"
1670msgstr "" 1667msgstr ""
1671"Configurar el puerto de Titan a usar para este URL.\n" 1668"Configurar el puerto de Titan a usar para este URL. El puerto es guardado en "
1672"El puerto es guardado en la configuración específica del sitio." 1669"la configuración específica del sitio."
1673 1670
1674msgid "dlg.uploadport.set" 1671msgid "dlg.uploadport.set"
1675msgstr "Configurar Puerto" 1672msgstr "Configurar Puerto"
@@ -1946,3 +1943,189 @@ msgstr "Eslovaco"
1946 1943
1947msgid "lang.isv" 1944msgid "lang.isv"
1948msgstr "Intereslavo" 1945msgstr "Intereslavo"
1946
1947msgid "dlg.feed.ignoreweb"
1948msgstr "Ignorar enlaces HTTP(S):"
1949
1950msgid "dlg.fontpack.classic"
1951msgstr "Descargar Paquete de Fuentes (25MB)"
1952
1953msgid "error.ansi"
1954msgstr "Emulación de Terminal"
1955
1956msgid "error.ansi.msg"
1957msgstr ""
1958"Esta página puede que no se esté mostrando correctamente. Hace uso de "
1959"secuencias de escape ANSI para formatear el texto, lo que tiene soporte "
1960"parcial. Puede tratar de abrirla en un emulador de terminal."
1961
1962msgid "prefs.bookmarks.addbottom"
1963msgstr "Agregar marcadores al final:"
1964
1965msgid "fontpack.export"
1966msgstr "Ver plantilla fontpack.ini"
1967
1968msgid "heading.fontpack.classic"
1969msgstr "DESCARGAR PAQUETE DE FUENTES"
1970
1971msgid "dlg.fontpack.classic.msg"
1972msgstr ""
1973"Las fuentes previamente embebidas en esta aplicación ahora están disponibles "
1974"como una descarga separada. Le gustaría descargar el paquete de fuentes "
1975"\"Conjunto Clásico\" ahora?"
1976
1977msgid "prefs.font.ui"
1978msgstr "IU:"
1979
1980msgid "prefs.font.heading"
1981msgstr "Titulares:"
1982
1983msgid "prefs.font.body"
1984msgstr "Cuerpo:"
1985
1986msgid "prefs.font.mono"
1987msgstr "Pre-formateado:"
1988
1989# Font to use for headings and body when Monospace body is enabled.
1990msgid "prefs.font.monodoc"
1991msgstr "Fuente mono-espaciada:"
1992
1993msgid "prefs.boldlink.visited"
1994msgstr "Visitado"
1995
1996msgid "prefs.gemtext.ansi"
1997msgstr "Escapes ANSI:"
1998
1999msgid "prefs.gemtext.ansi.fg"
2000msgstr "Color de Frente"
2001
2002msgid "prefs.gemtext.ansi.fontstyle"
2003msgstr "Estilo de Fuente"
2004
2005msgid "prefs.font.warnmissing"
2006msgstr "Advertencias por glifos:"
2007
2008msgid "prefs.font.smooth"
2009msgstr "Suavizado:"
2010
2011#, c-format
2012msgid "dlg.fontpack.delete.confirm"
2013msgstr "De verdad quiere borrar el paquete de fuentes \"%s\" permanentemente?"
2014
2015msgid "dlg.fontpack.delete"
2016msgstr "Borrar Paquete de Fuentes"
2017
2018msgid "fontpack.help"
2019msgstr ""
2020"Los paquetes de fuentes de Lagrange son archivos ZIP que contienen un "
2021"conjunto de archivos de fuentes y parámetros de configuración asociados. Una "
2022"vez instaladas, las fuentes se pueden usar para mostrar documentos y la "
2023"interfaz de usuario. Las fuentes activas se seleccionan en Preferencias > "
2024"Fuentes."
2025
2026msgid "fontpack.install.ttf"
2027msgstr "Instalar Fuente TrueType"
2028
2029msgid "fontpack.open.fontsdir"
2030msgstr "Abrir Directorio de Fuentes del Usuario"
2031
2032msgid "fontpack.open.aboutfonts"
2033msgstr "Mostrar Fuentes Instaladas"
2034
2035msgid "truetype.help"
2036msgstr ""
2037"Lagrange intenta cargar todas las fuentes TrueType individuales que estén "
2038"copiadas en el directorio de fuentes del usuario."
2039
2040msgid "truetype.help.installed"
2041msgstr "Esta fuente está instalada en el directorio de fuentes del usuario."
2042
2043msgid "heading.dismiss.warning"
2044msgstr "DESCARTAR ADVERTENCIA?"
2045
2046#, c-format
2047msgid "dlg.dismiss.ansi"
2048msgstr ""
2049"¿Descartar advertencia sobre emulación de terminal en %s permanentemente?"
2050
2051msgid "dlg.dismiss.warning"
2052msgstr "Descartar Advertencia"
2053
2054msgid "menu.website"
2055msgstr "Sitio Web del Proyecto…"
2056
2057msgid "menu.fonts"
2058msgstr "Administrar Fuentes…"
2059
2060msgid "num.files"
2061msgid_plural "num.files.n"
2062msgstr[0] "%zu archivo"
2063msgstr[1] "%zu archivos"
2064
2065msgid "num.fonts"
2066msgid_plural "num.fonts.n"
2067msgstr[0] "%zu fuente"
2068msgstr[1] "%zu fuentes"
2069
2070msgid "dlg.certwarn.title"
2071msgstr "Incidencia de Seguridad"
2072
2073msgid "error.glyphs"
2074msgstr "Glifos Faltantes"
2075
2076msgid "error.glyphs.msg"
2077msgstr ""
2078"Esta página no se pudo mostrar completa porque faltan algunos caracteres. "
2079"Puede instalar fuentes adicionales para solventar esto."
2080
2081msgid "heading.fontpack.meta"
2082msgstr "Fuentes"
2083
2084msgid "heading.fontpack.meta.enabled"
2085msgstr "Paquetes de fuentes activados"
2086
2087msgid "heading.fontpack.meta.disabled"
2088msgstr "Paquetes de fuentes desactivados"
2089
2090# Action label
2091msgid "fontpack.meta.viewfile"
2092msgstr "Ver archivo"
2093
2094#, c-format
2095msgid "fontpack.meta.version"
2096msgstr "Versión %d"
2097
2098msgid "fontpack.meta.installed"
2099msgstr "Instalado"
2100
2101msgid "fontpack.meta.notinstalled"
2102msgstr "No instalado"
2103
2104msgid "fontpack.meta.disabled"
2105msgstr ", desactivado"
2106
2107#, c-format
2108msgid "fontpack.enable"
2109msgstr "Activar \"%s\""
2110
2111#, c-format
2112msgid "fontpack.disable"
2113msgstr "Desactivar \"%s\""
2114
2115#, c-format
2116msgid "fontpack.install"
2117msgstr "Instalar \"%s\""
2118
2119#, c-format
2120msgid "fontpack.upgrade"
2121msgstr "Actualizar \"%s\" a la versión %d"
2122
2123#, c-format
2124msgid "fontpack.delete"
2125msgstr "Borrar \"%s\" permanentemente"
2126
2127msgid "heading.fontpack.delete"
2128msgstr "BORRAR PAQUETE DE FUENTES"
2129
2130msgid "lang.uk"
2131msgstr "Ucraniano"
diff --git a/po/fi.po b/po/fi.po
index 310b91d6..848bb836 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -3,7 +3,7 @@ msgstr ""
3"Project-Id-Version: PACKAGE VERSION\n" 3"Project-Id-Version: PACKAGE VERSION\n"
4"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 4"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
5"POT-Creation-Date: 2021-03-23 09:09+0000\n" 5"POT-Creation-Date: 2021-03-23 09:09+0000\n"
6"PO-Revision-Date: 2021-10-30 06:17+0000\n" 6"PO-Revision-Date: 2021-11-02 23:51+0000\n"
7"Last-Translator: Weblate Admin <jaakko.keranen@iki.fi>\n" 7"Last-Translator: Weblate Admin <jaakko.keranen@iki.fi>\n"
8"Language-Team: Finnish <http://weblate.skyjake.fi/projects/lagrange/ui/fi/>\n" 8"Language-Team: Finnish <http://weblate.skyjake.fi/projects/lagrange/ui/fi/>\n"
9"Language: fi\n" 9"Language: fi\n"
@@ -2113,3 +2113,6 @@ msgid "dlg.fontpack.classic.msg"
2113msgstr "" 2113msgstr ""
2114"Aiemmin sovelluksen kanssa tulleet fontit ovat nyt saatavilla erillisenä " 2114"Aiemmin sovelluksen kanssa tulleet fontit ovat nyt saatavilla erillisenä "
2115"latauksena. Haluaisitko ladata Classic set -fonttipaketin nyt?" 2115"latauksena. Haluaisitko ladata Classic set -fonttipaketin nyt?"
2116
2117msgid "lang.uk"
2118msgstr "Ukraina"
diff --git a/po/gl.po b/po/gl.po
index 5958fd84..ea1bb6f7 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -1,7 +1,7 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-10-30 06:15+0000\n" 4"PO-Revision-Date: 2021-11-02 23:51+0000\n"
5"Last-Translator: Xosé M. <correoxm@disroot.org>\n" 5"Last-Translator: Xosé M. <correoxm@disroot.org>\n"
6"Language-Team: Galician <http://weblate.skyjake.fi/projects/lagrange/ui/gl/>" 6"Language-Team: Galician <http://weblate.skyjake.fi/projects/lagrange/ui/gl/>"
7"\n" 7"\n"
@@ -2116,3 +2116,6 @@ msgstr ""
2116 2116
2117msgid "dlg.dismiss.warning" 2117msgid "dlg.dismiss.warning"
2118msgstr "Desbotar aviso" 2118msgstr "Desbotar aviso"
2119
2120msgid "lang.uk"
2121msgstr "Ucraniano"
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 00000000..42d74483
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,2111 @@
1msgid ""
2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-11-04 13:12+0000\n"
5"Last-Translator: Botond Balázs <balazsbotond@gmail.com>\n"
6"Language-Team: Hungarian <http://weblate.skyjake.fi/projects/lagrange/ui/hu/>"
7"\n"
8"Language: hu\n"
9"MIME-Version: 1.0\n"
10"Content-Type: text/plain; charset=UTF-8\n"
11"Content-Transfer-Encoding: 8bit\n"
12"Plural-Forms: nplurals=2; plural=n != 1;\n"
13"X-Generator: Weblate 4.5.1\n"
14
15msgid "heading.fontpack.meta"
16msgstr "Betűtípusok"
17
18#, c-format
19msgid "fontpack.meta.version"
20msgstr "%d verzió"
21
22#, c-format
23msgid "fontpack.disable"
24msgstr "\"%s\" letiltása"
25
26#, c-format
27msgid "fontpack.delete"
28msgstr "\"%s\" végleges törlése"
29
30msgid "fontpack.open.aboutfonts"
31msgstr "Telepített betűtípusok megtekintése"
32
33msgid "truetype.help"
34msgstr ""
35"A Lagrange megpróbálja az összes különálló TrueType fájlt a felhasználói "
36"betűtípusmappából."
37
38msgid "truetype.help.installed"
39msgstr "Ez a font a felhasználói betűtípusmappába van telepítve."
40
41#, c-format
42msgid "dlg.dismiss.ansi"
43msgstr ""
44"Véglegesen figyelmen kívül hagyja a terminálemulációval kapcsolatos "
45"figyelmeztetést a(z) %s oldalon?"
46
47msgid "heading.fontpack.classic"
48msgstr "BETŰTÍPUSKÉSZLET LETÖLTÉSE"
49
50msgid "dlg.fontpack.classic.msg"
51msgstr ""
52"A korábban az alkalmazás részeként elérhető betűtípusok most külön "
53"letöltésként érhetők el. Szeretné letölteni a \"Classic set\" "
54"betűtípuskészletet?"
55
56msgid "heading.fontpack.meta.enabled"
57msgstr "Engedélyezett betűtípuskészletek"
58
59#, c-format
60msgid "dlg.fontpack.delete.confirm"
61msgstr "Valóban törli a \"%s\" betűtípuskészletet?"
62
63msgid "fontpack.help"
64msgstr ""
65"A Lagrange betűtípuskészletei betűtípusfájlokat és kapcsolódó konfigurációs "
66"paramétereket tartalmazó ZIP archívumok. Telepítés után a tartalomhoz és a "
67"felhasználói felületen is használhatók. A betűtípusokat a Beállítások > "
68"Betűtípusok lapon lehet kiválasztani."
69
70# Link download progress message.
71msgid "doc.fetching"
72msgstr "Betöltés"
73
74msgid "doc.archive.view"
75msgstr "Archívum tartalmának megtekintése"
76
77msgid "media.untitled.image"
78msgstr "Kép"
79
80msgid "media.untitled.audio"
81msgstr "Hang"
82
83# Inline download status message.
84msgid "media.download.warnclose"
85msgstr "A fül bezárásakor megszakad a letöltés."
86
87# Inline download status message.
88msgid "media.download.complete"
89msgstr "Letöltés befejezve."
90
91# Used in inline audio player metadata popup.
92msgid "audio.meta.artist"
93msgstr "Előadó"
94
95# Used in inline audio player metadata popup.
96msgid "audio.meta.genre"
97msgstr "Műfaj"
98
99# Used in inline audio player metadata popup.
100msgid "audio.meta.date"
101msgstr "Dátum"
102
103# used as adjective, n is 8, 16, 24, 32, or 64
104#, c-format
105msgid "n.bit"
106msgstr "%d-bites"
107
108msgid "numbertype.integer"
109msgstr "egész szám"
110
111# Hertz, unit for frequency values
112msgid "hz"
113msgstr "Hz"
114
115# Used in about:feeds.
116msgid "feeds.list.title"
117msgstr "Hírfolyam bejegyzései"
118
119#, c-format
120msgid "feeds.list.entrycount"
121msgid_plural "feeds.list.entrycount.n"
122msgstr[0] "összesen %zu bejegyzés"
123msgstr[1] "összesen %zu bejegyzés"
124
125msgid "feeds.list.refreshtime.now"
126msgstr "Az utolsó frissítés pillanatokkal ezelőtt történt."
127
128#, c-format
129msgid "feeds.list.refreshtime"
130msgstr "Utolsó frissítés: %s."
131
132#, c-format
133msgid "minutes.ago"
134msgid_plural "minutes.ago.n"
135msgstr[0] "%d perce"
136msgstr[1] "%d perce"
137
138#, c-format
139msgid "days.ago"
140msgid_plural "days.ago.n"
141msgstr[0] "%d napja"
142msgstr[1] "%d napja"
143
144msgid "about.tagline"
145msgstr "Egy tetszetős Gemini-kliens"
146
147msgid "about.version"
148msgstr "Verzió"
149
150msgid "about.powered"
151msgstr "Készült az SDL 2, az OpenSSL, és némi ☕️ felhasználásával"
152
153msgid "cancel"
154msgstr "Mégse"
155
156msgid "dlg.message.ok"
157msgstr "Folytatás"
158
159msgid "close"
160msgstr "Bezárás"
161
162msgid "dlg.default"
163msgstr " OK "
164
165msgid "toggle.yes"
166msgstr "IGEN"
167
168msgid "toggle.no"
169msgstr "NEM"
170
171msgid "menu.title.view"
172msgstr "Nézet"
173
174msgid "menu.title.bookmarks"
175msgstr "Könyvjelzők"
176
177msgid "menu.title.identity"
178msgstr "Identitás"
179
180msgid "menu.title.help"
181msgstr "Súgó"
182
183msgid "menu.closetab"
184msgstr "Lap bezárása"
185
186msgid "menu.newtab"
187msgstr "Új lap"
188
189msgid "menu.closetab.left"
190msgstr "Balra lévő lapok bezárása"
191
192msgid "menu.closetab.right"
193msgstr "Jobbra lévő lapok bezárása"
194
195msgid "menu.duptab"
196msgstr "Másodpéldány"
197
198msgid "menu.split.swap"
199msgstr "Oldalak felcserélése"
200
201msgid "menu.split.horizontal"
202msgstr "Vízszintes"
203
204msgid "menu.split.vertical"
205msgstr "Függőleges"
206
207msgid "menu.openlocation"
208msgstr "Hely megnyitása…"
209
210msgid "menu.downloads"
211msgstr "Letöltések mappa megnyitása"
212
213msgid "menu.unexpire"
214msgstr "Betöltés folytatása a lejárat figyelmen kívül hagyásával"
215
216msgid "menu.find"
217msgstr "Keresés az oldalon"
218
219msgid "macos.menu.find"
220msgstr "Keresés"
221
222msgid "menu.save.downloads.open"
223msgstr "Mentés a Letöltések mappába, majd megnyitás"
224
225msgid "menu.sidebar"
226msgstr "Oldalsáv ki/bekapcsolása"
227
228msgid "menu.sidebar.left"
229msgstr "Bal oldalsáv ki/bekapcsolása"
230
231msgid "menu.zoom.in"
232msgstr "Nagyítás"
233
234msgid "menu.zoom.out"
235msgstr "Kicsinyítés"
236
237msgid "menu.zoom.reset"
238msgstr "Eredeti méret"
239
240msgid "menu.view.split"
241msgstr "Osztott nézet…"
242
243msgid "menu.newfolder"
244msgstr "Új mappa…"
245
246msgid "menu.sort.alpha"
247msgstr "Rendezés betűrendben"
248
249msgid "menu.bookmarks.list"
250msgstr "Összes könyvjelző listázása"
251
252msgid "macos.menu.bookmarks.list"
253msgstr "Összes listázása"
254
255msgid "macos.menu.bookmarks.bytag"
256msgstr "Listázás címkék szerint"
257
258msgid "menu.bookmarks.bytime"
259msgstr "Könyvjelzők listázása a létrehozás időrendjében"
260
261msgid "macos.menu.bookmarks.bytime"
262msgstr "Listázás a létrehozás időrendjében"
263
264msgid "menu.feeds.entrylist"
265msgstr "Hírfolyam bejegyzéseinek megtekintése"
266
267msgid "menu.preferences"
268msgstr "Beállítások…"
269
270msgid "menu.help"
271msgstr "Súgó"
272
273msgid "menu.releasenotes"
274msgstr "Újdonságok"
275
276msgid "menu.website"
277msgstr "A projekt weboldala…"
278
279msgid "menu.quit"
280msgstr "Kilépés a Lagrange-ból"
281
282msgid "menu.cut"
283msgstr "Kivágás"
284
285msgid "menu.copy"
286msgstr "Másolás"
287
288msgid "menu.paste"
289msgstr "Beillesztés"
290
291# keep this short (3x1 horiz layout)
292msgid "menu.delete"
293msgstr "Törlés"
294
295# keep this short (3x1 horiz layout)
296msgid "menu.undo"
297msgstr "Visszavonás"
298
299msgid "menu.select.clear"
300msgstr "Kijelölés törlése"
301
302# Used in the Edit menu on macOS. Note: could be replaced with menu.page.copyurl.
303msgid "menu.copy.pagelink"
304msgstr "Hivatkozás másolása"
305
306# Used in the View menu on macOS. Shows sidebar and switches sidebar tab.
307msgid "menu.show.bookmarks"
308msgstr "Könyvjelzők megjelenítése"
309
310# Used in the View menu on macOS. Shows sidebar and switches sidebar tab.
311msgid "menu.show.history"
312msgstr "Előzmények megjelenítése"
313
314# Used in the View menu on macOS. Shows sidebar and switches sidebar tab.
315msgid "menu.show.outline"
316msgstr "Tartalomjegyzék megjelenítése"
317
318msgid "menu.back"
319msgstr "Vissza"
320
321msgid "menu.forward"
322msgstr "Tovább"
323
324msgid "menu.parent"
325msgstr "Fel"
326
327msgid "menu.root"
328msgstr "Gyökérhez"
329
330msgid "menu.reload"
331msgstr "Oldal újratöltése"
332
333msgid "menu.page.bookmark"
334msgstr "Könyvjelző létrehozása…"
335
336msgid "menu.page.subscribe"
337msgstr "Feliratkozás az oldalra…"
338
339msgid "menu.aboutpages"
340msgstr "Az oldalakról"
341
342msgid "menu.about"
343msgstr "Névjegy"
344
345msgid "menu.fonts"
346msgstr "Betűtípusok beállítása…"
347
348msgid "panel.back"
349msgstr "Vissza"
350
351msgid "menu.import.links"
352msgstr "Összes hivatkozás importálása az oldalról…"
353
354msgid "menu.page.translate"
355msgstr "Fordítás…"
356
357msgid "menu.page.copyurl"
358msgstr "Oldal címének másolása"
359
360msgid "menu.page.copysource"
361msgstr "Oldal forrásának másolása"
362
363msgid "menu.bookmarks.refresh"
364msgstr "Távoli könyvjelzők frissítése"
365
366msgid "menu.feeds.refresh"
367msgstr "Hírfolyamok frissítése"
368
369msgid "menu.identity.new"
370msgstr "Új identitás…"
371
372msgid "menu.identity.notactive"
373msgstr "Nincs identitás kiválasztva"
374
375msgid "sidebar.bookmarks"
376msgstr "Könyvjelzők"
377
378msgid "sidebar.feeds"
379msgstr "Hírfolyamok"
380
381msgid "sidebar.history"
382msgstr "Előzmények"
383
384msgid "sidebar.identities"
385msgstr "Identitások"
386
387msgid "sidebar.outline"
388msgstr "Tartalomjegyzék"
389
390msgid "sidebar.action.feeds.showall"
391msgstr "Mind"
392
393msgid "sidebar.action.feeds.showunread"
394msgstr "Olvasatlan"
395
396msgid "sidebar.action.ident.new"
397msgstr "Új…"
398
399msgid "sidebar.action.ident.import"
400msgstr "Importálás…"
401
402msgid "toolbar.outline"
403msgstr "Tartalomjegyzék"
404
405msgid "hint.findtext"
406msgstr "szöveg keresése az oldalon"
407
408msgid "status.query"
409msgstr "Keresőkifejezés"
410
411msgid "status.query.tight"
412msgstr "Keresés"
413
414msgid "status.feeds"
415msgstr "Hírfolyamok frissítése"
416
417# kilobytes, used as the unit after a number
418msgid "kb"
419msgstr "KB"
420
421msgid "num.bytes"
422msgid_plural "num.bytes.n"
423msgstr[0] "%zu bájt"
424msgstr[1] "%zu bájt"
425
426msgid "num.files"
427msgid_plural "num.files.n"
428msgstr[0] "%zu fájl"
429msgstr[1] "%zu fájl"
430
431msgid "num.fonts"
432msgid_plural "num.fonts.n"
433msgstr[0] "%zu betűtípus"
434msgstr[1] "%zu betűtípus"
435
436# strftime() formatted
437#, c-format
438msgid "sidebar.date.otheryear"
439msgstr "%b. %d. %Y"
440
441msgid "feeds.today"
442msgstr "Ma"
443
444msgid "feeds.entry.newtab"
445msgstr "Bejegyzés megnyitása új lapon"
446
447msgid "feeds.entry.markread"
448msgstr "Megjelölés olvasottként"
449
450# strftime() formatted
451#, c-format
452msgid "sidebar.date.thisyear"
453msgstr "%b. %d"
454
455msgid "sidebar.entry.bookmark"
456msgstr "Könyvjelző hozzáadása…"
457
458msgid "feeds.entry.bookmark"
459msgstr "Könyvjelző hozzáadása…"
460
461msgid "feeds.entry.openfeed"
462msgstr "Hírfolyamok megnyitása"
463
464msgid "feeds.edit"
465msgstr "Hírfolyam szerkesztése…"
466
467msgid "menu.opentab"
468msgstr "Megnyitás új lapon"
469
470msgid "menu.opentab.background"
471msgstr "Megnyitás új lapon a háttérben"
472
473msgid "menu.openfile"
474msgstr "Fájl megnyitása…"
475
476msgid "menu.edit"
477msgstr "Szerkesztés…"
478
479msgid "menu.dup"
480msgstr "Másodpéldány…"
481
482msgid "menu.copyurl"
483msgstr "Cím másolása"
484
485msgid "menu.forgeturl"
486msgstr "Cím elfelejtése"
487
488msgid "history.clear"
489msgstr "Előzmények törlése…"
490
491msgid "dlg.history.clear"
492msgstr "Előzmények törlése"
493
494msgid "heading.confirm.bookmarks.delete"
495msgstr "KÖNYVJELZŐK TÖRLÉSE"
496
497msgid "bookmark.tag.home"
498msgstr "Beállítás kezdőlapként"
499
500msgid "bookmark.tag.sub"
501msgstr "Feliratkozás a hírfolyamra"
502
503msgid "bookmark.tag.remote"
504msgstr "Használat könyvjelzőforrásként"
505
506msgid "bookmark.tag.linksplit"
507msgstr "Hivatkozások oldalt nyíljanak meg"
508
509msgid "bookmark.untag.sub"
510msgstr "Leiratkozás a hírfolyamról"
511
512msgid "bookmark.delete"
513msgstr "Könyvjelző törlése"
514
515msgid "bookmarks.reload"
516msgstr "Távoli források frissítése"
517
518msgid "ident.using"
519msgstr "Ezen az oldalon használva"
520
521msgid "ident.notused"
522msgstr "Nincs használatban"
523
524#, c-format
525msgid "ident.usedonurls"
526msgid_plural "ident.usedonurls.n"
527msgstr[0] "%zu URL-en használva"
528msgstr[1] "%zu URL-en használva"
529
530msgid "ident.temporary"
531msgstr "Ideiglenes"
532
533msgid "ident.use"
534msgstr "Használat ezen az oldalon"
535
536msgid "ident.stopuse.all"
537msgstr "Ne használja sehol"
538
539msgid "ident.export"
540msgstr "Exportálás"
541
542msgid "heading.ident.use"
543msgstr "IDENTITÁSOK HASZNÁLATA"
544
545msgid "menu.edit.notes"
546msgstr "Jegyzet szerkesztése…"
547
548msgid "heading.ident.notes"
549msgstr "IDENTITÁS JEGYZETE"
550
551# %s refers to name of an identity.
552#, c-format
553msgid "dlg.ident.notes"
554msgstr "%s jegyzetei:"
555
556msgid "ident.fingerprint"
557msgstr "Lenyomat másolása"
558
559msgid "ident.delete"
560msgstr "Identitás törlése…"
561
562msgid "heading.ident.delete"
563msgstr "IDENTITÁS TÖRLÉSE"
564
565msgid "dlg.ident.delete"
566msgstr "Identitás és fájlok törlése"
567
568msgid "sidebar.empty.idents"
569msgstr "Nincs identitás"
570
571msgid "heading.unsub"
572msgstr "LEIRATKOZÁS"
573
574#, c-format
575msgid "dlg.confirm.unsub"
576msgstr "Valóban leiratkozik a(z) \"%s\" hírfolyamról?"
577
578msgid "dlg.unsub"
579msgstr "Leiratkozás"
580
581msgid "error.server.msg"
582msgstr "A szerver a következő üzenettel válaszolt:"
583
584msgid "heading.pageinfo"
585msgstr "OLDALINFORMÁCIÓ"
586
587msgid "pageinfo.header.cached"
588msgstr "(tartalom gyorsítótárból)"
589
590msgid "pageinfo.cert.status"
591msgstr "Tanúsítvány státusza:"
592
593msgid "pageinfo.cert.ca.unverified"
594msgstr "CA által nem ellenőrizve"
595
596msgid "pageinfo.cert.notexpired"
597msgstr "Nem járt le"
598
599msgid "pageinfo.cert.expired"
600msgstr "Lejárt"
601
602msgid "pageinfo.cert.untrusted"
603msgstr "Nem megbízható"
604
605msgid "pageinfo.domain.match"
606msgstr "Domain név egyezik"
607
608msgid "pageinfo.domain.mismatch"
609msgstr "Domain név nem egyezik"
610
611msgid "dlg.cert.trust"
612msgstr "Bizalom"
613
614#, c-format
615msgid "dlg.input.prompt"
616msgstr "Bemenet a %s részére:"
617
618msgid "dlg.input.linebreak"
619msgstr "Sortörés"
620
621msgid "heading.save"
622msgstr "FÁJL ELMENTVE"
623
624msgid "heading.save.incomplete"
625msgstr "HIÁNYOS OLDAL"
626
627msgid "dlg.save.incomplete"
628msgstr "Az oldal tartalma még töltődik."
629
630msgid "dlg.save.opendownload"
631msgstr "Letöltött fájl megnyitása"
632
633msgid "heading.save.error"
634msgstr "HIBA FÁJL MENTÉSEKOR"
635
636#, c-format
637msgid "dlg.import.add"
638msgid_plural "dlg.import.add.n"
639msgstr[0] "%sKönyvjelző hozzáadása"
640msgstr[1] "%s%d könyvjelző hozzáadása"
641
642msgid "heading.autoreload"
643msgstr "AUTOMATIKUS ÚJRATÖLTÉS"
644
645msgid "dlg.autoreload"
646msgstr "Válassza ki, milyen időközönként töltődjön újra ez a lap."
647
648msgid "reload.never"
649msgstr "Soha"
650
651msgid "reload.onceperday"
652msgstr "Naponta"
653
654#, c-format
655msgid "num.minutes"
656msgid_plural "num.minutes.n"
657msgstr[0] "%d percenként"
658msgstr[1] "%d percenként"
659
660msgid "link.newtab.background"
661msgstr "Hivatkozás megnyitása új lapon a háttérben"
662
663msgid "link.side"
664msgstr "Hivatkozás megnyitása oldalt"
665
666msgid "link.side.newtab"
667msgstr "Hivatkozás megnyitása új lapon, oldalt"
668
669msgid "link.noproxy"
670msgstr "Megnyitás proxy nélkül"
671
672msgid "link.copy"
673msgstr "Hivatkozás másolása"
674
675msgid "link.download"
676msgstr "Hivatkozott fájl letöltése"
677
678msgid "heading.file.delete"
679msgstr "FÁJL TÖRLÉSE"
680
681msgid "dlg.file.delete"
682msgstr "Törlés"
683
684msgid "heading.openlink"
685msgstr "HIVATKOZÁS MEGNYITÁSA"
686
687msgid "dlg.openlink"
688msgstr "Hivatkozás megnyitása"
689
690msgid "dlg.certwarn.title"
691msgstr "Biztonsági probléma"
692
693msgid "dlg.certwarn.domain"
694msgstr ""
695"A szervertől kapott tanúsítvány rossz domainhez tartozik (%s). Ezt "
696"szerverkonfigurációs probléma okozhatja."
697
698msgid "heading.certimport"
699msgstr "IDENTITÁS IMPORTÁLÁSA"
700
701msgid "dlg.certimport.notfound"
702msgstr "Nem található tanúsítvány vagy privát kulcs."
703
704msgid "dlg.certimport.notfound.page"
705msgstr "Az oldalhoz nem található tanúsítvány/privát kulcs."
706
707msgid "heading.certimport.pasted"
708msgstr "VÁGÓLAPRÓL BEILLESZTVE"
709
710msgid "heading.certimport.dropped"
711msgstr "BEHÚZOTT FÁJL"
712
713msgid "dlg.certimport.import"
714msgstr "Importálás"
715
716msgid "dlg.certimport.notes"
717msgstr "Jegyzet:"
718
719msgid "hint.certimport.description"
720msgstr "leírás"
721
722msgid "dlg.certimport.nocert"
723msgstr "Nincs tanúsítvány"
724
725msgid "dlg.certimport.nokey"
726msgstr "Nincs privát kulcs"
727
728msgid "link.hint.audio"
729msgstr "Hang lejátszása"
730
731msgid "link.hint.image"
732msgstr "Kép megtekintése"
733
734msgid "bookmark.export.title.folder"
735msgstr "Könyvjelzők"
736
737msgid "bookmark.export.title.tag"
738msgstr "Könyvjelzőcímkék"
739
740msgid "bookmark.export.format.sub"
741msgstr ""
742"Az oldal formátuma megfelel a \"Feliratkozás Gemini oldalakra\" "
743"társspecifikáció előírásainak."
744
745msgid "bookmark.export.format.folders"
746msgstr "A mappaszerkezetet a 2. és 3. szintű fejezetcímek határozzák meg."
747
748msgid "bookmark.export.format.tags"
749msgstr "A címkéket a 2. szintű fejezetcímek határozzák meg."
750
751# Interpret as "Results from bookmarks..."
752msgid "heading.lookup.bookmarks"
753msgstr "KÖNYVJELZŐK"
754
755# Interpret as "Results from history..."
756msgid "heading.lookup.history"
757msgstr "ELŐZMÉNYEK"
758
759# Interpret as "Results from page content..."
760msgid "heading.lookup.pagecontent"
761msgstr "OLDAL TARTALMÁBÓL"
762
763# Interpret as "Other results..."
764msgid "heading.lookup.other"
765msgstr "EGYÉB HELYRŐL"
766
767msgid "menu.page.upload"
768msgstr "Oldal feltöltése Titan protokollal…"
769
770msgid "heading.upload"
771msgstr "FELTÖLTÉS TITAN PROTOKOLLAL"
772
773msgid "upload.id"
774msgstr "Identitás:"
775
776msgid "dlg.upload.id.none"
777msgstr "Nincs"
778
779msgid "heading.upload.text"
780msgstr "Szöveg"
781
782msgid "hint.upload.text"
783msgstr "írja be a feltöltendő szöveget"
784
785msgid "upload.file.name"
786msgstr "Fájlnév:"
787
788msgid "upload.file.drophere"
789msgstr "(húzzon egy fájlt az egérrel ebbe az ablakba)"
790
791msgid "upload.file.size"
792msgstr "Fájlméret:"
793
794msgid "upload.mime"
795msgstr "MIME-típus:"
796
797msgid "upload.token"
798msgstr "Token:"
799
800msgid "upload.port"
801msgstr "Port…"
802
803msgid "heading.uploadport"
804msgstr "TITAN FELTÖLTÉSI PORT"
805
806msgid "dlg.uploadport.set"
807msgstr "Port beállítása"
808
809# used on mobile
810msgid "dlg.upload.text"
811msgstr "Egyszerű szöveg feltöltése"
812
813# used on mobile
814msgid "dlg.upload.file"
815msgstr "Fájl feltöltése"
816
817# used on mobile
818msgid "dlg.upload.pickfile"
819msgstr "Fájl kiválasztása"
820
821msgid "dlg.translate.fail"
822msgstr "Sikertelen kérés"
823
824msgid "dlg.translate"
825msgstr "Fordítás"
826
827msgid "dlg.translate.from"
828msgstr "Forrásnyelv:"
829
830msgid "dlg.translate.to"
831msgstr "Célnyelv:"
832
833msgid "lang.zh"
834msgstr "Kínai"
835
836msgid "lang.zh.hans"
837msgstr "Kínai (egyszerűsített)"
838
839msgid "lang.zh.hant"
840msgstr "Kínai (hagyományos)"
841
842msgid "lang.de"
843msgstr "Német"
844
845msgid "lang.ia"
846msgstr "Interlingua"
847
848msgid "lang.ie"
849msgstr "Interlingue"
850
851msgid "lang.fi"
852msgstr "Finn"
853
854msgid "lang.fr"
855msgstr "Francia"
856
857msgid "lang.gl"
858msgstr "Galíciai"
859
860msgid "lang.hi"
861msgstr "Hindi"
862
863msgid "lang.it"
864msgstr "Olasz"
865
866msgid "lang.ja"
867msgstr "Japán"
868
869msgid "lang.pl"
870msgstr "Lengyel"
871
872msgid "lang.ru"
873msgstr "Orosz"
874
875msgid "lang.uk"
876msgstr "Ukrán"
877
878msgid "lang.eo"
879msgstr "Eszperantó"
880
881msgid "lang.es"
882msgstr "Spanyol"
883
884msgid "lang.sr"
885msgstr "Szerb"
886
887msgid "lang.isv"
888msgstr "Interszláv"
889
890msgid "lang.tok"
891msgstr "Toki Pona"
892
893msgid "dlg.newident.rsa.selfsign"
894msgstr "Önaláírt 2048-bites RSA tanúsítvány létrehozása."
895
896msgid "dlg.newident.until"
897msgstr "Érvényesség:"
898
899msgid "hint.newident.optional"
900msgstr "nem kötelező"
901
902msgid "dlg.newident.commonname"
903msgstr "Általános név (CN):"
904
905msgid "dlg.newident.temp"
906msgstr "Ideiglenes:"
907
908msgid "dlg.newident.scope"
909msgstr "Használat itt:"
910
911msgid "dlg.newident.scope.domain"
912msgstr "Jelenlegi domain"
913
914msgid "dlg.newident.scope.none"
915msgstr "Nincs használatban"
916
917msgid "dlg.newident.email"
918msgstr "E-mail:"
919
920msgid "dlg.newident.domain"
921msgstr "Domain:"
922
923msgid "dlg.newident.org"
924msgstr "Szervezet:"
925
926msgid "dlg.newident.country"
927msgstr "Ország:"
928
929msgid "dlg.newident.more"
930msgstr "Egyéb…"
931
932msgid "heading.newident.date.bad"
933msgstr "ÉRVÉNYTELEN DÁTUM"
934
935msgid "dlg.newident.date.past"
936msgstr "A lejárati dátum csak jövőbeli lehet."
937
938msgid "heading.feedcfg"
939msgstr "HÍRFOLYAM BEÁLLÍTÁSAI"
940
941msgid "dlg.feed.title"
942msgstr "Cím:"
943
944msgid "dlg.feed.entrytype"
945msgstr "Bejegyzés típusa:"
946
947msgid "dlg.feed.type.gemini"
948msgstr "ÉÉÉÉ-HH-NN hivatkozások"
949
950msgid "dlg.feed.save"
951msgstr "Beállítások mentése"
952
953msgid "dlg.feed.sub"
954msgstr "Feliratkozás"
955
956msgid "heading.bookmark.add"
957msgstr "KÖNYVJELZŐ HOZZÁADÁSA"
958
959msgid "heading.bookmark.edit"
960msgstr "KÖNYVJELZŐ SZERKESZTÉSE"
961
962msgid "dlg.bookmark.save"
963msgstr "Könyvjelző mentése"
964
965msgid "dlg.bookmark.title"
966msgstr "Cím:"
967
968msgid "dlg.bookmark.url"
969msgstr "URL:"
970
971msgid "dlg.bookmark.tags"
972msgstr "Címkék:"
973
974msgid "dlg.bookmark.icon"
975msgstr "Ikon:"
976
977msgid "heading.addfolder"
978msgstr "MAPPA HOZZÁADÁSA"
979
980msgid "dlg.addfolder.defaulttitle"
981msgstr "Új mappa"
982
983msgid "dlg.addfolder.prompt"
984msgstr "Írja be az új mappa nevét:"
985
986msgid "dlg.addfolder"
987msgstr "Új mappa"
988
989msgid "heading.prefs"
990msgstr "BEÁLLÍTÁSOK"
991
992# used on mobile
993msgid "heading.settings"
994msgstr "BEÁLLÍTÁSOK"
995
996msgid "heading.prefs.certs"
997msgstr "TANÚSÍTVÁNYOK"
998
999msgid "heading.prefs.fonts"
1000msgstr "Betűtípusok"
1001
1002# tab button
1003msgid "heading.prefs.general"
1004msgstr "Általános"
1005
1006# tab button
1007msgid "heading.prefs.interface"
1008msgstr "Felhasználói felület"
1009
1010# tab button
1011msgid "heading.prefs.keys"
1012msgstr "Billentyűk"
1013
1014msgid "heading.prefs.paragraph"
1015msgstr "BEKEZDÉS"
1016
1017msgid "heading.prefs.pagecontent"
1018msgstr "OLDAL SZÍNEI"
1019
1020msgid "heading.prefs.proxies"
1021msgstr "PROXYK"
1022
1023msgid "heading.prefs.scrolling"
1024msgstr "GÖRGETÉS"
1025
1026msgid "heading.prefs.sizing"
1027msgstr "MÉRETEZÉS"
1028
1029msgid "heading.prefs.widelayout"
1030msgstr "SZÉLES ELRENDEZÉS"
1031
1032# tab button
1033msgid "heading.prefs.style"
1034msgstr "Stílus"
1035
1036# tab button
1037msgid "heading.prefs.userinterface"
1038msgstr "Felhasználói felület"
1039
1040msgid "prefs.searchurl"
1041msgstr "Kereső URL:"
1042
1043msgid "prefs.hoverlink"
1044msgstr "URL megjelenítése, ha az egér a link felett van:"
1045
1046msgid "prefs.centershort"
1047msgstr "Függőleges középre igazítás:"
1048
1049msgid "prefs.bookmarks.addbottom"
1050msgstr "Könyvjelzők hozzáadása alulra:"
1051
1052msgid "prefs.pinsplit"
1053msgstr "Linkek megnyitása osztott nézetben:"
1054
1055msgid "prefs.pinsplit.none"
1056msgstr "Nincs"
1057
1058msgid "prefs.pinsplit.left"
1059msgstr "Bal lap"
1060
1061msgid "prefs.pinsplit.right"
1062msgstr "Jobb lap"
1063
1064msgid "prefs.smoothscroll"
1065msgstr "Fokozatmentes görgetés:"
1066
1067msgid "prefs.scrollspeed.mouse"
1068msgstr "Egeres görgetés sebessége:"
1069
1070msgid "prefs.imageloadscroll"
1071msgstr "Kép betöltése görgetéskor:"
1072
1073msgid "prefs.ostheme"
1074msgstr "Rendszertéma használata:"
1075
1076msgid "prefs.theme"
1077msgstr "Téma:"
1078
1079msgid "prefs.theme.black"
1080msgstr "Fekete"
1081
1082msgid "prefs.theme.light"
1083msgstr "Világos"
1084
1085msgid "prefs.theme.white"
1086msgstr "Fehér"
1087
1088msgid "prefs.accent"
1089msgstr "Hangsúlyszín:"
1090
1091msgid "prefs.accent.teal"
1092msgstr "Türkiz"
1093
1094msgid "prefs.accent.orange"
1095msgstr "Narancssárga"
1096
1097msgid "prefs.uilang"
1098msgstr "Nyelv:"
1099
1100msgid "prefs.returnkey"
1101msgstr "Enter billentyű viselkedése:"
1102
1103msgid "prefs.returnkey.linebreak"
1104msgstr "Sortörés"
1105
1106msgid "prefs.returnkey.accept"
1107msgstr "Elfogadás"
1108
1109msgid "prefs.animate"
1110msgstr "Animációk:"
1111
1112msgid "prefs.retainwindow"
1113msgstr "Elhelyezés megtartása:"
1114
1115msgid "prefs.sideicon"
1116msgstr "Kapszulaikon:"
1117
1118msgid "prefs.doctheme.light"
1119msgstr "Világos téma:"
1120
1121msgid "prefs.doctheme.name.colorfuldark"
1122msgstr "Színes sötét"
1123
1124msgid "prefs.doctheme.name.colorfullight"
1125msgstr "Színes világos"
1126
1127msgid "prefs.doctheme.name.black"
1128msgstr "Fekete"
1129
1130msgid "prefs.doctheme.name.gray"
1131msgstr "Szürke"
1132
1133msgid "prefs.doctheme.name.white"
1134msgstr "Fehér"
1135
1136msgid "prefs.doctheme.name.sepia"
1137msgstr "Szépia"
1138
1139msgid "prefs.doctheme.name.highcontrast"
1140msgstr "Nagy kontraszt"
1141
1142msgid "prefs.saturation"
1143msgstr "Telítettség:"
1144
1145msgid "prefs.imagestyle"
1146msgstr "Képek színezése:"
1147
1148msgid "prefs.imagestyle.original"
1149msgstr "Nincs"
1150
1151msgid "prefs.imagestyle.grayscale"
1152msgstr "Szürkeárnyalatos"
1153
1154msgid "prefs.imagestyle.text"
1155msgstr "Szövegszín"
1156
1157msgid "prefs.imagestyle.preformat"
1158msgstr "Előreformázott blokkok színe"
1159
1160msgid "prefs.font.ui"
1161msgstr "Felhasználói felület:"
1162
1163msgid "prefs.font.heading"
1164msgstr "Fejezetcímek:"
1165
1166msgid "prefs.font.body"
1167msgstr "Szövegtörzs:"
1168
1169msgid "prefs.font.mono"
1170msgstr "Előreformázott:"
1171
1172msgid "prefs.font"
1173msgstr "Szövegtörzs betűtípusa:"
1174
1175# Font to use for headings and body when Monospace body is enabled.
1176msgid "prefs.font.monodoc"
1177msgstr "Fix szélességű betűtípus:"
1178
1179msgid "prefs.mono.gemini"
1180msgstr "Gemini"
1181
1182msgid "prefs.mono.gopher"
1183msgstr "Gopher"
1184
1185msgid "prefs.boldlink"
1186msgstr "Félkövér hivatkozások:"
1187
1188msgid "prefs.boldlink.visited"
1189msgstr "Meglátogatott"
1190
1191# Interpretation: (Bold links) on light (background).
1192msgid "prefs.boldlink.light"
1193msgstr "Világos háttéren"
1194
1195msgid "prefs.gemtext.ansi"
1196msgstr "ANSI escape szekvenciák:"
1197
1198msgid "prefs.gemtext.ansi.fg"
1199msgstr "Előtér színe"
1200
1201msgid "prefs.gemtext.ansi.fontstyle"
1202msgstr "Betűstílus"
1203
1204msgid "prefs.font.warnmissing"
1205msgstr "Figyelmeztetés hiányzó karakterekre:"
1206
1207msgid "prefs.font.smooth"
1208msgstr "Élsimítás:"
1209
1210msgid "prefs.linewidth"
1211msgstr "Sorszélesség:"
1212
1213msgid "prefs.linewidth.fill"
1214msgstr "Kitöltés"
1215
1216msgid "prefs.linespacing"
1217msgstr "Sorköz:"
1218
1219msgid "prefs.quoteicon.icon"
1220msgstr "\" ikon"
1221
1222msgid "prefs.biglede"
1223msgstr "Első bekezdés nagyobb méretű:"
1224
1225msgid "prefs.plaintext.wrap"
1226msgstr "Egyszerű szöveg tördelése:"
1227
1228msgid "prefs.decodeurls"
1229msgstr "URL-ek dekódolása:"
1230
1231msgid "prefs.cachesize"
1232msgstr "Gyorsítótár mérete:"
1233
1234msgid "prefs.ca.file"
1235msgstr "CA-fájl:"
1236
1237msgid "prefs.ca.path"
1238msgstr "CA elérési útja:"
1239
1240msgid "prefs.proxy.gemini"
1241msgstr "Gemini proxy:"
1242
1243msgid "prefs.proxy.gopher"
1244msgstr "Gopher proxy:"
1245
1246msgid "prefs.proxy.http"
1247msgstr "HTTP proxy:"
1248
1249msgid "menu.binding.clear"
1250msgstr "Eltávolítás"
1251
1252msgid "archive.exit"
1253msgstr "Kilépés az archívumból"
1254
1255msgid "dir.empty"
1256msgstr "Ez a mappa üres."
1257
1258#, c-format
1259msgid "dir.summary"
1260msgid_plural "dir.summary.n"
1261msgstr[0] "Ez a könyvtár egy elemet tartalmaz."
1262msgstr[1] "Ez a könyvtár %zu elemet tartalmaz."
1263
1264msgid "keys.top"
1265msgstr "Ugrás az oldal tetejére"
1266
1267msgid "keys.bottom"
1268msgstr "Ugrás az oldal aljára"
1269
1270msgid "keys.scroll.up"
1271msgstr "Görgetés fel"
1272
1273msgid "keys.scroll.down"
1274msgstr "Görgetés le"
1275
1276msgid "keys.scroll.halfpage.down"
1277msgstr "Görgetés fél oldallal lejjebb"
1278
1279msgid "keys.scroll.page.down"
1280msgstr "Görgetés egy oldallal lejjebb"
1281
1282msgid "keys.back"
1283msgstr "Vissza"
1284
1285msgid "keys.forward"
1286msgstr "Előre"
1287
1288msgid "keys.parent"
1289msgstr "Ugrás a szülőmappára"
1290
1291msgid "keys.reload"
1292msgstr "Oldal újratöltése"
1293
1294msgid "keys.link.homerow"
1295msgstr "Hivatkozás megnyitása a középső billentyűsorral"
1296
1297msgid "keys.link.homerow.newtab"
1298msgstr "Hivatkozás megnyitása új lapon középső billentyűsorral"
1299
1300msgid "keys.link.homerow.next"
1301msgstr "Következő adag hivatkozás a középső billentűsoron"
1302
1303msgid "keys.bookmark.add"
1304msgstr "Könyvjelző hozzádaása"
1305
1306msgid "keys.bookmark.addfolder"
1307msgstr "Könyvjelzőmappa hozzáadása"
1308
1309msgid "keys.subscribe"
1310msgstr "Feliratkozás az oldalra"
1311
1312msgid "keys.findtext"
1313msgstr "Keresés az oldalon"
1314
1315msgid "keys.zoom.in"
1316msgstr "Nagyítás"
1317
1318msgid "keys.zoom.reset"
1319msgstr "Eredeti méret"
1320
1321msgid "keys.fullscreen"
1322msgstr "Teljes képernyős mód ki-/bekapcsolása"
1323
1324msgid "keys.tab.new"
1325msgstr "Új lap"
1326
1327msgid "keys.tab.close"
1328msgstr "Lap bezárása"
1329
1330msgid "keys.tab.prev"
1331msgstr "Előző lap"
1332
1333msgid "keys.tab.next"
1334msgstr "Következő lap"
1335
1336msgid "keys.split.menu"
1337msgstr "Osztott nézet beállítása"
1338
1339msgid "keys.split.item"
1340msgstr "Osztott nézet menü:"
1341
1342msgid "keys.hoverurl"
1343msgstr "URL megjelenítésének ki-/bekapcsolása, ha felette az egér"
1344
1345msgid "error.badstatus"
1346msgstr "Ismeretlen státuszkód"
1347
1348msgid "error.openfile"
1349msgstr "Fájl megnyitása sikertelen"
1350
1351msgid "error.openfile.msg"
1352msgstr ""
1353"A megadott fájl nem létezik, vagy nem elérhető. Kérjük, ellenőrizze az "
1354"elérési útját."
1355
1356msgid "error.badresource"
1357msgstr "Érvénytelen erőforrás"
1358
1359msgid "error.badresource.msg"
1360msgstr "A kért erőforrás nem létezik."
1361
1362msgid "error.unsupported.media"
1363msgstr "Nem támogatott tartalomtípus"
1364
1365msgid "error.unsupported.protocol"
1366msgstr "Nem támogatott protokoll"
1367
1368msgid "error.unsupported.protocol.msg"
1369msgstr "A megadott protokollt ez az alkalmazás nem támogatja."
1370
1371msgid "error.badheader"
1372msgstr "Érvénytelen fejléc"
1373
1374msgid "error.badredirect"
1375msgstr "Érvénytelen átirányítás"
1376
1377msgid "error.schemeredirect"
1378msgstr "Sémaváltó átirányítás"
1379
1380msgid "error.schemeredirect.msg"
1381msgstr ""
1382"A szerver olyan URL-re próbált irányítani, melynek sémája eltér az eredeti "
1383"URL sémájától. Az alábbi linket ellenőrizve eldöntheti, szeretné-e "
1384"manuálisan megnyitni."
1385
1386msgid "error.manyredirects"
1387msgstr "Túl sok átirányítás"
1388
1389msgid "error.tls"
1390msgstr "Hálózati/TLS hiba"
1391
1392msgid "error.tls.msg"
1393msgstr "A szerverrel meghiúsult a kommunikáció."
1394
1395msgid "error.certexpired"
1396msgstr "Lejárt tanúsítvány"
1397
1398msgid "error.certverify"
1399msgstr "Nem megbízható szerver"
1400
1401msgid "error.temporary"
1402msgstr "Átmeneti hiba"
1403
1404msgid "error.temporary.msg"
1405msgstr "A kérés sikertelen volt, próbálkozzon később."
1406
1407msgid "error.unavail"
1408msgstr "A szerver nem elérhető"
1409
1410msgid "error.cgi"
1411msgstr "CGI hiba"
1412
1413msgid "error.proxy"
1414msgstr "Proxyhiba"
1415
1416msgid "error.proxy.msg"
1417msgstr ""
1418"Proxyhiba lépett fel, mert a szerver nem tudott a távoli kiszolgálóhoz "
1419"kapcsolódni. Ezt hálózati problémák okozhatják."
1420
1421msgid "error.slowdown"
1422msgstr "Lassítson"
1423
1424msgid "error.slowdown.msg"
1425msgstr "A szerver korlátozza a kérések gyakoriságát. Kérjük, várjon…"
1426
1427msgid "error.permanent"
1428msgstr "Maradandó hiba"
1429
1430msgid "error.notfound"
1431msgstr "Nem található"
1432
1433msgid "error.notfound.msg"
1434msgstr "A kért erőforrás jelenleg nem található."
1435
1436msgid "error.gone"
1437msgstr "Megszűnt"
1438
1439msgid "error.gone.msg"
1440msgstr "A kért erőforrás többé nem érhető el."
1441
1442msgid "error.proxyrefusal"
1443msgstr "Proxykérés elutasítva"
1444
1445msgid "error.badrequest"
1446msgstr "Hibás kérés"
1447
1448msgid "error.badrequest.msg"
1449msgstr "A szerver nem tudta értelmezni a kérést."
1450
1451msgid "error.cert.needed"
1452msgstr "Tanúsítvány szükséges"
1453
1454msgid "error.cert.auth"
1455msgstr "Tanúsítvány nem hitelesíthető"
1456
1457msgid "error.ansi"
1458msgstr "Terminálemuláció"
1459
1460msgid "gempub.cover.viewlocal"
1461msgstr "Ez a Gempub könyv lokális mentés után megjeleníthető."
1462
1463msgid "gempub.cover.untitled"
1464msgstr "Cím nélküli könyv"
1465
1466msgid "gempub.cover.aboutbook"
1467msgstr "Könyv névjegye"
1468
1469msgid "gempub.cover.image"
1470msgstr "Borítókép"
1471
1472msgid "gempub.meta.version"
1473msgstr "Verzió"
1474
1475msgid "gempub.meta.revdate"
1476msgstr "Verziószám"
1477
1478msgid "gempub.meta.pub"
1479msgstr "Kiadva"
1480
1481msgid "gempub.meta.pubdate"
1482msgstr "Kiadás dátuma"
1483
1484msgid "gempub.meta.lang"
1485msgstr "Nyelv"
1486
1487msgid "gempub.meta.license"
1488msgstr "Licenc"
1489
1490# Action label
1491msgid "fontpack.meta.viewfile"
1492msgstr "Fájl megtekintése"
1493
1494msgid "heading.fontpack.meta.disabled"
1495msgstr "Letiltott betűtípuskészletek"
1496
1497msgid "fontpack.meta.installed"
1498msgstr "Telepítve"
1499
1500msgid "fontpack.meta.notinstalled"
1501msgstr "Nincs telepítve"
1502
1503msgid "fontpack.meta.disabled"
1504msgstr ", letiltva"
1505
1506#, c-format
1507msgid "fontpack.enable"
1508msgstr "\"%s\" engedélyezése"
1509
1510msgid "fontpack.export"
1511msgstr "fontpack.ini sablon megtekintése"
1512
1513#, c-format
1514msgid "fontpack.install"
1515msgstr "\"%s\" telepítése"
1516
1517#, c-format
1518msgid "fontpack.upgrade"
1519msgstr "\"%s\" frissítése %d verzióra"
1520
1521msgid "fontpack.install.ttf"
1522msgstr "TrueType betűtípsuok telepítése"
1523
1524msgid "fontpack.open.fontsdir"
1525msgstr "Felhasználói betűtípusmappa megnyitása"
1526
1527msgid "heading.fontpack.delete"
1528msgstr "BETŰTÍPUSKÉSZLET TÖRLÉSE"
1529
1530msgid "dlg.fontpack.delete"
1531msgstr "Betűtípuskészlet törlése"
1532
1533msgid "heading.dismiss.warning"
1534msgstr "FIGYELMEZTETÉS ELVETÉSE?"
1535
1536msgid "dlg.dismiss.warning"
1537msgstr "Figyelmeztetés elvetése"
1538
1539msgid "dlg.fontpack.classic"
1540msgstr "Betűtípuskészlet letöltése (25 MB)"
1541
1542msgid "doc.pre.nocaption"
1543msgstr "Leírás nélküli előreformázott szöveg"
1544
1545#, c-format
1546msgid "doc.archive"
1547msgstr "%s egy tömörített archívum."
1548
1549# Used in inline audio player metadata popup.
1550msgid "audio.meta.title"
1551msgstr "Cím"
1552
1553msgid "numbertype.float"
1554msgstr "lebegőpontos szám"
1555
1556#, c-format
1557msgid "feeds.list.counts"
1558msgid_plural "feeds.list.counts.n"
1559msgstr[0] "%zu hírfolyamra iratkoztál fel, amely %%s-t tartalmaz.\n"
1560msgstr[1] "%zu hírfolyamra iratkoztál fel, amelyek %%s-t tartalmaznak.\n"
1561
1562#, c-format
1563msgid "hours.ago"
1564msgid_plural "hours.ago.n"
1565msgstr[0] "%d órája"
1566msgstr[1] "%d órája"
1567
1568# Alt-text of the preformatted logo.
1569msgid "about.logo"
1570msgstr "ASCII art: a „Lagrange” szó nagy méretű betűkkel"
1571
1572msgid "menu.title.file"
1573msgstr "Fájl"
1574
1575msgid "menu.title.edit"
1576msgstr "Szerkesztés"
1577
1578msgid "menu.closetab.other"
1579msgstr "Többi lap bezárása"
1580
1581msgid "menu.split.merge"
1582msgstr "Lapok egyesítése"
1583
1584msgid "menu.pageinfo"
1585msgstr "Oldaladatok megjelenítése"
1586
1587# Used on iOS. "Files" refers to Apple's iOS app where you can pick an iCloud folder.
1588msgid "menu.save.files"
1589msgstr "Mentés a Fájlokba"
1590
1591# Used on desktop operating systems. "Downloads" refers to the user's configured downloads directory.
1592msgid "menu.save.downloads"
1593msgstr "Mentés a Letöltések mappába"
1594
1595msgid "menu.sidebar.right"
1596msgstr "Jobb oldalsáv ki/bekapcsolása"
1597
1598msgid "menu.bookmarks.bytag"
1599msgstr "Könyvjelzők listázása címkék szerint"
1600
1601# used for Preferences on mobile
1602msgid "menu.settings"
1603msgstr "Beállítások"
1604
1605# keep this short (3x1 horiz layout)
1606msgid "menu.selectall"
1607msgstr "Összes kijelölése"
1608
1609# Used in the View menu on macOS. Shows sidebar and switches sidebar tab.
1610msgid "menu.show.feeds"
1611msgstr "Hírfolyamok megjelenítése"
1612
1613# Used in the View menu on macOS. Shows sidebar and switches sidebar tab.
1614msgid "menu.show.identities"
1615msgstr "Identitások megjelenítése"
1616
1617msgid "menu.autoreload"
1618msgstr "Automatikus újratöltés…"
1619
1620msgid "menu.debug"
1621msgstr "Hibakeresési információ"
1622
1623msgid "menu.page.import"
1624msgstr "Hivatkozások importálása könyvjelzőként…"
1625
1626msgid "menu.identity.import"
1627msgstr "Importálás…"
1628
1629# Usage: "(count) Unread" in the sidebar tab title, referring to feed entries.
1630msgid "sidebar.unread"
1631msgid_plural "sidebar.unread.n"
1632msgstr[0] "Olvasatlan"
1633msgstr[1] "Olvasatlan"
1634
1635# megabytes, used as the unit after a number
1636msgid "mb"
1637msgstr "MB"
1638
1639msgid "mb.per.sec"
1640msgstr "MB/s"
1641
1642# strftime() formatted, split on two lines
1643#, c-format
1644msgid "page.timestamp"
1645msgstr ""
1646"Érkezés ideje: %I:%M %p\n"
1647"Napja: %b %d, %Y."
1648
1649msgid "feeds.entry.markunread"
1650msgstr "Megjelölés olvasatlanként"
1651
1652msgid "feeds.unsubscribe"
1653msgstr "Leiratkozás…"
1654
1655msgid "feeds.markallread"
1656msgstr "Összes megjelölése olvasottként"
1657
1658msgid "feeds.refresh"
1659msgstr "Hírfolyamok újratöltése"
1660
1661msgid "feeds.atom.translated"
1662msgstr ""
1663"Ezt az Atom XML dokumentumot automatikusan Gemini hírfolyammá alakítottuk "
1664"át, hogy fel lehessen iratkozni rá."
1665
1666msgid "heading.history.clear"
1667msgstr "ELŐZMÉNYEK TÖRLÉSE"
1668
1669msgid "dlg.confirm.history.clear"
1670msgstr "Valóban törli az összes meglátogatott oldal előzményeit?"
1671
1672#, c-format
1673msgid "dlg.confirm.bookmarks.delete"
1674msgid_plural "dlg.confirm.bookmarks.delete.n"
1675msgstr[0] "Valóban törli a könyvjelzőt ebből a mappából?"
1676msgstr[1] "Valóban törli a %u könyvjelzőt ebből a mappából?"
1677
1678#, c-format
1679msgid "dlg.bookmarks.delete"
1680msgid_plural "dlg.bookmarks.delete.n"
1681msgstr[0] "Könyvjelző törlése"
1682msgstr[1] "%u könyvjelző törlése"
1683
1684msgid "bookmark.untag.home"
1685msgstr "Kezdőlap eltávolítása"
1686
1687msgid "bookmark.untag.remote"
1688msgstr "Könyvjelzőforrás eltávolítása"
1689
1690# strftime() formatted
1691#, c-format
1692msgid "ident.expiry"
1693msgstr "Lejár: %b %d, %Y"
1694
1695msgid "ident.stopuse"
1696msgstr "Ne használja ezen az oldalon"
1697
1698#, c-format
1699msgid "dlg.confirm.ident.delete"
1700msgstr ""
1701"Valóban törli a %s\"%s\"%s identitást a tanúsítvány- és privátkulcsfájlokkal "
1702"együtt?"
1703
1704# The %s format characters are used to highlight the word "Help" and must be used in the translation in same way as here.
1705#, c-format
1706msgid "ident.gotohelp"
1707msgstr "A TLS ügyféltanúsítványokról további információt talál a %sSúgó%sban."
1708
1709#, c-format
1710msgid "error.unsupported.suggestsave"
1711msgstr ""
1712"Elmentheti fájlként a Letöltések mappába: használja a %s "
1713"billentyűparancsoat, vagy válassza ki a \"%s\" menüpontot."
1714
1715msgid "pageinfo.cert.ca.verified"
1716msgstr "CA által megerősítve"
1717
1718msgid "pageinfo.cert.trusted"
1719msgstr "Megbízható"
1720
1721msgid "dlg.cert.fingerprint"
1722msgstr "Lenyomat másolása"
1723
1724msgid "dlg.input.send"
1725msgstr "Küldés"
1726
1727msgid "dlg.save.size"
1728msgstr "Méret:"
1729
1730msgid "heading.import.bookmarks"
1731msgstr "KÖNYVJELZŐK IMPORTÁLÁSA"
1732
1733#, c-format
1734msgid "dlg.import.found"
1735msgid_plural "dlg.import.found.n"
1736msgstr[0] "Egy új hivatkozás van az oldalon."
1737msgstr[1] "%d új hivatkozás van az oldalon."
1738
1739msgid "dlg.import.notnew"
1740msgstr "Az oldal összes hivatkozása szerepel már a könyvjelzők között."
1741
1742#, c-format
1743msgid "num.hours"
1744msgid_plural "num.hours.n"
1745msgstr[0] "%d óránként"
1746msgstr[1] "%d óránként"
1747
1748msgid "link.newtab"
1749msgstr "Hivatkozás megnyitása új lapon"
1750
1751msgid "link.browser"
1752msgstr "Hivatkozás megnyitása alapértelmezett böngészőben"
1753
1754msgid "link.bookmark"
1755msgstr "Hivatkozás mentése könyvjelzőként…"
1756
1757msgid "link.file.delete"
1758msgstr "Fájl törlése"
1759
1760msgid "dlg.file.delete.confirm"
1761msgstr "Valóban törli ezt a fájlt?"
1762
1763#, c-format
1764msgid "dlg.openlink.confirm"
1765msgstr ""
1766"Megnyitja az alapértelmezett böngészőben?\n"
1767"%s%s"
1768
1769#, c-format
1770msgid "dlg.certwarn.mayberenewed"
1771msgid_plural "dlg.certwarn.mayberenewed.n"
1772msgstr[0] ""
1773"A beérkezett tanúsítványt nemrég újíthatták meg — a megfelelő domainhez "
1774"tartozik, és nem járt le. A jelenleg megbízhatónak jelölt tanúsítvány "
1775"lejárati ideje %s, egy nap múlva."
1776msgstr[1] ""
1777"A szervertől kapott tanúsítványt nemrég újíthatták meg — a megfelelő "
1778"domainhez tartozik, és nem járt le. A jelenleg megbízhatónak jelölt "
1779"tanúsítvány lejárati ideje %s, %d nap múlva."
1780
1781#, c-format
1782msgid "dlg.certwarn.expired"
1783msgstr "A szervertől kapott tanúsítvány %s napon lejárt."
1784
1785msgid "dlg.certwarn.different"
1786msgstr ""
1787"A szervertől kapott tanúsítvány érvényes, de eltér a megbízhatónak jelölttől."
1788
1789msgid "dlg.certwarn.domain.expired"
1790msgstr "A szervertől kapott tanúsítvány lejárt ÉS rossz domainhez tartozik."
1791
1792msgid "dlg.certimport.help"
1793msgstr ""
1794"Másoljon be egy PEM-kódolású tanúsítványt és/vagy privát kulcsot,\n"
1795"vagy egérrel húzzon egy .crt/.key fájlt az ablakba."
1796
1797# button in the mobile New Identity dialog
1798msgid "dlg.certimport.pickfile"
1799msgstr "Tanúsítvány-/kulcsfájl importálása"
1800
1801msgid "bookmark.title.blank"
1802msgstr "Üres oldal"
1803
1804msgid "bookmark.export.title.time"
1805msgstr "Létrehozott könyvjelzők"
1806
1807msgid "bookmark.export.count"
1808msgid_plural "bookmark.export.count.n"
1809msgstr[0] "Önnek egy könyvjelzője van."
1810msgstr[1] "Önnek %d könyvjelzője van."
1811
1812msgid "bookmark.export.saving"
1813msgstr ""
1814"A könyvjelzők exportálásához mentse el ezt az oldalt, vagy másolja ki őket a "
1815"vágólapra."
1816
1817msgid "bookmark.export.taginfo"
1818msgstr ""
1819"Ebben a listában minden címsor egy könyvjelzőcímkének felel meg. Csak a "
1820"címkével ellátott könyvjelzők szerepelnek rajta. A több címkével is "
1821"rendelkező könyvjelzők minden egyes címkéjük alatt megismétlődnek."
1822
1823msgid "bookmark.export.format.linklines"
1824msgstr "Minden hivatkozás egy könyvjelző."
1825
1826msgid "bookmark.export.format.otherlines"
1827msgstr ""
1828"A listaelemek és idézetek további információval szolgálnak az őket megelőző "
1829"könyvjelzőről. A szöveges és előreformázott sorok megjegyzésnek számítanak, "
1830"és figyelmen kívül kell őket hagyni."
1831
1832# Interpret as "Results from feeds..."
1833msgid "heading.lookup.feeds"
1834msgstr "HÍRFOLYAMOK"
1835
1836# Interpret as "Results from identitites..."
1837msgid "heading.lookup.identities"
1838msgstr "AZ IDENTITÁSOKBÓL"
1839
1840msgid "dlg.upload.id.default"
1841msgstr "Alapértelmezett"
1842
1843msgid "heading.upload.file"
1844msgstr "Fájl"
1845
1846msgid "hint.upload.token"
1847msgstr "lásd a szerver utasításait"
1848
1849msgid "dlg.upload.send"
1850msgstr "Feltöltés"
1851
1852msgid "dlg.uploadport.msg"
1853msgstr ""
1854"Állítsa be ehhez az URL-hez a Titan feltöltési portot. A port mentésre kerül "
1855"az oldalbeállítások közé."
1856
1857msgid "heading.translate"
1858msgstr "OLDAL FORDÍTÁSA"
1859
1860msgid "dlg.translate.unavail"
1861msgstr "A szolgáltatás nem elérhető"
1862
1863msgid "lang.ar"
1864msgstr "Arab"
1865
1866msgid "lang.en"
1867msgstr "Angol"
1868
1869msgid "lang.pt"
1870msgstr "Portugál"
1871
1872msgid "lang.es.mx"
1873msgstr "Spanyol (mexikói)"
1874
1875msgid "lang.sk"
1876msgstr "Szlovák"
1877
1878msgid "heading.newident"
1879msgstr "ÚJ IDENTITÁS"
1880
1881msgid "hint.newident.date"
1882msgstr "ÉÉÉÉ vagy ÉÉÉÉ-HH-NN"
1883
1884msgid "dlg.newident.notsaved"
1885msgstr "nem mentve a lemezre"
1886
1887msgid "dlg.newident.scope.page"
1888msgstr "Jelenlegi oldal"
1889
1890msgid "dlg.newident.userid"
1891msgstr "Felhasználói azonosító:"
1892
1893msgid "dlg.newident.create"
1894msgstr "Identitás létrehozása"
1895
1896msgid "heading.newident.missing"
1897msgstr "HIÁNYZÓ ADAT"
1898
1899msgid "dlg.newindent.missing.commonname"
1900msgstr "Az \"Általános nevet (CN)\" kötelező megadni."
1901
1902msgid "dlg.newident.date.example"
1903msgstr ""
1904"Kérem, ellenőrizze az \"Érvényesség\" mezőt. Példák:\n"
1905"• 2030\n"
1906"• 2025-06-30\n"
1907"• 2021-12-31 23:59:59"
1908
1909msgid "heading.subscribe"
1910msgstr "FELIRATKOZÁS AZ OLDALRA"
1911
1912msgid "dlg.feed.type.headings"
1913msgstr "Új fejezetcímek"
1914
1915msgid "dlg.feed.ignoreweb"
1916msgstr "HTTP(s) linkek figyelmen kívül hagyása:"
1917
1918msgid "heading.bookmark.tags"
1919msgstr "KÜLÖNLEGES CÍMKÉK"
1920
1921# tab button
1922msgid "heading.prefs.colors"
1923msgstr "Színek"
1924
1925# tab button
1926msgid "heading.prefs.network"
1927msgstr "Hálózat"
1928
1929msgid "heading.prefs.uitheme"
1930msgstr "FELÜLET SZÍNEI"
1931
1932msgid "prefs.downloads"
1933msgstr "Letöltések mappa:"
1934
1935msgid "prefs.collapsepreonload"
1936msgstr "Előreformázott blokkok összecsukása:"
1937
1938# User preference that controls whether index.gmi pages get automatically opened when browsing the contents of a directory inside a compressed archive.
1939msgid "prefs.archive.openindex"
1940msgstr "Archívumok indexfájljának megnyitása:"
1941
1942msgid "prefs.scrollspeed.keyboard"
1943msgstr "Billentyűs görgetés sebessége:"
1944
1945msgid "prefs.hidetoolbarscroll"
1946msgstr "Eszköztár elrejtése görgetéskor:"
1947
1948msgid "prefs.theme.dark"
1949msgstr "Sötét"
1950
1951msgid "prefs.uiscale"
1952msgstr "Felhasználói felület nagyítási faktora:"
1953
1954msgid "prefs.customframe"
1955msgstr "Egyedi ablakkeret:"
1956
1957msgid "prefs.doctheme.dark"
1958msgstr "Sötét téma:"
1959
1960# Abbrevation: background-to-foreground
1961msgid "prefs.imagestyle.bgfg"
1962msgstr "Háttérből előtérbe"
1963
1964msgid "prefs.mono"
1965msgstr "Fix szélességű szövegtörzs:"
1966
1967# Interpretation: (Bold links) on dark (background).
1968msgid "prefs.boldlink.dark"
1969msgstr "Sötét háttéren"
1970
1971msgid "prefs.linewidth.normal"
1972msgstr "Normál"
1973
1974msgid "prefs.quoteicon"
1975msgstr "Idézet jelölője:"
1976
1977msgid "prefs.quoteicon.line"
1978msgstr "Vonal"
1979
1980msgid "prefs.memorysize"
1981msgstr "Memória mérete:"
1982
1983msgid "menu.binding.reset"
1984msgstr "Alapértékek visszaállítása"
1985
1986#, c-format
1987msgid "archive.summary"
1988msgid_plural "archive.summary.n"
1989msgstr[0] "Ez az archívum egy elemet tartalmaz, és %.1f MB méretű."
1990msgstr[1] "Ez az archívum %zu elemet tartalmaz, és %.1f méretű."
1991
1992msgid "keys.scroll.halfpage.up"
1993msgstr "Görgetés fél oldallal feljebb"
1994
1995msgid "keys.scroll.page.up"
1996msgstr "Görgetés egy oldallal feljebb"
1997
1998msgid "keys.root"
1999msgstr "Ugrás a kapszula gyökérmappájára"
2000
2001msgid "keys.link.modkey"
2002msgstr "Hivatkozás megnyitása módosítóbillentyűvel"
2003
2004msgid "keys.link.homerow.hover"
2005msgstr "Egér a hivatkozás fölés középső billentyűsorral"
2006
2007msgid "keys.zoom.out"
2008msgstr "Kicsinyítés"
2009
2010msgid "keys.tab.close.other"
2011msgstr "Többi lap bezárása"
2012
2013msgid "keys.split.next"
2014msgstr "Ugrás a következő osztásra"
2015
2016msgid "keys.upload"
2017msgstr "Oldal feltöltése Titan protokollal"
2018
2019msgid "error.badstatus.msg"
2020msgstr ""
2021"A szerver olyan státuszkóddal válaszolt, amely nem szerepel a Gemini "
2022"protokoll specifikációjában. Lehet, hogy ez a szerver a jövőből érkezett? "
2023"Vagy inkább hibásan működik."
2024
2025msgid "error.unsupported.media.msg"
2026msgstr ""
2027"A szervertől érkezett tartalomtípust ez az alkalmazás nem tudja "
2028"megjeleníteni."
2029
2030msgid "error.badheader.msg"
2031msgstr ""
2032"A szervertől kapott fejléc nem felel meg a Gemini protokoll "
2033"specifikációjának. Lehet, hogy szerverhiba lépett fel, vagy nem Gemini "
2034"szerverhez próbált kapcsolódni."
2035
2036msgid "error.badredirect.msg"
2037msgstr ""
2038"A szerver átirányítással válaszolt, de érvénytelen cél-URL-t adott meg. "
2039"Elképzelhető, hogy szerverhiba lépett fel."
2040
2041msgid "error.manyredirects.msg"
2042msgstr ""
2043"Elképzelhető, hogy átirányítási ciklusba került. Az alábbi linket "
2044"ellenőrizve eldöntheti, szeretne-e manuálisan továbbmenni."
2045
2046msgid "error.certexpired.msg"
2047msgstr ""
2048"Megszakadt a kapcsolat a szerverrel, mert annak TLS tanúsítványa lejárt."
2049
2050msgid "error.certverify.msg"
2051msgstr ""
2052"A szerverrel megszakadt a kapcsolat, mert a TLS tanúsítványa nem egyezik "
2053"azzal, amit korábban megbízhatónak jelölt. Kérem, ellenőrizze, hogy a "
2054"szerver bejelentette-e, hogy a tanúsítványa megváltozik. Ha nem, akkor "
2055"lehetséges, hogy egy rosszindulatú harmadik fél próbálja megszemélyesíteni "
2056"ezt a szervert.\n"
2057"\n"
2058"A tanúsítványt az oldaladatoknál lehet megbízhatónak jelölni."
2059
2060msgid "error.unavail.msg"
2061msgstr ""
2062"A szerver túlterhelés vagy karbantartás miatt nem elérhető. Próbálkozzon "
2063"később."
2064
2065msgid "error.cgi.msg"
2066msgstr ""
2067"Dinamikus tartalomgenerálási hiba lépett fel a szerveren. Ezt hibásan működő "
2068"szerveroldali szoftver okozhatja."
2069
2070msgid "error.permanent.msg"
2071msgstr "A kérés sikertelen, és jövőbeli megismétlése esetén is sikertelen lesz."
2072
2073msgid "error.proxyrefusal.msg"
2074msgstr ""
2075"A kérés olyan domainre irányult, amelyet ez a szerver nem tud kiszolgálni, "
2076"és nem proxykéréseket sem fogad."
2077
2078msgid "error.cert.needed.msg"
2079msgstr "A kért erőforráshoz csak ügyféltanúsítvány birtokában férhet hozzá."
2080
2081msgid "error.cert.auth.msg"
2082msgstr ""
2083"A kapott ügyféltanúsítvány érvényes, de nincs jogosultsága a kért "
2084"erőforráshoz."
2085
2086msgid "error.cert.invalid"
2087msgstr "Érvénytelen tanúsítvány"
2088
2089msgid "error.cert.invalid.msg"
2090msgstr "A kapott ügyféltanúsítvány lejárt vagy érvénytelen."
2091
2092msgid "error.ansi.msg"
2093msgstr ""
2094"Elképzelhető, hogy az oldal helytelenül jelenik meg. ANSI escape "
2095"szekvenciákat használ a szöveg formázására, és ez jelenleg csak részben "
2096"támogatott. Próbálja terminálemulátorban megnyitni."
2097
2098msgid "error.glyphs"
2099msgstr "Hiányzó karakterek"
2100
2101msgid "error.glyphs.msg"
2102msgstr ""
2103"Az oldalt nem lehetett teljesen megjeleníteni, mert a betűkészletből "
2104"bizonyos karakterek hiányoznak. A hiba javításához telepítsen megfelelő "
2105"betűtípusokat."
2106
2107msgid "gempub.cover.view"
2108msgstr "Gempub tartalom megtekintése"
2109
2110msgid "gempub.meta.author"
2111msgstr "Szerző"
diff --git a/po/ru.po b/po/ru.po
index 21250fdf..53db897b 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -3,8 +3,8 @@ msgstr ""
3"Project-Id-Version: PACKAGE VERSION\n" 3"Project-Id-Version: PACKAGE VERSION\n"
4"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 4"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
5"POT-Creation-Date: 2021-03-23 19:02+0000\n" 5"POT-Creation-Date: 2021-03-23 19:02+0000\n"
6"PO-Revision-Date: 2021-10-12 19:50+0000\n" 6"PO-Revision-Date: 2021-11-02 23:51+0000\n"
7"Last-Translator: Nikolay Korotkiy <sikmir@gmail.com>\n" 7"Last-Translator: jan Anja <cyber@sysrq.in>\n"
8"Language-Team: Russian <http://weblate.skyjake.fi/projects/lagrange/ui/ru/>\n" 8"Language-Team: Russian <http://weblate.skyjake.fi/projects/lagrange/ui/ru/>\n"
9"Language: ru\n" 9"Language: ru\n"
10"MIME-Version: 1.0\n" 10"MIME-Version: 1.0\n"
@@ -435,9 +435,8 @@ msgstr "УДАЛЕНИЕ КЛИЕНТСКОГО СЕРТИФИКАТА"
435 435
436msgid "dlg.confirm.ident.delete" 436msgid "dlg.confirm.ident.delete"
437msgstr "" 437msgstr ""
438"Вы действительно хотите удалить идентификатор\n" 438"Вы действительно хотите удалить идентификатор «%s%s%s», включая файлы "
439"%s%s%s,\n" 439"сертификата и закрытого ключа?"
440"включая файлы сертификата и закрытого ключа?"
441 440
442msgid "dlg.ident.delete" 441msgid "dlg.ident.delete"
443msgstr "Удалить клиентский сертификат и файлы" 442msgstr "Удалить клиентский сертификат и файлы"
@@ -454,9 +453,7 @@ msgid "heading.unsub"
454msgstr "ОТПИСКА" 453msgstr "ОТПИСКА"
455 454
456msgid "dlg.confirm.unsub" 455msgid "dlg.confirm.unsub"
457msgstr "" 456msgstr "Действительно отписаться от ленты «%s»?"
458"Действительно отписаться от ленты\n"
459"«%s»?"
460 457
461msgid "dlg.unsub" 458msgid "dlg.unsub"
462msgstr "Отписаться" 459msgstr "Отписаться"
@@ -1172,7 +1169,7 @@ msgid "error.tls"
1172msgstr "Ошибка сети/TLS" 1169msgstr "Ошибка сети/TLS"
1173 1170
1174msgid "error.tls.msg" 1171msgid "error.tls.msg"
1175msgstr "Не удалось связаться с сервером. Вот сообщение об ошибке:" 1172msgstr "Не удалось связаться с сервером."
1176 1173
1177msgid "error.temporary" 1174msgid "error.temporary"
1178msgstr "Временный сбой" 1175msgstr "Временный сбой"
@@ -1743,8 +1740,8 @@ msgstr "ПОРТ ЗАГРУЗОК TITAN"
1743 1740
1744msgid "dlg.uploadport.msg" 1741msgid "dlg.uploadport.msg"
1745msgstr "" 1742msgstr ""
1746"Задать порт сервера Titan для данного адреса.\n" 1743"Задать порт сервера Titan для данного адреса. Порт сохраняется в настройках "
1747"Пот хряется в настрока сайа." 1744"сайта."
1748 1745
1749msgid "dlg.uploadport.set" 1746msgid "dlg.uploadport.set"
1750msgstr "Задать порт" 1747msgstr "Задать порт"
@@ -1818,9 +1815,9 @@ msgstr "Тэги представлены заголовками 2-го уров
1818#, c-format 1815#, c-format
1819msgid "dlg.confirm.bookmarks.delete" 1816msgid "dlg.confirm.bookmarks.delete"
1820msgid_plural "dlg.confirm.bookmarks.delete.n" 1817msgid_plural "dlg.confirm.bookmarks.delete.n"
1821msgstr[0] "Вы хотите удалить закладку из данной папки?" 1818msgstr[0] "Вы дейтвительно отите удалить %u закладку из данной папки?"
1822msgstr[1] "Вы хотите удалить %u закладки из данной папки?" 1819msgstr[1] "Вы дейтвительно отите удалить %u закладки из данной папки?"
1823msgstr[2] "Вы хотите удалить все %u закладок из данной папки?" 1820msgstr[2] "Вы дейтвительно отите удалить %u закладок из данной папки?"
1824 1821
1825msgid "keys.bookmark.addfolder" 1822msgid "keys.bookmark.addfolder"
1826msgstr "Добавление папки закладок" 1823msgstr "Добавление папки закладок"
@@ -1828,7 +1825,7 @@ msgstr "Добавление папки закладок"
1828#, c-format 1825#, c-format
1829msgid "dlg.bookmarks.delete" 1826msgid "dlg.bookmarks.delete"
1830msgid_plural "dlg.bookmarks.delete.n" 1827msgid_plural "dlg.bookmarks.delete.n"
1831msgstr[0] "Удалить закладку" 1828msgstr[0] "Удалить %u закладку"
1832msgstr[1] "Удалить %u закладки" 1829msgstr[1] "Удалить %u закладки"
1833msgstr[2] "Удалить %u закладок" 1830msgstr[2] "Удалить %u закладок"
1834 1831
@@ -1927,3 +1924,195 @@ msgstr "Выбрать файл"
1927 1924
1928msgid "upload.id" 1925msgid "upload.id"
1929msgstr "Клиентский сертификат:" 1926msgstr "Клиентский сертификат:"
1927
1928msgid "dlg.fontpack.classic"
1929msgstr "Загрузить пакет шрифтов (25 МБ)"
1930
1931msgid "num.files"
1932msgid_plural "num.files.n"
1933msgstr[0] "%zu файл"
1934msgstr[1] "%zu файла"
1935msgstr[2] "%zu файлов"
1936
1937msgid "num.fonts"
1938msgid_plural "num.fonts.n"
1939msgstr[0] "%zu шрифт"
1940msgstr[1] "%zu шрифта"
1941msgstr[2] "%zu шрифтов"
1942
1943msgid "heading.fontpack.classic"
1944msgstr "ЗАГРУЗИТЬ ПАКЕТ ШРИФТОВ"
1945
1946msgid "dlg.fontpack.classic.msg"
1947msgstr ""
1948"Шрифты, ранее поставляемые вместе с приложением, теперь распространяются "
1949"отдельно. Хотите ли вы скачать пакет шрифтов \"Классический\" сейчас?"
1950
1951msgid "fontpack.help"
1952msgstr ""
1953"Пакеты шрифтов Lagrange — это ZIP-архивы, содержащие набор файлов шрифтов и "
1954"относящиеся к ним параметры конфигурации. Будучи установленными, шрифты "
1955"могут быть использованы для документов и интерфейса. Активные шрифты можно "
1956"выбрать в меню Настройки > Шрифты."
1957
1958#, c-format
1959msgid "dlg.fontpack.delete.confirm"
1960msgstr "Вы действительно хотите безвозвратно удалить пакет шрифтов «%s»?"
1961
1962msgid "dlg.certwarn.title"
1963msgstr "Угроза безопасности"
1964
1965msgid "dlg.feed.ignoreweb"
1966msgstr "Игнорировать HTTP(S)-ссылки:"
1967
1968msgid "prefs.font.ui"
1969msgstr "Интерфейс:"
1970
1971msgid "prefs.font.heading"
1972msgstr "Заголовки:"
1973
1974# Font to use for headings and body when Monospace body is enabled.
1975msgid "prefs.font.monodoc"
1976msgstr "Моноширинный шрифт:"
1977
1978msgid "error.glyphs.msg"
1979msgstr ""
1980"Эта страница отображена не полностью, так как некоторые символы отсутствуют. "
1981"Установите дополнительные шрифты, чтобы исправить эту проблему."
1982
1983msgid "truetype.help"
1984msgstr ""
1985"Lagrange будет пытаться загрузить все отдельные файлы TrueType, "
1986"скопированные в каталог пользовательских шрифтов."
1987
1988msgid "error.ansi.msg"
1989msgstr ""
1990"Эта страница может быть отображена некорректна. Для стилизации текста на ней "
1991"использованы управляющие последовательности ANSI, которые поддерживаются "
1992"только частично. Вы можете использовать эмулятор терминала для её просмотра."
1993
1994msgid "prefs.bookmarks.addbottom"
1995msgstr "Добавлять закладки в конец списка:"
1996
1997msgid "prefs.imagestyle.preformat"
1998msgstr "Цвет преформатированных блоков"
1999
2000# Abbrevation: background-to-foreground
2001msgid "prefs.imagestyle.bgfg"
2002msgstr "Инвертировать"
2003
2004msgid "menu.website"
2005msgstr "Веб-сайт проекта…"
2006
2007msgid "menu.fonts"
2008msgstr "Менеджер шрифтов…"
2009
2010msgid "prefs.font.body"
2011msgstr "Текст:"
2012
2013msgid "prefs.font.mono"
2014msgstr "Преформатированные блоки:"
2015
2016msgid "prefs.boldlink.visited"
2017msgstr "Посещённые адреса"
2018
2019msgid "prefs.gemtext.ansi"
2020msgstr "Последовательности ANSI:"
2021
2022msgid "prefs.font.smooth"
2023msgstr "Сглаживание:"
2024
2025msgid "prefs.gemtext.ansi.fg"
2026msgstr "Цвет текста"
2027
2028msgid "prefs.gemtext.ansi.fontstyle"
2029msgstr "Начертание шрифта"
2030
2031msgid "prefs.font.warnmissing"
2032msgstr "Предупреждения о символах:"
2033
2034msgid "fontpack.install.ttf"
2035msgstr "Установить шрифт TrueType"
2036
2037msgid "fontpack.open.aboutfonts"
2038msgstr "Показать установленные шрифты"
2039
2040#, c-format
2041msgid "fontpack.install"
2042msgstr "Установить «%s»"
2043
2044#, c-format
2045msgid "fontpack.upgrade"
2046msgstr "Обновить «%s» до версии «%d»"
2047
2048#, c-format
2049msgid "fontpack.delete"
2050msgstr "Безвозвратно удалить «%s»"
2051
2052msgid "heading.fontpack.delete"
2053msgstr "УДАЛИТЬ ПАКЕТ ШРИФТОВ"
2054
2055msgid "dlg.fontpack.delete"
2056msgstr "Удалить пакет шрифтов"
2057
2058msgid "fontpack.meta.notinstalled"
2059msgstr "Не установлен"
2060
2061msgid "fontpack.meta.installed"
2062msgstr "Установлен"
2063
2064msgid "fontpack.meta.disabled"
2065msgstr ", неактивен"
2066
2067#, c-format
2068msgid "fontpack.meta.version"
2069msgstr "Версия %d"
2070
2071# Action label
2072msgid "fontpack.meta.viewfile"
2073msgstr "Открыть файл"
2074
2075msgid "heading.fontpack.meta.enabled"
2076msgstr "Активные пакеты шрифтов"
2077
2078msgid "heading.fontpack.meta.disabled"
2079msgstr "Неактивные пакеты шрифтов"
2080
2081msgid "heading.fontpack.meta"
2082msgstr "Шрифты"
2083
2084msgid "error.ansi"
2085msgstr "Эмуляция терминала"
2086
2087msgid "error.glyphs"
2088msgstr "Некоторые символы отсутствуют"
2089
2090#, c-format
2091msgid "fontpack.enable"
2092msgstr "Активировать «%s»"
2093
2094#, c-format
2095msgid "fontpack.disable"
2096msgstr "Деактивировать «%s»"
2097
2098msgid "fontpack.export"
2099msgstr "Открыть шаблон файла fontpack.ini"
2100
2101msgid "fontpack.open.fontsdir"
2102msgstr "Открыть каталог пользовательских шрифтов"
2103
2104msgid "truetype.help.installed"
2105msgstr "Этот шрифт установлен в каталог пользовательских шрифтов."
2106
2107msgid "heading.dismiss.warning"
2108msgstr "СКРЫТЬ ПРЕДУПРЕЖДЕНИЕ?"
2109
2110msgid "dlg.dismiss.warning"
2111msgstr "Скрыть предупреждение"
2112
2113#, c-format
2114msgid "dlg.dismiss.ansi"
2115msgstr "Навсегда скрыть предупреждение об эмуляции терминала на %s?"
2116
2117msgid "lang.uk"
2118msgstr "Украинский"
diff --git a/po/sr.po b/po/sr.po
index 96ff1f42..d9cb9e9a 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,7 +1,7 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-10-30 06:15+0000\n" 4"PO-Revision-Date: 2021-11-02 23:51+0000\n"
5"Last-Translator: Страхиња Радић <contact@strahinja.org>\n" 5"Last-Translator: Страхиња Радић <contact@strahinja.org>\n"
6"Language-Team: Serbian <http://weblate.skyjake.fi/projects/lagrange/ui/sr/>\n" 6"Language-Team: Serbian <http://weblate.skyjake.fi/projects/lagrange/ui/sr/>\n"
7"Language: sr\n" 7"Language: sr\n"
@@ -2106,3 +2106,60 @@ msgstr "ОТКЛОНИТИ УПОЗОРЕЊЕ?"
2106 2106
2107msgid "dlg.dismiss.warning" 2107msgid "dlg.dismiss.warning"
2108msgstr "Отклони упозорење" 2108msgstr "Отклони упозорење"
2109
2110msgid "dlg.fontpack.classic"
2111msgstr "Преузми пакет фонтова (25 МБ)"
2112
2113msgid "error.ansi.msg"
2114msgstr ""
2115"Ова страница можда није исправно приказана. Она користи ANSI ескејп секвенце "
2116"за стилизовање текста, што је подржано само делимично. Можете пробати да "
2117"употребите емулатор терминала да је прегледате."
2118
2119msgid "dlg.fontpack.classic.msg"
2120msgstr ""
2121"Фонтови који су раније испоручивани уз апликацију су сада доступни посебно. "
2122"Желите ли да преузмете пакет фонтова „classic-set“?"
2123
2124msgid "error.glyphs.msg"
2125msgstr ""
2126"Ова страница се не може потпуно приказати јер недостају неки знакови. Можете "
2127"инсталирати додатне фонтове да бисте то исправили."
2128
2129# Action label
2130msgid "fontpack.meta.viewfile"
2131msgstr "Прегледај датотеку"
2132
2133msgid "fontpack.export"
2134msgstr "Прегледај fontpack.ini шаблон"
2135
2136#, c-format
2137msgid "fontpack.upgrade"
2138msgstr "Надогради „%s“ на верзију %d"
2139
2140#, c-format
2141msgid "fontpack.delete"
2142msgstr "Трајно обриши „%s“"
2143
2144#, c-format
2145msgid "dlg.fontpack.delete.confirm"
2146msgstr "Да ли заиста желите да трајно обришете пакет фонтова „%s“?"
2147
2148msgid "fontpack.help"
2149msgstr ""
2150"Пакети фонтова Lagrange-а су ZIP архиве које садрже низ датотека са "
2151"фонтовима и конфигурационе параметре у вези са њима. Када се једном "
2152"инсталирају, фонтови се могу користити у садржају докумената и интерфејсу. "
2153"Активни фонтови се бирају у Подешавања > Фонтови."
2154
2155msgid "truetype.help"
2156msgstr ""
2157"Lagrange ће покушати да учита све појединачне TrueType датотеке које су "
2158"копиране у кориснички директоријум са фонтовима."
2159
2160#, c-format
2161msgid "dlg.dismiss.ansi"
2162msgstr "Трајно отклонити упозорење о емулацији терминала на %s?"
2163
2164msgid "lang.uk"
2165msgstr "Украјински"
diff --git a/po/tok.po b/po/tok.po
index b00ed754..cdfa110f 100644
--- a/po/tok.po
+++ b/po/tok.po
@@ -1,7 +1,7 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-09-30 05:49+0000\n" 4"PO-Revision-Date: 2021-11-02 23:51+0000\n"
5"Last-Translator: jan Anja <cyber@sysrq.in>\n" 5"Last-Translator: jan Anja <cyber@sysrq.in>\n"
6"Language-Team: Toki Pona <http://weblate.skyjake.fi/projects/lagrange/ui/tok/" 6"Language-Team: Toki Pona <http://weblate.skyjake.fi/projects/lagrange/ui/tok/"
7">\n" 7">\n"
@@ -25,7 +25,7 @@ msgid "audio.meta.date"
25msgstr "tenpo" 25msgstr "tenpo"
26 26
27msgid "doc.pre.nocaption" 27msgid "doc.pre.nocaption"
28msgstr "sinpin namako li jo ala e sinpin pona" 28msgstr "sitelen namako li jo ala e sitelen pona"
29 29
30# Link download progress message. 30# Link download progress message.
31msgid "doc.fetching" 31msgid "doc.fetching"
@@ -450,9 +450,7 @@ msgstr "O PINI LUKIN"
450 450
451#, c-format 451#, c-format
452msgid "dlg.confirm.unsub" 452msgid "dlg.confirm.unsub"
453msgstr "" 453msgstr "sina wile ala wile pini lukin e lipu \"%s\"?"
454"sina wile ala wile pini lukin e lipu\n"
455"\"%s\"?"
456 454
457msgid "dlg.unsub" 455msgid "dlg.unsub"
458msgstr "o pini lukin" 456msgstr "o pini lukin"
@@ -1282,9 +1280,7 @@ msgstr "o kepeken ala e ona lon lipu ni"
1282#, c-format 1280#, c-format
1283msgid "dlg.confirm.ident.delete" 1281msgid "dlg.confirm.ident.delete"
1284msgstr "" 1282msgstr ""
1285"sina wile ala wile weka e nimi\n" 1283"sina wile ala wile weka e nimi \"%s%s%s\" e sitelen len ona e ijo len ona?"
1286"%s%s%s\n"
1287"e sitelen len ona e ijo len ona?"
1288 1284
1289# The %s format characters are used to highlight the word "Help" and must be used in the translation in same way as here. 1285# The %s format characters are used to highlight the word "Help" and must be used in the translation in same way as here.
1290#, c-format 1286#, c-format
@@ -1421,7 +1417,7 @@ msgid "error.tls"
1421msgstr "kon en ilo TLS li pakala" 1417msgstr "kon en ilo TLS li pakala"
1422 1418
1423msgid "error.tls.msg" 1419msgid "error.tls.msg"
1424msgstr "mi pakala toki tawa ilo pana. ona li toki e ni:" 1420msgstr "mi pakala toki tawa ilo pana."
1425 1421
1426msgid "error.unavail.msg" 1422msgid "error.unavail.msg"
1427msgstr "" 1423msgstr ""
@@ -1441,7 +1437,7 @@ msgid "gempub.meta.license"
1441msgstr "nasin pana" 1437msgstr "nasin pana"
1442 1438
1443msgid "menu.view.split" 1439msgid "menu.view.split"
1444msgstr "o tu e poki..." 1440msgstr "o tu e poki"
1445 1441
1446msgid "menu.split.vertical" 1442msgid "menu.split.vertical"
1447msgstr "sewi en anpa" 1443msgstr "sewi en anpa"
@@ -1641,8 +1637,8 @@ msgstr "o ante"
1641 1637
1642msgid "dlg.uploadport.msg" 1638msgid "dlg.uploadport.msg"
1643msgstr "" 1639msgstr ""
1644"o ante e nanpa pi ilo pana Tetan tawa nimi tawa ni.\n" 1640"o ante e nanpa pi ilo pana Tetan tawa nimi tawa ni. mun ni la nanpa kon li "
1645"mun ni la nanpa kon li wile awen." 1641"wile awen."
1646 1642
1647msgid "heading.prefs.uitheme" 1643msgid "heading.prefs.uitheme"
1648msgstr "KULE PI ILO LAKELAN" 1644msgstr "KULE PI ILO LAKELAN"
@@ -1663,7 +1659,7 @@ msgid "heading.upload"
1663msgstr "O PANA KEPEKEN KON TETAN" 1659msgstr "O PANA KEPEKEN KON TETAN"
1664 1660
1665msgid "menu.page.upload" 1661msgid "menu.page.upload"
1666msgstr "o pana e lipu kepeken kon Tetan" 1662msgstr "o pana e lipu kepeken kon Tetan"
1667 1663
1668msgid "heading.upload.text" 1664msgid "heading.upload.text"
1669msgstr "lipu" 1665msgstr "lipu"
@@ -1854,3 +1850,171 @@ msgstr[0] "o weka e lipu awen %u"
1854msgid "feeds.atom.translated" 1850msgid "feeds.atom.translated"
1855msgstr "" 1851msgstr ""
1856"lipu sin Kemini li pali tan lipu Atom XML tan ni: jan li ken lukin e ni." 1852"lipu sin Kemini li pali tan lipu Atom XML tan ni: jan li ken lukin e ni."
1853
1854msgid "dlg.fontpack.classic"
1855msgstr "o kama jo e kulupu sitelen (tu suli meka 25)"
1856
1857msgid "heading.fontpack.classic"
1858msgstr "O KAMA JO E KULUPU SITELEN"
1859
1860#, c-format
1861msgid "fontpack.install"
1862msgstr "o pali e kulupu sitelen \"%s\""
1863
1864msgid "dlg.fontpack.classic.msg"
1865msgstr ""
1866"tenpo pini la sitelen mute lon insa ilo ni. tenpo ni la sitelen ni lon insa "
1867"ijo ante. sina wile ala wile kama jo e kulupu sitelen \"Classic set\"?"
1868
1869#, c-format
1870msgid "fontpack.enable"
1871msgstr "o pali e \"%s\""
1872
1873msgid "fontpack.help"
1874msgstr ""
1875"kulupu sitelen tawa ilo Lakelan li kepeken e ilo ZIP. kulupu sitelen li jo e "
1876"ijo sitelen e ijo ante tawa sitelen. kulupu sitelen lon la sina ken kepeken "
1877"e sitelen ni tawa lipu en ilo Lakelan. sina open e \"ijo ante > sitelen\" la "
1878"sina ken ante e sitelen."
1879
1880msgid "menu.website"
1881msgstr "lipu tomo WWW pi ilo Lakelan…"
1882
1883msgid "menu.fonts"
1884msgstr "o ante e sitelen…"
1885
1886msgid "num.files"
1887msgid_plural "num.files.n"
1888msgstr[0] "ijo %zu"
1889
1890msgid "num.fonts"
1891msgid_plural "num.fonts.n"
1892msgstr[0] "sitelen %zu"
1893
1894msgid "dlg.certwarn.title"
1895msgstr "pakala len suli"
1896
1897msgid "dlg.feed.ignoreweb"
1898msgstr "o lukin ala e nimi tawa HTTP(S):"
1899
1900msgid "prefs.bookmarks.addbottom"
1901msgstr "o pali e lipu awen lon anpa:"
1902
1903msgid "prefs.font.ui"
1904msgstr "ilo Lakelan:"
1905
1906msgid "prefs.font.heading"
1907msgstr "sitelen suli:"
1908
1909msgid "prefs.font.body"
1910msgstr "sitelen lipu:"
1911
1912msgid "prefs.font.mono"
1913msgstr "sitelen namako:"
1914
1915# Font to use for headings and body when Monospace body is enabled.
1916msgid "prefs.font.monodoc"
1917msgstr "sitelen pi suli sama:"
1918
1919msgid "prefs.boldlink.visited"
1920msgstr "lipu pini"
1921
1922msgid "prefs.gemtext.ansi.fg"
1923msgstr "sitelen kule"
1924
1925msgid "prefs.gemtext.ansi.fontstyle"
1926msgstr "sitelen namako"
1927
1928msgid "prefs.gemtext.ansi"
1929msgstr "namako ANSI:"
1930
1931msgid "prefs.font.smooth"
1932msgstr "o sike e sitelen:"
1933
1934msgid "fontpack.meta.installed"
1935msgstr "lon"
1936
1937msgid "fontpack.meta.notinstalled"
1938msgstr "lon ala"
1939
1940msgid "fontpack.meta.disabled"
1941msgstr ", lape"
1942
1943#, c-format
1944msgid "fontpack.meta.version"
1945msgstr "nanpa sin %d"
1946
1947# Action label
1948msgid "fontpack.meta.viewfile"
1949msgstr "o lukin e ijo"
1950
1951msgid "heading.fontpack.meta.disabled"
1952msgstr "kulupu sitelen lape"
1953
1954msgid "heading.fontpack.meta.enabled"
1955msgstr "kulupu sitelen pali"
1956
1957msgid "heading.fontpack.meta"
1958msgstr "sitelen mute"
1959
1960#, c-format
1961msgid "fontpack.disable"
1962msgstr "o lape e \"%s\""
1963
1964msgid "fontpack.export"
1965msgstr "o lukin e ijo fontpack.ini"
1966
1967#, c-format
1968msgid "fontpack.upgrade"
1969msgstr "o sin e kulupu sitelen \"%s\". nanpa sin li %d"
1970
1971#, c-format
1972msgid "fontpack.delete"
1973msgstr "o weka e kulupu sitelen \"%s\""
1974
1975msgid "heading.fontpack.delete"
1976msgstr "KULUPU SITELEN LI KAMA WEKA"
1977
1978#, c-format
1979msgid "dlg.fontpack.delete.confirm"
1980msgstr "sina wile ala wile weka e kulupu sitelen \"%s\"?"
1981
1982msgid "dlg.fontpack.delete"
1983msgstr "o weka e kulupu sitelen"
1984
1985msgid "fontpack.install.ttf"
1986msgstr "o pali e sitelen TrueType"
1987
1988msgid "fontpack.open.aboutfonts"
1989msgstr "o lukin e sitelen ante"
1990
1991msgid "fontpack.open.fontsdir"
1992msgstr "o open e poki sitelen"
1993
1994msgid "truetype.help"
1995msgstr "ilo Lakelan li wile open e ijo TrueType ale lon poki sitelen."
1996
1997msgid "truetype.help.installed"
1998msgstr "sitelen ni lon poki sitelen."
1999
2000msgid "lang.eo"
2001msgstr "toki Epelanto"
2002
2003msgid "lang.gl"
2004msgstr "toki Kaleko"
2005
2006msgid "lang.es.mx"
2007msgstr "toki Epanja Mesiko"
2008
2009msgid "lang.sk"
2010msgstr "toki Lowenski"
2011
2012#, fuzzy
2013msgid "lang.isv"
2014msgstr "toki Metulowanski"
2015
2016msgid "menu.sort.alpha"
2017msgstr "o pali kepeken nasin nimi"
2018
2019msgid "bookmark.export.saving"
2020msgstr ""
diff --git a/po/uk.po b/po/uk.po
index d016399b..6731e103 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,7 +1,7 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" 3"Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n"
4"PO-Revision-Date: 2021-10-29 07:50+0000\n" 4"PO-Revision-Date: 2021-11-02 23:51+0000\n"
5"Last-Translator: Alyssa Liddell <e-liss@tuta.io>\n" 5"Last-Translator: Alyssa Liddell <e-liss@tuta.io>\n"
6"Language-Team: Ukrainian <http://weblate.skyjake.fi/projects/lagrange/ui/uk/>" 6"Language-Team: Ukrainian <http://weblate.skyjake.fi/projects/lagrange/ui/uk/>"
7"\n" 7"\n"
@@ -473,7 +473,7 @@ msgid "menu.page.copyurl"
473msgstr "Копіювати URL сторінки" 473msgstr "Копіювати URL сторінки"
474 474
475msgid "menu.page.copysource" 475msgid "menu.page.copysource"
476msgstr "Копіювати чий код сторінки" 476msgstr "Копіювати ьий код сторінки"
477 477
478msgid "menu.identity.notactive" 478msgid "menu.identity.notactive"
479msgstr "Активна ідентичність відсутня" 479msgstr "Активна ідентичність відсутня"
@@ -1962,9 +1962,9 @@ msgstr "Переглянути вміст Gempub"
1962 1962
1963msgid "error.ansi.msg" 1963msgid "error.ansi.msg"
1964msgstr "" 1964msgstr ""
1965"Цю сторінку неможливо правильно відобразити. Вона використовує частково " 1965"Ця сторінка може відображатися неправильно. Вона використовує частково "
1966"підтримувані керуючі символи ANSI для форматування тексту. Можете спробувати " 1966"підтримувані керівні символи ANSI для стилізування тексту. Ви можете "
1967"переглянути її у емуляторі терміналу." 1967"спрбувати преглянути її у емуляторі терміналу."
1968 1968
1969msgid "fontpack.meta.notinstalled" 1969msgid "fontpack.meta.notinstalled"
1970msgstr "Не встановлено" 1970msgstr "Не встановлено"
@@ -1979,7 +1979,7 @@ msgstr "Справді бажаєте назавжди видалити паке
1979 1979
1980msgid "fontpack.help" 1980msgid "fontpack.help"
1981msgstr "" 1981msgstr ""
1982"Пакети шрифтв для Lagrange є ZIP-архівами, що містять файли шрифтів та " 1982"Пакети шрифтів для Lagrange є ZIP-архівами, що містять файли шрифтів та "
1983"пов'язані з ними параметри конфігурації. Після встановлення їх можна " 1983"пов'язані з ними параметри конфігурації. Після встановлення їх можна "
1984"використати для ІК та вмісту документів. Активні шрифти можна обрати у меню " 1984"використати для ІК та вмісту документів. Активні шрифти можна обрати у меню "
1985"Налаштування > Шрифти." 1985"Налаштування > Шрифти."
@@ -2013,7 +2013,7 @@ msgid "dlg.feed.ignoreweb"
2013msgstr "Ігнорувати HTTP(S) посилання:" 2013msgstr "Ігнорувати HTTP(S) посилання:"
2014 2014
2015msgid "prefs.bookmarks.addbottom" 2015msgid "prefs.bookmarks.addbottom"
2016msgstr "Додати закладки иу:" 2016msgstr "Додати закладки у інць спсу:"
2017 2017
2018msgid "prefs.font.ui" 2018msgid "prefs.font.ui"
2019msgstr "ІК:" 2019msgstr "ІК:"
@@ -2041,7 +2041,7 @@ msgid "prefs.gemtext.ansi.fg"
2041msgstr "Колір тексту" 2041msgstr "Колір тексту"
2042 2042
2043msgid "prefs.gemtext.ansi.fontstyle" 2043msgid "prefs.gemtext.ansi.fontstyle"
2044msgstr "л шрифту" 2044msgstr "аксленн шрифту"
2045 2045
2046msgid "prefs.font.warnmissing" 2046msgid "prefs.font.warnmissing"
2047msgstr "Попередження про відсутні гліфи:" 2047msgstr "Попередження про відсутні гліфи:"
@@ -2053,12 +2053,12 @@ msgid "error.ansi"
2053msgstr "Емуляція терміналу" 2053msgstr "Емуляція терміналу"
2054 2054
2055msgid "error.glyphs" 2055msgid "error.glyphs"
2056msgstr "и ін" 2056msgstr "рк ів"
2057 2057
2058msgid "error.glyphs.msg" 2058msgid "error.glyphs.msg"
2059msgstr "" 2059msgstr ""
2060"Цю сторінку неможливо відобразити повністю, оскільки гарнітурові шрифту " 2060"Цю сторінку не вдалося відобразити повністю, оскільки бракує деяких гліфів. "
2061"ракує гліфів. е можна виправити, встановивши додаткові шрифти." 2061"Це можна виправити, встановивши додаткові шрифти."
2062 2062
2063msgid "heading.fontpack.meta" 2063msgid "heading.fontpack.meta"
2064msgstr "Шрифти" 2064msgstr "Шрифти"
@@ -2135,9 +2135,12 @@ msgid "dlg.fontpack.classic"
2135msgstr "Завантажити пакет шрифтів (25 МБ)" 2135msgstr "Завантажити пакет шрифтів (25 МБ)"
2136 2136
2137msgid "heading.fontpack.classic" 2137msgid "heading.fontpack.classic"
2138msgstr "ЗАВАНТАЖЯ ПАКЕТУ ШРИФТІВ" 2138msgstr "ЗАВАНТАЖ ПАКЕТ ШРИФТІВ"
2139 2139
2140msgid "dlg.fontpack.classic.msg" 2140msgid "dlg.fontpack.classic.msg"
2141msgstr "" 2141msgstr ""
2142"Шрифти, що раніше були у складі дотдатку тепер постачаються окремо. Бажаєте " 2142"Шрифти, що раніше були у складі дотдатку тепер постачаються окремо. Бажаєте "
2143"завантажити пакет шрифтів \"Класичний\" зараз?" 2143"завантажити пакет шрифтів \"Класичний\" зараз?"
2144
2145msgid "lang.uk"
2146msgstr "Українська"
diff --git a/res/about/version.gmi b/res/about/version.gmi
index 3a5952b6..d179c821 100644
--- a/res/about/version.gmi
+++ b/res/about/version.gmi
@@ -6,6 +6,14 @@
6``` 6```
7# Release notes 7# Release notes
8 8
9## 1.8.1
10* Added the `zip` utility as a build requirement. It is used for making fontpacks.
11* Fixed build failure with the simple text renderer, i.e., when HarfBuzz is disabled.
12* Fixed a line spacing artifact in long headings. With some fonts, the lines were clipping each other so the spacing was restored to normal.
13* Fixed a socket I/O issue that caused received data to be ignored when the peer closed the connection prematurely.
14* macOS: Tab close buttons are on the left side (platform UI convention).
15* Gopher: Recognize both LF and CRLF line endings in page content.
16
9## 1.8 17## 1.8
10⚠️ Font settings will be reset to defaults. Only a minimal set of fonts is bundled with the app. If additional fonts are needed, one can use custom TrueType fonts or download some from the Font Library: 18⚠️ Font settings will be reset to defaults. Only a minimal set of fonts is bundled with the app. If additional fonts are needed, one can use custom TrueType fonts or download some from the Font Library:
11=> gemini://skyjake.fi/fonts/ 19=> gemini://skyjake.fi/fonts/
diff --git a/res/lang/de.bin b/res/lang/de.bin
index b2c28f2b..ab8b61e9 100644
--- a/res/lang/de.bin
+++ b/res/lang/de.bin
Binary files differ
diff --git a/res/lang/en.bin b/res/lang/en.bin
index 61396664..f50c59e4 100644
--- a/res/lang/en.bin
+++ b/res/lang/en.bin
Binary files differ
diff --git a/res/lang/eo.bin b/res/lang/eo.bin
index 55e4b5a6..8f7415e1 100644
--- a/res/lang/eo.bin
+++ b/res/lang/eo.bin
Binary files differ
diff --git a/res/lang/es.bin b/res/lang/es.bin
index b50c7b37..fa58e37f 100644
--- a/res/lang/es.bin
+++ b/res/lang/es.bin
Binary files differ
diff --git a/res/lang/es_MX.bin b/res/lang/es_MX.bin
index 28b90473..7b7be4b6 100644
--- a/res/lang/es_MX.bin
+++ b/res/lang/es_MX.bin
Binary files differ
diff --git a/res/lang/fi.bin b/res/lang/fi.bin
index c1393644..ea724c52 100644
--- a/res/lang/fi.bin
+++ b/res/lang/fi.bin
Binary files differ
diff --git a/res/lang/fr.bin b/res/lang/fr.bin
index 08920545..163488b7 100644
--- a/res/lang/fr.bin
+++ b/res/lang/fr.bin
Binary files differ
diff --git a/res/lang/gl.bin b/res/lang/gl.bin
index 317ac9a9..fbd94fb4 100644
--- a/res/lang/gl.bin
+++ b/res/lang/gl.bin
Binary files differ
diff --git a/res/lang/hu.bin b/res/lang/hu.bin
new file mode 100644
index 00000000..104a1134
--- /dev/null
+++ b/res/lang/hu.bin
Binary files differ
diff --git a/res/lang/ia.bin b/res/lang/ia.bin
index 954e288a..94d6264a 100644
--- a/res/lang/ia.bin
+++ b/res/lang/ia.bin
Binary files differ
diff --git a/res/lang/ie.bin b/res/lang/ie.bin
index 11f9323c..ccf39a78 100644
--- a/res/lang/ie.bin
+++ b/res/lang/ie.bin
Binary files differ
diff --git a/res/lang/isv.bin b/res/lang/isv.bin
index 4097c1e1..5cb76e7e 100644
--- a/res/lang/isv.bin
+++ b/res/lang/isv.bin
Binary files differ
diff --git a/res/lang/pl.bin b/res/lang/pl.bin
index 7e44e7be..b2ac897c 100644
--- a/res/lang/pl.bin
+++ b/res/lang/pl.bin
Binary files differ
diff --git a/res/lang/ru.bin b/res/lang/ru.bin
index 129c4e10..290c101f 100644
--- a/res/lang/ru.bin
+++ b/res/lang/ru.bin
Binary files differ
diff --git a/res/lang/sk.bin b/res/lang/sk.bin
index 3d9770b8..1f8f2817 100644
--- a/res/lang/sk.bin
+++ b/res/lang/sk.bin
Binary files differ
diff --git a/res/lang/sr.bin b/res/lang/sr.bin
index 794f501c..dac8a99f 100644
--- a/res/lang/sr.bin
+++ b/res/lang/sr.bin
Binary files differ
diff --git a/res/lang/tok.bin b/res/lang/tok.bin
index 35e63a4e..b66ff147 100644
--- a/res/lang/tok.bin
+++ b/res/lang/tok.bin
Binary files differ
diff --git a/res/lang/uk.bin b/res/lang/uk.bin
index ceaf20d5..dc68bb4a 100644
--- a/res/lang/uk.bin
+++ b/res/lang/uk.bin
Binary files differ
diff --git a/res/lang/zh_Hans.bin b/res/lang/zh_Hans.bin
index 537d5ba4..bd503eef 100644
--- a/res/lang/zh_Hans.bin
+++ b/res/lang/zh_Hans.bin
Binary files differ
diff --git a/res/lang/zh_Hant.bin b/res/lang/zh_Hant.bin
index b6f0dbdb..c4dc5896 100644
--- a/res/lang/zh_Hant.bin
+++ b/res/lang/zh_Hant.bin
Binary files differ
diff --git a/src/app.c b/src/app.c
index a9ec6a26..9e636651 100644
--- a/src/app.c
+++ b/src/app.c
@@ -2123,6 +2123,12 @@ void resetFonts_App(void) {
2123 } 2123 }
2124} 2124}
2125 2125
2126static void invalidateCachedDocuments_App_(void) {
2127 iForEach(ObjectList, i, iClob(listDocuments_App(NULL))) {
2128 invalidateCachedLayout_History(history_DocumentWidget(i.object));
2129 }
2130}
2131
2126iBool handleCommand_App(const char *cmd) { 2132iBool handleCommand_App(const char *cmd) {
2127 iApp *d = &app_; 2133 iApp *d = &app_;
2128 const iBool isFrozen = !d->window || d->window->isDrawFrozen; 2134 const iBool isFrozen = !d->window || d->window->isDrawFrozen;
@@ -2287,7 +2293,10 @@ iBool handleCommand_App(const char *cmd) {
2287 if (!isFrozen) { 2293 if (!isFrozen) {
2288 setFreezeDraw_MainWindow(get_MainWindow(), iTrue); /* no intermediate draws before docs updated */ 2294 setFreezeDraw_MainWindow(get_MainWindow(), iTrue); /* no intermediate draws before docs updated */
2289 } 2295 }
2290 d->prefs.zoomPercent = arg_Command(cmd); 2296 if (arg_Command(cmd) != d->prefs.zoomPercent) {
2297 d->prefs.zoomPercent = arg_Command(cmd);
2298 invalidateCachedDocuments_App_();
2299 }
2291 setDocumentFontSize_Text(text_Window(d->window), (float) d->prefs.zoomPercent / 100.0f); 2300 setDocumentFontSize_Text(text_Window(d->window), (float) d->prefs.zoomPercent / 100.0f);
2292 if (!isFrozen) { 2301 if (!isFrozen) {
2293 postCommand_App("font.changed"); 2302 postCommand_App("font.changed");
@@ -2304,6 +2313,7 @@ iBool handleCommand_App(const char *cmd) {
2304 delta /= 2; 2313 delta /= 2;
2305 } 2314 }
2306 d->prefs.zoomPercent = iClamp(d->prefs.zoomPercent + delta, 50, 200); 2315 d->prefs.zoomPercent = iClamp(d->prefs.zoomPercent + delta, 50, 200);
2316 invalidateCachedDocuments_App_();
2307 setDocumentFontSize_Text(text_Window(d->window), (float) d->prefs.zoomPercent / 100.0f); 2317 setDocumentFontSize_Text(text_Window(d->window), (float) d->prefs.zoomPercent / 100.0f);
2308 if (!isFrozen) { 2318 if (!isFrozen) {
2309 postCommand_App("font.changed"); 2319 postCommand_App("font.changed");
diff --git a/src/gmdocument.c b/src/gmdocument.c
index 8b24ce29..0027bdb3 100644
--- a/src/gmdocument.c
+++ b/src/gmdocument.c
@@ -161,10 +161,9 @@ struct Impl_GmDocument {
161 iInt2 size; 161 iInt2 size;
162 int outsideMargin; 162 int outsideMargin;
163 iBool enableCommandLinks; /* `about:command?` only allowed on selected pages */ 163 iBool enableCommandLinks; /* `about:command?` only allowed on selected pages */
164 iBool isLayoutInvalidated;
164 iArray layout; /* contents of source, laid out in document space */ 165 iArray layout; /* contents of source, laid out in document space */
165 iPtrArray links; 166 iPtrArray links;
166// enum iGmDocumentBanner bannerType;
167// iString bannerText;
168 iString title; /* the first top-level title */ 167 iString title; /* the first top-level title */
169 iArray headings; 168 iArray headings;
170 iArray preMeta; /* metadata about preformatted blocks */ 169 iArray preMeta; /* metadata about preformatted blocks */
@@ -607,6 +606,7 @@ static void doLayout_GmDocument_(iGmDocument *d) {
607// const iBool isDarkBg = isDark_GmDocumentTheme( 606// const iBool isDarkBg = isDark_GmDocumentTheme(
608// isDark_ColorTheme(colorTheme_App()) ? prefs->docThemeDark : prefs->docThemeLight); 607// isDark_ColorTheme(colorTheme_App()) ? prefs->docThemeDark : prefs->docThemeLight);
609 initTheme_GmDocument_(d); 608 initTheme_GmDocument_(d);
609 d->isLayoutInvalidated = iFalse;
610 /* TODO: Collect these parameters into a GmTheme. */ 610 /* TODO: Collect these parameters into a GmTheme. */
611 float indents[max_GmLineType] = { 5, 10, 5, isNarrow ? 5 : 10, 0, 0, 0, 5 }; 611 float indents[max_GmLineType] = { 5, 10, 5, isNarrow ? 5 : 10, 0, 0, 0, 5 };
612 if (isExtremelyNarrow) { 612 if (isExtremelyNarrow) {
@@ -968,6 +968,7 @@ static void doLayout_GmDocument_(iGmDocument *d) {
968 ? 4 : 0) * gap_Text; 968 ? 4 : 0) * gap_Text;
969 } 969 }
970 if (!isMono) { 970 if (!isMono) {
971#if 0
971 /* Upper-level headings are typeset a bit tighter. */ 972 /* Upper-level headings are typeset a bit tighter. */
972 if (type == heading1_GmLineType) { 973 if (type == heading1_GmLineType) {
973 rts.lineHeightReduction = 0.10f; 974 rts.lineHeightReduction = 0.10f;
@@ -975,6 +976,7 @@ static void doLayout_GmDocument_(iGmDocument *d) {
975 else if (type == heading2_GmLineType) { 976 else if (type == heading2_GmLineType) {
976 rts.lineHeightReduction = 0.06f; 977 rts.lineHeightReduction = 0.06f;
977 } 978 }
979#endif
978 /* Visited links are never bold. */ 980 /* Visited links are never bold. */
979 if (run.linkId && !prefs->boldLinkVisited && 981 if (run.linkId && !prefs->boldLinkVisited &&
980 linkFlags_GmDocument(d, run.linkId) & visited_GmLinkFlag) { 982 linkFlags_GmDocument(d, run.linkId) & visited_GmLinkFlag) {
@@ -1142,13 +1144,12 @@ void init_GmDocument(iGmDocument *d) {
1142 init_String(&d->source); 1144 init_String(&d->source);
1143 init_String(&d->url); 1145 init_String(&d->url);
1144 init_String(&d->localHost); 1146 init_String(&d->localHost);
1145// d->bannerType = siteDomain_GmDocumentBanner;
1146 d->outsideMargin = 0; 1147 d->outsideMargin = 0;
1147 d->size = zero_I2(); 1148 d->size = zero_I2();
1148 d->enableCommandLinks = iFalse; 1149 d->enableCommandLinks = iFalse;
1150 d->isLayoutInvalidated = iFalse;
1149 init_Array(&d->layout, sizeof(iGmRun)); 1151 init_Array(&d->layout, sizeof(iGmRun));
1150 init_PtrArray(&d->links); 1152 init_PtrArray(&d->links);
1151// init_String(&d->bannerText);
1152 init_String(&d->title); 1153 init_String(&d->title);
1153 init_Array(&d->headings, sizeof(iGmHeading)); 1154 init_Array(&d->headings, sizeof(iGmHeading));
1154 init_Array(&d->preMeta, sizeof(iGmPreMeta)); 1155 init_Array(&d->preMeta, sizeof(iGmPreMeta));
@@ -1164,7 +1165,6 @@ void init_GmDocument(iGmDocument *d) {
1164void deinit_GmDocument(iGmDocument *d) { 1165void deinit_GmDocument(iGmDocument *d) {
1165 iReleasePtr(&d->openURLs); 1166 iReleasePtr(&d->openURLs);
1166 delete_Media(d->media); 1167 delete_Media(d->media);
1167// deinit_String(&d->bannerText);
1168 deinit_String(&d->title); 1168 deinit_String(&d->title);
1169 clearLinks_GmDocument_(d); 1169 clearLinks_GmDocument_(d);
1170 deinit_PtrArray(&d->links); 1170 deinit_PtrArray(&d->links);
@@ -1720,22 +1720,28 @@ void setFormat_GmDocument(iGmDocument *d, enum iSourceFormat format) {
1720 d->format = format; 1720 d->format = format;
1721} 1721}
1722 1722
1723#if 0 1723void setWidth_GmDocument(iGmDocument *d, int width, int canvasWidth) {
1724void setBanner_GmDocument(iGmDocument *d, enum iGmDocumentBanner type) { 1724 d->size.x = width;
1725 d->bannerType = type; 1725 d->outsideMargin = iMax(0, (canvasWidth - width) / 2); /* distance to edge of the canvas */
1726 doLayout_GmDocument_(d); /* TODO: just flag need-layout and do it later */
1726} 1727}
1727#endif
1728 1728
1729void setWidth_GmDocument(iGmDocument *d, int width, int outsideMargin) { 1729iBool updateWidth_GmDocument(iGmDocument *d, int width, int canvasWidth) {
1730 d->size.x = width; 1730 if (d->size.x != width || d->isLayoutInvalidated) {
1731 d->outsideMargin = outsideMargin; /* distance to edge of the viewport */ 1731 setWidth_GmDocument(d, width, canvasWidth);
1732 doLayout_GmDocument_(d); /* TODO: just flag need-layout and do it later */ 1732 return iTrue;
1733 }
1734 return iFalse;
1733} 1735}
1734 1736
1735void redoLayout_GmDocument(iGmDocument *d) { 1737void redoLayout_GmDocument(iGmDocument *d) {
1736 doLayout_GmDocument_(d); 1738 doLayout_GmDocument_(d);
1737} 1739}
1738 1740
1741void invalidateLayout_GmDocument(iGmDocument *d) {
1742 d->isLayoutInvalidated = iTrue;
1743}
1744
1739static void markLinkRunsVisited_GmDocument_(iGmDocument *d, const iIntSet *linkIds) { 1745static void markLinkRunsVisited_GmDocument_(iGmDocument *d, const iIntSet *linkIds) {
1740 iForEach(Array, r, &d->layout) { 1746 iForEach(Array, r, &d->layout) {
1741 iGmRun *run = r.value; 1747 iGmRun *run = r.value;
@@ -2080,7 +2086,7 @@ static void convertMarkdownToGemtext_GmDocument_(iGmDocument *d) {
2080 d->format = gemini_SourceFormat; 2086 d->format = gemini_SourceFormat;
2081} 2087}
2082 2088
2083void setSource_GmDocument(iGmDocument *d, const iString *source, int width, int outsideMargin, 2089void setSource_GmDocument(iGmDocument *d, const iString *source, int width, int canvasWidth,
2084 enum iGmDocumentUpdate updateType) { 2090 enum iGmDocumentUpdate updateType) {
2085 /* TODO: This API has been set up to allow partial/progressive updating of the content. 2091 /* TODO: This API has been set up to allow partial/progressive updating of the content.
2086 Currently the entire source is replaced every time, though. */ 2092 Currently the entire source is replaced every time, though. */
@@ -2122,7 +2128,7 @@ void setSource_GmDocument(iGmDocument *d, const iString *source, int width, int
2122 if (isNormalized_GmDocument_(d)) { 2128 if (isNormalized_GmDocument_(d)) {
2123 normalize_GmDocument(d); 2129 normalize_GmDocument(d);
2124 } 2130 }
2125 setWidth_GmDocument(d, width, outsideMargin); /* re-do layout */ 2131 setWidth_GmDocument(d, width, canvasWidth); /* re-do layout */
2126} 2132}
2127 2133
2128void foldPre_GmDocument(iGmDocument *d, uint16_t preId) { 2134void foldPre_GmDocument(iGmDocument *d, uint16_t preId) {
diff --git a/src/gmdocument.h b/src/gmdocument.h
index 444520c6..58fc3db3 100644
--- a/src/gmdocument.h
+++ b/src/gmdocument.h
@@ -120,10 +120,8 @@ enum iGmRunFlags {
120 decoration_GmRunFlag = iBit(1), /* not part of the source */ 120 decoration_GmRunFlag = iBit(1), /* not part of the source */
121 startOfLine_GmRunFlag = iBit(2), 121 startOfLine_GmRunFlag = iBit(2),
122 endOfLine_GmRunFlag = iBit(3), 122 endOfLine_GmRunFlag = iBit(3),
123// siteBanner_GmRunFlag = iBit(4), /* area reserved for the site banner */
124 quoteBorder_GmRunFlag = iBit(5), 123 quoteBorder_GmRunFlag = iBit(5),
125 wide_GmRunFlag = iBit(6), /* horizontally scrollable */ 124 wide_GmRunFlag = iBit(6), /* horizontally scrollable */
126// footer_GmRunFlag = iBit(7),
127 altText_GmRunFlag = iBit(8), 125 altText_GmRunFlag = iBit(8),
128}; 126};
129 127
@@ -177,13 +175,6 @@ enum iGmDocumentWarning {
177 missingGlyphs_GmDocumentWarning = iBit(2), 175 missingGlyphs_GmDocumentWarning = iBit(2),
178}; 176};
179 177
180/*
181enum iGmDocumentBanner {
182 none_GmDocumentBanner,
183 siteDomain_GmDocumentBanner,
184 certificateWarning_GmDocumentBanner,
185};*/
186
187enum iGmDocumentUpdate { 178enum iGmDocumentUpdate {
188 partial_GmDocumentUpdate, /* appending more content */ 179 partial_GmDocumentUpdate, /* appending more content */
189 final_GmDocumentUpdate, /* process all lines, including the last one if not terminated */ 180 final_GmDocumentUpdate, /* process all lines, including the last one if not terminated */
@@ -191,12 +182,13 @@ enum iGmDocumentUpdate {
191 182
192void setThemeSeed_GmDocument (iGmDocument *, const iBlock *seed); 183void setThemeSeed_GmDocument (iGmDocument *, const iBlock *seed);
193void setFormat_GmDocument (iGmDocument *, enum iSourceFormat format); 184void setFormat_GmDocument (iGmDocument *, enum iSourceFormat format);
194//void setBanner_GmDocument (iGmDocument *, enum iGmDocumentBanner type); 185void setWidth_GmDocument (iGmDocument *, int width, int canvasWidth);
195void setWidth_GmDocument (iGmDocument *, int width, int outsideMargin); 186iBool updateWidth_GmDocument (iGmDocument *, int width, int canvasWidth);
196void redoLayout_GmDocument (iGmDocument *); 187void redoLayout_GmDocument (iGmDocument *);
188void invalidateLayout_GmDocument(iGmDocument *); /* will have to be redone later */
197iBool updateOpenURLs_GmDocument(iGmDocument *); 189iBool updateOpenURLs_GmDocument(iGmDocument *);
198void setUrl_GmDocument (iGmDocument *, const iString *url); 190void setUrl_GmDocument (iGmDocument *, const iString *url);
199void setSource_GmDocument (iGmDocument *, const iString *source, int width, int outsideMargin, 191void setSource_GmDocument (iGmDocument *, const iString *source, int width, int canvasWidth,
200 enum iGmDocumentUpdate updateType); 192 enum iGmDocumentUpdate updateType);
201void foldPre_GmDocument (iGmDocument *, uint16_t preId); 193void foldPre_GmDocument (iGmDocument *, uint16_t preId);
202 194
@@ -204,8 +196,6 @@ void updateVisitedLinks_GmDocument (iGmDocument *); /* check all links for
204void invalidatePalette_GmDocument (iGmDocument *); 196void invalidatePalette_GmDocument (iGmDocument *);
205void makePaletteGlobal_GmDocument (const iGmDocument *); /* copies document colors to the global palette */ 197void makePaletteGlobal_GmDocument (const iGmDocument *); /* copies document colors to the global palette */
206 198
207//void reset_GmDocument (iGmDocument *); /* free images */
208
209typedef void (*iGmDocumentRenderFunc)(void *, const iGmRun *); 199typedef void (*iGmDocumentRenderFunc)(void *, const iGmRun *);
210 200
211iMedia * media_GmDocument (iGmDocument *); 201iMedia * media_GmDocument (iGmDocument *);
@@ -219,10 +209,6 @@ const iGmRun * renderProgressive_GmDocument(const iGmDocument *d, const iGmRun
219 iRangei visRangeY, iGmDocumentRenderFunc render, 209 iRangei visRangeY, iGmDocumentRenderFunc render,
220 void *context); 210 void *context);
221iInt2 size_GmDocument (const iGmDocument *); 211iInt2 size_GmDocument (const iGmDocument *);
222//const iGmRun * siteBanner_GmDocument (const iGmDocument *);
223//iBool hasSiteBanner_GmDocument (const iGmDocument *);
224//enum iGmDocumentBanner bannerType_GmDocument(const iGmDocument *);
225//const iString * bannerText_GmDocument (const iGmDocument *);
226const iArray * headings_GmDocument (const iGmDocument *); /* array of GmHeadings */ 212const iArray * headings_GmDocument (const iGmDocument *); /* array of GmHeadings */
227const iString * source_GmDocument (const iGmDocument *); 213const iString * source_GmDocument (const iGmDocument *);
228size_t memorySize_GmDocument (const iGmDocument *); /* bytes */ 214size_t memorySize_GmDocument (const iGmDocument *); /* bytes */
diff --git a/src/gopher.c b/src/gopher.c
index ac5fe560..008a7743 100644
--- a/src/gopher.c
+++ b/src/gopher.c
@@ -103,10 +103,10 @@ static iBool convertSource_Gopher_(iGopher *d) {
103 for (;;) { 103 for (;;) {
104 /* Find the end of the line. */ 104 /* Find the end of the line. */
105 iRangecc line = { body.start, body.start }; 105 iRangecc line = { body.start, body.start };
106 while (line.end < body.end - 1 && !isCRLFLineTerminator_(line.end)) { 106 while (line.end < body.end - 1 && !isLineTerminator_(line.end)) {
107 line.end++; 107 line.end++;
108 } 108 }
109 if (line.end >= body.end - 1 || !isCRLFLineTerminator_(line.end)) { 109 if (line.end >= body.end - 1 || !isLineTerminator_(line.end)) {
110 /* Not a complete line. More may be coming later. */ 110 /* Not a complete line. More may be coming later. */
111 break; 111 break;
112 } 112 }
diff --git a/src/history.c b/src/history.c
index 208c239d..7185912f 100644
--- a/src/history.c
+++ b/src/history.c
@@ -440,6 +440,17 @@ void clearCache_History(iHistory *d) {
440 unlock_Mutex(d->mtx); 440 unlock_Mutex(d->mtx);
441} 441}
442 442
443void invalidateCachedLayout_History(iHistory *d) {
444 lock_Mutex(d->mtx);
445 iForEach(Array, i, &d->recent) {
446 iRecentUrl *url = i.value;
447 if (url->cachedDoc) {
448 invalidateLayout_GmDocument(url->cachedDoc);
449 }
450 }
451 unlock_Mutex(d->mtx);
452}
453
443size_t pruneLeastImportant_History(iHistory *d) { 454size_t pruneLeastImportant_History(iHistory *d) {
444 size_t delta = 0; 455 size_t delta = 0;
445 size_t chosen = iInvalidPos; 456 size_t chosen = iInvalidPos;
diff --git a/src/history.h b/src/history.h
index 7dad72df..d3daae80 100644
--- a/src/history.h
+++ b/src/history.h
@@ -76,6 +76,7 @@ void clearCache_History (iHistory *);
76size_t pruneLeastImportant_History (iHistory *); 76size_t pruneLeastImportant_History (iHistory *);
77size_t pruneLeastImportantMemory_History (iHistory *); 77size_t pruneLeastImportantMemory_History (iHistory *);
78void invalidateTheme_History (iHistory *); /* theme has changed, cached contents need updating */ 78void invalidateTheme_History (iHistory *); /* theme has changed, cached contents need updating */
79void invalidateCachedLayout_History (iHistory *);
79 80
80iBool atLatest_History (const iHistory *); 81iBool atLatest_History (const iHistory *);
81iBool atOldest_History (const iHistory *); 82iBool atOldest_History (const iHistory *);
diff --git a/src/lang.c b/src/lang.c
index 017937cf..18c7e374 100644
--- a/src/lang.c
+++ b/src/lang.c
@@ -84,6 +84,7 @@ static void clear_Lang_(iLang *d) {
84 84
85static void load_Lang_(iLang *d, const char *id) { 85static void load_Lang_(iLang *d, const char *id) {
86 /* Load compiled language strings from a resource blob. */ 86 /* Load compiled language strings from a resource blob. */
87 /* TODO: How about an array for these? (id, blob, pluralType) */
87 iUnused(id); 88 iUnused(id);
88 const iBlock *data = equal_CStr(id, "fi") ? &blobFi_Resources 89 const iBlock *data = equal_CStr(id, "fi") ? &blobFi_Resources
89 : equal_CStr(id, "fr") ? &blobFr_Resources 90 : equal_CStr(id, "fr") ? &blobFr_Resources
@@ -93,6 +94,7 @@ static void load_Lang_(iLang *d, const char *id) {
93 : equal_CStr(id, "es_MX") ? &blobEs_MX_Resources 94 : equal_CStr(id, "es_MX") ? &blobEs_MX_Resources
94 : equal_CStr(id, "de") ? &blobDe_Resources 95 : equal_CStr(id, "de") ? &blobDe_Resources
95 : equal_CStr(id, "gl") ? &blobGl_Resources 96 : equal_CStr(id, "gl") ? &blobGl_Resources
97 : equal_CStr(id, "hu") ? &blobHu_Embedded
96 : equal_CStr(id, "ia") ? &blobIa_Resources 98 : equal_CStr(id, "ia") ? &blobIa_Resources
97 : equal_CStr(id, "ie") ? &blobIe_Resources 99 : equal_CStr(id, "ie") ? &blobIe_Resources
98 : equal_CStr(id, "isv") ? &blobIsv_Resources 100 : equal_CStr(id, "isv") ? &blobIsv_Resources
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c
index 79bfea7b..8c24d4a9 100644
--- a/src/ui/documentwidget.c
+++ b/src/ui/documentwidget.c
@@ -1702,6 +1702,7 @@ static void updateDocument_DocumentWidget_(iDocumentWidget *d,
1702 } 1702 }
1703 if (cachedDoc) { 1703 if (cachedDoc) {
1704 replaceDocument_DocumentWidget_(d, cachedDoc); 1704 replaceDocument_DocumentWidget_(d, cachedDoc);
1705 updateWidth_GmDocument(d->doc, documentWidth_DocumentWidget_(d), width_Widget(d));
1705 } 1706 }
1706 else if (setSource) { 1707 else if (setSource) {
1707 setSource_DocumentWidget(d, &str); 1708 setSource_DocumentWidget(d, &str);
@@ -2498,7 +2499,7 @@ static iBool updateDocumentWidthRetainingScrollPosition_DocumentWidget_(iDocumen
2498 /* TODO: First *fully* visible run? */ 2499 /* TODO: First *fully* visible run? */
2499 voffset = visibleRange_DocumentWidget_(d).start - top_Rect(run->visBounds); 2500 voffset = visibleRange_DocumentWidget_(d).start - top_Rect(run->visBounds);
2500 } 2501 }
2501 setWidth_GmDocument(d->doc, newWidth, (width_Widget(d) - newWidth) / 2); 2502 setWidth_GmDocument(d->doc, newWidth, width_Widget(d));
2502 setWidth_Banner(d->banner, newWidth); 2503 setWidth_Banner(d->banner, newWidth);
2503 documentRunsInvalidated_DocumentWidget_(d); 2504 documentRunsInvalidated_DocumentWidget_(d);
2504 if (runLoc && !keepCenter) { 2505 if (runLoc && !keepCenter) {
@@ -2734,6 +2735,9 @@ static iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd)
2734 } 2735 }
2735 else if (equal_Command(cmd, "window.resized") || equal_Command(cmd, "font.changed") || 2736 else if (equal_Command(cmd, "window.resized") || equal_Command(cmd, "font.changed") ||
2736 equal_Command(cmd, "keyroot.changed")) { 2737 equal_Command(cmd, "keyroot.changed")) {
2738 if (equal_Command(cmd, "font.changed")) {
2739 invalidateCachedLayout_History(d->mod.history);
2740 }
2737 /* Alt/Option key may be involved in window size changes. */ 2741 /* Alt/Option key may be involved in window size changes. */
2738 setLinkNumberMode_DocumentWidget_(d, iFalse); 2742 setLinkNumberMode_DocumentWidget_(d, iFalse);
2739 d->phoneToolbar = findWidget_App("toolbar"); 2743 d->phoneToolbar = findWidget_App("toolbar");
diff --git a/src/ui/text.c b/src/ui/text.c
index e762b891..3805c666 100644
--- a/src/ui/text.c
+++ b/src/ui/text.c
@@ -2114,7 +2114,7 @@ iTextMetrics draw_WrapText(iWrapText *d, int fontId, iInt2 pos, int color) {
2114 const int width = d->mode == word_WrapTextMode 2114 const int width = d->mode == word_WrapTextMode
2115 ? tryAdvance_Text(fontId, text, d->maxWidth, &endPos).x 2115 ? tryAdvance_Text(fontId, text, d->maxWidth, &endPos).x
2116 : tryAdvanceNoWrap_Text(fontId, text, d->maxWidth, &endPos).x; 2116 : tryAdvanceNoWrap_Text(fontId, text, d->maxWidth, &endPos).x;
2117 notify_WrapText_(d, endPos, 0, width, iFalse); 2117 notify_WrapText_(d, endPos, (iTextAttrib){ .colorId = color }, 0, width);
2118 drawRange_Text(fontId, pos, color, (iRangecc){ text.start, endPos }); 2118 drawRange_Text(fontId, pos, color, (iRangecc){ text.start, endPos });
2119 text.start = endPos; 2119 text.start = endPos;
2120 pos.y += lineHeight_Text(fontId); 2120 pos.y += lineHeight_Text(fontId);
diff --git a/src/ui/text_simple.c b/src/ui/text_simple.c
index 8b1de64a..81fb94a5 100644
--- a/src/ui/text_simple.c
+++ b/src/ui/text_simple.c
@@ -61,6 +61,7 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
61 and other non-complex LTR scripts. Composed glyphs are not supported (must rely on text 61 and other non-complex LTR scripts. Composed glyphs are not supported (must rely on text
62 being in a pre-composed form). This algorithm is used if HarfBuzz is not available. */ 62 being in a pre-composed form). This algorithm is used if HarfBuzz is not available. */
63 const iInt2 orig = args->pos; 63 const iInt2 orig = args->pos;
64 iTextAttrib attrib = { .colorId = args->color };
64 iRect bounds = { orig, init_I2(0, d->height) }; 65 iRect bounds = { orig, init_I2(0, d->height) };
65 float xpos = orig.x; 66 float xpos = orig.x;
66 float xposMax = xpos; 67 float xposMax = xpos;
@@ -86,7 +87,7 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
86// } 87// }
87 const iBool checkHitPoint = wrap && !isEqual_I2(wrap->hitPoint, zero_I2()); 88 const iBool checkHitPoint = wrap && !isEqual_I2(wrap->hitPoint, zero_I2());
88 const iBool checkHitChar = wrap && wrap->hitChar; 89 const iBool checkHitChar = wrap && wrap->hitChar;
89 const iBool isMonospaced = d->isMonospaced && !(mode & alwaysVariableWidthFlag_RunMode); 90 const iBool isMonospaced = isMonospaced_Font(d) && !(mode & alwaysVariableWidthFlag_RunMode);
90 if (isMonospaced) { 91 if (isMonospaced) {
91 monoAdvance = glyph_Font_(d, 'M')->advance; 92 monoAdvance = glyph_Font_(d, 'M')->advance;
92 } 93 }
@@ -166,7 +167,7 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
166 /* TODO: Check out if `uc_wordbreak_property()` from libunistring can be used here. */ 167 /* TODO: Check out if `uc_wordbreak_property()` from libunistring can be used here. */
167 if (ch == '\n') { 168 if (ch == '\n') {
168 /* Notify about the wrap. */ 169 /* Notify about the wrap. */
169 if (!notify_WrapText_(wrap, chPos, 0, iMax(xpos, xposExtend) - orig.x, iFalse)) { 170 if (!notify_WrapText_(wrap, chPos, attrib, 0, iMax(xpos, xposExtend) - orig.x)) {
170 break; 171 break;
171 } 172 }
172 lastWordEnd = NULL; 173 lastWordEnd = NULL;
@@ -246,7 +247,7 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
246 wrapPos = iMin(wrapPos, args->text.end); 247 wrapPos = iMin(wrapPos, args->text.end);
247 advance = wrapAdvance; 248 advance = wrapAdvance;
248 } 249 }
249 if (!notify_WrapText_(wrap, wrapPos, 0, advance, iFalse)) { 250 if (!notify_WrapText_(wrap, wrapPos, attrib, 0, advance)) {
250 break; 251 break;
251 } 252 }
252 lastWordEnd = NULL; 253 lastWordEnd = NULL;
@@ -282,8 +283,7 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
282 } 283 }
283 /* Symbols and emojis are NOT monospaced, so must conform when the primary font 284 /* Symbols and emojis are NOT monospaced, so must conform when the primary font
284 is monospaced. Except with Japanese script, that's larger than the normal monospace. */ 285 is monospaced. Except with Japanese script, that's larger than the normal monospace. */
285 const iBool useMonoAdvance = 286 const iBool useMonoAdvance = monoAdvance > 0; // && !isJapanese_FontId(fontId_Text_(glyph->font));
286 monoAdvance > 0 && !isJapanese_FontId(fontId_Text_(glyph->font));
287 const float advance = (useMonoAdvance && glyph->advance > 0 ? monoAdvance : glyph->advance); 287 const float advance = (useMonoAdvance && glyph->advance > 0 ? monoAdvance : glyph->advance);
288 if (!isMeasuring_(mode) && ch != 0x20 /* don't bother rendering spaces */) { 288 if (!isMeasuring_(mode) && ch != 0x20 /* don't bother rendering spaces */) {
289 if (useMonoAdvance && dst.w > advance && glyph->font != d && !isEmoji) { 289 if (useMonoAdvance && dst.w > advance && glyph->font != d && !isEmoji) {
@@ -328,9 +328,9 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
328 if (enableKerning_Text && next) { 328 if (enableKerning_Text && next) {
329 const uint32_t nextGlyphIndex = glyphIndex_Font_(glyph->font, next); 329 const uint32_t nextGlyphIndex = glyphIndex_Font_(glyph->font, next);
330 int kern = stbtt_GetGlyphKernAdvance( 330 int kern = stbtt_GetGlyphKernAdvance(
331 &glyph->font->font, index_Glyph_(glyph), nextGlyphIndex); 331 &glyph->font->fontFile->stbInfo, index_Glyph_(glyph), nextGlyphIndex);
332 /* Nunito needs some kerning fixes. */ 332 /* Nunito needs some kerning fixes. */
333 if (glyph->font->family == nunito_TextFont) { 333 if (glyph->font->fontSpec->flags & fixNunitoKerning_FontSpecFlag) {
334 if (ch == 'W' && (next == 'i' || next == 'h')) { 334 if (ch == 'W' && (next == 'i' || next == 'h')) {
335 kern = -30; 335 kern = -30;
336 } 336 }
@@ -362,7 +362,7 @@ static iRect runSimple_Font_(iFont *d, const iRunArgs *args) {
362 break; 362 break;
363 } 363 }
364 } 364 }
365 notify_WrapText_(wrap, chPos, 0, xpos - orig.x, iFalse); 365 notify_WrapText_(wrap, chPos, attrib, 0, xpos - orig.x);
366 if (checkHitChar && wrap->hitChar == args->text.end) { 366 if (checkHitChar && wrap->hitChar == args->text.end) {
367 wrap->hitAdvance_out = sub_I2(init_I2(xpos, ypos), orig); 367 wrap->hitAdvance_out = sub_I2(init_I2(xpos, ypos), orig);
368 } 368 }
diff --git a/src/ui/util.c b/src/ui/util.c
index 6d0453ff..5a58551b 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -1023,11 +1023,13 @@ void openMenuFlags_Widget(iWidget *d, iInt2 windowCoord, int menuOpenFlags) {
1023 setFlags_Widget(d, commandOnMouseMiss_WidgetFlag, iTrue); 1023 setFlags_Widget(d, commandOnMouseMiss_WidgetFlag, iTrue);
1024 setFlags_Widget(findChild_Widget(d, "menu.cancel"), disabled_WidgetFlag, iFalse); 1024 setFlags_Widget(findChild_Widget(d, "menu.cancel"), disabled_WidgetFlag, iFalse);
1025 arrange_Widget(d); /* need to know the height */ 1025 arrange_Widget(d); /* need to know the height */
1026 iBool allowOverflow = iFalse;
1026 /* A vertical offset determined by a possible selected label in the menu. */ { 1027 /* A vertical offset determined by a possible selected label in the menu. */ {
1027 iConstForEach(ObjectList, child, children_Widget(d)) { 1028 iConstForEach(ObjectList, child, children_Widget(d)) {
1028 const iWidget *item = constAs_Widget(child.object); 1029 const iWidget *item = constAs_Widget(child.object);
1029 if (flags_Widget(item) & selected_WidgetFlag) { 1030 if (flags_Widget(item) & selected_WidgetFlag) {
1030 windowCoord.y -= item->rect.pos.y; 1031 windowCoord.y -= item->rect.pos.y;
1032 allowOverflow = iTrue;
1031 } 1033 }
1032 } 1034 }
1033 } 1035 }
@@ -1129,11 +1131,13 @@ void openMenuFlags_Widget(iWidget *d, iInt2 windowCoord, int menuOpenFlags) {
1129 rightExcess += r; 1131 rightExcess += r;
1130 } 1132 }
1131#endif 1133#endif
1132 if (bottomExcess > 0 && (!isPortraitPhone || !isSlidePanel)) { 1134 if (!allowOverflow) {
1133 d->rect.pos.y -= bottomExcess; 1135 if (bottomExcess > 0 && (!isPortraitPhone || !isSlidePanel)) {
1134 } 1136 d->rect.pos.y -= bottomExcess;
1135 if (topExcess > 0) { 1137 }
1136 d->rect.pos.y += topExcess; 1138 if (topExcess > 0) {
1139 d->rect.pos.y += topExcess;
1140 }
1137 } 1141 }
1138 if (rightExcess > 0) { 1142 if (rightExcess > 0) {
1139 d->rect.pos.x -= rightExcess; 1143 d->rect.pos.x -= rightExcess;
@@ -1455,12 +1459,17 @@ void addTabCloseButton_Widget(iWidget *tabs, const iWidget *page, const char *co
1455 iLabelWidget *tabButton = tabButtonForPage_Widget_(tabs, page); 1459 iLabelWidget *tabButton = tabButtonForPage_Widget_(tabs, page);
1456 setPadding_Widget(as_Widget(tabButton), 0, 0, 0, gap_UI / 4); 1460 setPadding_Widget(as_Widget(tabButton), 0, 0, 0, gap_UI / 4);
1457 setFlags_Widget(as_Widget(tabButton), arrangeVertical_WidgetFlag | resizeHeightOfChildren_WidgetFlag, iTrue); 1461 setFlags_Widget(as_Widget(tabButton), arrangeVertical_WidgetFlag | resizeHeightOfChildren_WidgetFlag, iTrue);
1462#if defined (iPlatformApple)
1463 const int64_t edge = moveToParentLeftEdge_WidgetFlag;
1464#else
1465 const int64_t edge = moveToParentRightEdge_WidgetFlag;
1466#endif
1458 iLabelWidget *close = addChildFlags_Widget( 1467 iLabelWidget *close = addChildFlags_Widget(
1459 as_Widget(tabButton), 1468 as_Widget(tabButton),
1460 iClob(new_LabelWidget(close_Icon, 1469 iClob(new_LabelWidget(close_Icon,
1461 format_CStr("%s id:%s", command, cstr_String(id_Widget(page))))), 1470 format_CStr("%s id:%s", command, cstr_String(id_Widget(page))))),
1462 moveToParentRightEdge_WidgetFlag | tight_WidgetFlag | frameless_WidgetFlag | 1471 edge | tight_WidgetFlag | frameless_WidgetFlag | noBackground_WidgetFlag |
1463 noBackground_WidgetFlag | hidden_WidgetFlag | visibleOnParentHover_WidgetFlag); 1472 hidden_WidgetFlag | visibleOnParentHover_WidgetFlag);
1464 if (deviceType_App() != desktop_AppDeviceType) { 1473 if (deviceType_App() != desktop_AppDeviceType) {
1465 setFlags_Widget(as_Widget(close), 1474 setFlags_Widget(as_Widget(close),
1466 hidden_WidgetFlag | visibleOnParentHover_WidgetFlag, iFalse); 1475 hidden_WidgetFlag | visibleOnParentHover_WidgetFlag, iFalse);
@@ -2198,6 +2207,7 @@ iWidget *makePreferences_Widget(void) {
2198 { "${lang.fi} - fi", 0, 0, "uilang id:fi" }, 2207 { "${lang.fi} - fi", 0, 0, "uilang id:fi" },
2199 { "${lang.fr} - fr", 0, 0, "uilang id:fr" }, 2208 { "${lang.fr} - fr", 0, 0, "uilang id:fr" },
2200 { "${lang.gl} - gl", 0, 0, "uilang id:gl" }, 2209 { "${lang.gl} - gl", 0, 0, "uilang id:gl" },
2210 { "${lang.hu} - hu", 0, 0, "uilang id:hu" },
2201 { "${lang.ia} - ia", 0, 0, "uilang id:ia" }, 2211 { "${lang.ia} - ia", 0, 0, "uilang id:ia" },
2202 { "${lang.ie} - ie", 0, 0, "uilang id:ie" }, 2212 { "${lang.ie} - ie", 0, 0, "uilang id:ie" },
2203 { "${lang.isv} - isv", 0, 0, "uilang id:isv" }, 2213 { "${lang.isv} - isv", 0, 0, "uilang id:isv" },
diff --git a/src/ui/widget.c b/src/ui/widget.c
index 8a7127a2..b509cbe2 100644
--- a/src/ui/widget.c
+++ b/src/ui/widget.c
@@ -34,6 +34,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
34#include <the_Foundation/ptrarray.h> 34#include <the_Foundation/ptrarray.h>
35#include <the_Foundation/ptrset.h> 35#include <the_Foundation/ptrset.h>
36#include <SDL_mouse.h> 36#include <SDL_mouse.h>
37#include <SDL_timer.h>
37#include <stdarg.h> 38#include <stdarg.h>
38 39
39#if defined (iPlatformAppleMobile) 40#if defined (iPlatformAppleMobile)
@@ -1136,18 +1137,36 @@ void scrollInfo_Widget(const iWidget *d, iWidgetScrollInfo *info) {
1136 } 1137 }
1137} 1138}
1138 1139
1139iBool scrollOverflow_Widget(iWidget *d, int delta) { 1140static iBool isOverflowScrollPossible_Widget_(const iWidget *d, int delta) {
1141 if (~d->flags & overflowScrollable_WidgetFlag) {
1142 return iFalse;
1143 }
1140 iRect bounds = boundsWithoutVisualOffset_Widget(d); 1144 iRect bounds = boundsWithoutVisualOffset_Widget(d);
1141 const iRect winRect = adjusted_Rect(safeRect_Root(d->root), 1145 const iRect winRect = adjusted_Rect(safeRect_Root(d->root),
1142 zero_I2(), 1146 zero_I2(),
1143 init_I2(0, -get_MainWindow()->keyboardHeight)); 1147 init_I2(0, -get_MainWindow()->keyboardHeight));
1144 const int yTop = top_Rect(winRect); 1148 const int yTop = top_Rect(winRect);
1145 const int yBottom = bottom_Rect(winRect); 1149 const int yBottom = bottom_Rect(winRect);
1146 if (top_Rect(bounds) >= yTop && bottom_Rect(bounds) < yBottom) { 1150 if (delta == 0) {
1147 return iFalse; /* fits inside just fine */ 1151 if (top_Rect(bounds) >= yTop && bottom_Rect(bounds) <= yBottom) {
1152 return iFalse; /* fits inside just fine */
1153 }
1154 }
1155 else if (delta > 0) {
1156 return top_Rect(bounds) < yTop;
1157 }
1158 return bottom_Rect(bounds) > yBottom;
1159}
1160
1161iBool scrollOverflow_Widget(iWidget *d, int delta) {
1162 if (!isOverflowScrollPossible_Widget_(d, delta)) {
1163 return iFalse;
1148 } 1164 }
1149 //const int safeBottom = rootSize.y - yBottom; 1165 iRect bounds = boundsWithoutVisualOffset_Widget(d);
1150 iRangei validPosRange = { bottom_Rect(winRect) - height_Rect(bounds), yTop }; 1166 const iRect winRect = adjusted_Rect(safeRect_Root(d->root),
1167 zero_I2(),
1168 init_I2(0, -get_MainWindow()->keyboardHeight));
1169 iRangei validPosRange = { bottom_Rect(winRect) - height_Rect(bounds), top_Rect(winRect) };
1151 if (validPosRange.start > validPosRange.end) { 1170 if (validPosRange.start > validPosRange.end) {
1152 validPosRange.start = validPosRange.end; /* no room to scroll */ 1171 validPosRange.start = validPosRange.end; /* no room to scroll */
1153 } 1172 }
@@ -1170,21 +1189,29 @@ iBool scrollOverflow_Widget(iWidget *d, int delta) {
1170 else { 1189 else {
1171 bounds.pos.y = iClamp(bounds.pos.y, validPosRange.start, validPosRange.end); 1190 bounds.pos.y = iClamp(bounds.pos.y, validPosRange.start, validPosRange.end);
1172 } 1191 }
1173// if (delta >= 0) {
1174// bounds.pos.y = iMin(bounds.pos.y, yTop);
1175// }
1176// else {
1177// bounds.pos.y = iMax(bounds.pos.y, );
1178// }
1179 const iInt2 newPos = windowToInner_Widget(d->parent, bounds.pos); 1192 const iInt2 newPos = windowToInner_Widget(d->parent, bounds.pos);
1180 if (!isEqual_I2(newPos, d->rect.pos)) { 1193 if (!isEqual_I2(newPos, d->rect.pos)) {
1181 d->rect.pos = newPos; 1194 d->rect.pos = newPos;
1182// refresh_Widget(d);
1183 postRefresh_App(); 1195 postRefresh_App();
1184 } 1196 }
1185 return height_Rect(bounds) > height_Rect(winRect); 1197 return height_Rect(bounds) > height_Rect(winRect);
1186} 1198}
1187 1199
1200static uint32_t lastHoverOverflowMotionTime_;
1201
1202static void overflowHoverAnimation_(iAny *widget) {
1203 iWindow *win = window_Widget(widget);
1204 iInt2 coord = mouseCoord_Window(win, 0);
1205 /* A motion event will cause an overflow window to scroll. */
1206 SDL_MouseMotionEvent ev = {
1207 .type = SDL_MOUSEMOTION,
1208 .windowID = SDL_GetWindowID(win->win),
1209 .x = coord.x / win->pixelRatio,
1210 .y = coord.y / win->pixelRatio,
1211 };
1212 SDL_PushEvent((SDL_Event *) &ev);
1213}
1214
1188iBool processEvent_Widget(iWidget *d, const SDL_Event *ev) { 1215iBool processEvent_Widget(iWidget *d, const SDL_Event *ev) {
1189 if (d->flags & commandOnClick_WidgetFlag && 1216 if (d->flags & commandOnClick_WidgetFlag &&
1190 (ev->type == SDL_MOUSEBUTTONDOWN || ev->type == SDL_MOUSEBUTTONUP) && 1217 (ev->type == SDL_MOUSEBUTTONDOWN || ev->type == SDL_MOUSEBUTTONUP) &&
@@ -1202,14 +1229,45 @@ iBool processEvent_Widget(iWidget *d, const SDL_Event *ev) {
1202 postCommand_Widget(d, "mouse.moved coord:%d %d", ev->motion.x, ev->motion.y); 1229 postCommand_Widget(d, "mouse.moved coord:%d %d", ev->motion.x, ev->motion.y);
1203 return iTrue; 1230 return iTrue;
1204 } 1231 }
1205 else if (d->flags & overflowScrollable_WidgetFlag && ev->type == SDL_MOUSEWHEEL && 1232 else if (d->flags & overflowScrollable_WidgetFlag && ~d->flags & visualOffset_WidgetFlag) {
1206 ~d->flags & visualOffset_WidgetFlag) { 1233 if (ev->type == SDL_MOUSEWHEEL) {
1207 int step = ev->wheel.y; 1234 int step = ev->wheel.y;
1208 if (!isPerPixel_MouseWheelEvent(&ev->wheel)) { 1235 if (!isPerPixel_MouseWheelEvent(&ev->wheel)) {
1209 step *= lineHeight_Text(uiLabel_FontId); 1236 step *= lineHeight_Text(uiLabel_FontId);
1237 }
1238 if (scrollOverflow_Widget(d, step)) {
1239 return iTrue;
1240 }
1210 } 1241 }
1211 if (scrollOverflow_Widget(d, step)) { 1242 else if (ev->type == SDL_MOUSEMOTION && ev->motion.which != SDL_TOUCH_MOUSEID &&
1212 return iTrue; 1243 ev->motion.y >= 0) {
1244 /* TODO: Motion events occur frequently. Maybe it would help if these were handled
1245 via audiences that specifically register to listen for motion, to minimize the
1246 number of widgets that need to process them. */
1247 const int hoverScrollLimit = 2 * lineHeight_Text(default_FontId);
1248 float speed = 0.0f;
1249 if (ev->motion.y < hoverScrollLimit) {
1250 speed = (hoverScrollLimit - ev->motion.y) / (float) hoverScrollLimit;
1251 }
1252 else {
1253 const int bottomLimit = bottom_Rect(rect_Root(d->root)) - hoverScrollLimit;
1254 if (ev->motion.y > bottomLimit ) {
1255 speed = -(ev->motion.y - bottomLimit) / (float) hoverScrollLimit;
1256 }
1257 }
1258 if (speed != 0.0f && isOverflowScrollPossible_Widget_(d, speed > 0 ? 1 : -1)) {
1259 const uint32_t nowTime = SDL_GetTicks();
1260 uint32_t elapsed = nowTime - lastHoverOverflowMotionTime_;
1261 if (elapsed > 100) {
1262 elapsed = 16;
1263 }
1264 int step = elapsed * gap_UI / 16 * iClamp(speed, -1.0f, 1.0f);
1265 if (step != 0) {
1266 lastHoverOverflowMotionTime_ = nowTime;
1267 scrollOverflow_Widget(d, step);
1268 }
1269 addTicker_App(overflowHoverAnimation_, d);
1270 }
1213 } 1271 }
1214 } 1272 }
1215 switch (ev->type) { 1273 switch (ev->type) {