diff options
-rwxr-xr-x | po/compile.py | 41 | ||||
-rw-r--r-- | po/en.po | 453 | ||||
-rw-r--r-- | po/ru.po | 1340 | ||||
-rw-r--r-- | res/lang/en.bin | bin | 6816 -> 11317 bytes | |||
-rw-r--r-- | src/macos.m | 1 | ||||
-rw-r--r-- | src/ui/bindingswidget.c | 12 | ||||
-rw-r--r-- | src/ui/inputwidget.c | 2 | ||||
-rw-r--r-- | src/ui/keys.c | 58 | ||||
-rw-r--r-- | src/ui/sidebarwidget.c | 3 | ||||
-rw-r--r-- | src/ui/translation.c | 4 | ||||
-rw-r--r-- | src/ui/util.c | 254 |
11 files changed, 1991 insertions, 177 deletions
diff --git a/po/compile.py b/po/compile.py index 6e565733..650dc3eb 100755 --- a/po/compile.py +++ b/po/compile.py | |||
@@ -2,8 +2,9 @@ | |||
2 | # Parses all the .po files and generates binary language strings to be loaded | 2 | # Parses all the .po files and generates binary language strings to be loaded |
3 | # at runtime via embedded data. | 3 | # at runtime via embedded data. |
4 | 4 | ||
5 | import os | 5 | import os, sys |
6 | 6 | ||
7 | MODE = 'compile' | ||
7 | ESCAPES = { | 8 | ESCAPES = { |
8 | '\\': '\\', | 9 | '\\': '\\', |
9 | '"': '"', | 10 | '"': '"', |
@@ -12,6 +13,9 @@ ESCAPES = { | |||
12 | 't': '\t' | 13 | 't': '\t' |
13 | } | 14 | } |
14 | 15 | ||
16 | if '--new' in sys.argv: | ||
17 | MODE = 'new' | ||
18 | |||
15 | 19 | ||
16 | def unquote(string): | 20 | def unquote(string): |
17 | txt = string.strip() | 21 | txt = string.strip() |
@@ -30,12 +34,10 @@ def unquote(string): | |||
30 | else: | 34 | else: |
31 | out += c | 35 | out += c |
32 | return out | 36 | return out |
33 | 37 | ||
34 | 38 | ||
35 | messages = [] | 39 | def parse_po(src): |
36 | for src in os.listdir('.'): | 40 | messages = [] |
37 | if not src.endswith('.po'): | ||
38 | continue | ||
39 | msg_id, msg_str = None, None | 41 | msg_id, msg_str = None, None |
40 | for line in open(src, 'rt', encoding='utf-8').readlines(): | 42 | for line in open(src, 'rt', encoding='utf-8').readlines(): |
41 | line = line.strip() | 43 | line = line.strip() |
@@ -44,12 +46,23 @@ for src in os.listdir('.'): | |||
44 | elif line.startswith('msgstr'): | 46 | elif line.startswith('msgstr'): |
45 | msg_str = unquote(line[7:]) | 47 | msg_str = unquote(line[7:]) |
46 | messages.append((msg_id, msg_str)) | 48 | messages.append((msg_id, msg_str)) |
47 | # Make a binary blob with strings sorted by ID. | 49 | return messages |
48 | compiled = bytes() | ||
49 | for msg in sorted(messages): | ||
50 | compiled += msg[0].encode('utf-8') + bytes([0]) | ||
51 | compiled += msg[1].encode('utf-8') + bytes([0]) | ||
52 | #print(compiled) | ||
53 | open(f'../res/lang/{src[:-3]}.bin', 'wb').write(compiled) | ||
54 | 50 | ||
51 | |||
52 | if MODE == 'compile': | ||
53 | for src in os.listdir('.'): | ||
54 | if src.endswith('.po'): | ||
55 | # Make a binary blob with strings sorted by ID. | ||
56 | compiled = bytes() | ||
57 | for msg in sorted(parse_po(src)): | ||
58 | compiled += msg[0].encode('utf-8') + bytes([0]) | ||
59 | compiled += msg[1].encode('utf-8') + bytes([0]) | ||
60 | open(f'../res/lang/{src[:-3]}.bin', 'wb').write(compiled) | ||
61 | |||
62 | elif MODE == 'new': | ||
63 | messages = parse_po('en.po') | ||
64 | f = open('new.po', 'wt', encoding='utf-8') | ||
65 | for msg_id, _ in messages: | ||
66 | print(f'\nmsgid "{msg_id}"\nmsgstr ""\n', file=f) | ||
67 | |||
55 | 68 | ||
@@ -16,6 +16,18 @@ msgstr "Cancel" | |||
16 | msgid "dismiss" | 16 | msgid "dismiss" |
17 | msgstr "Dismiss" | 17 | msgstr "Dismiss" |
18 | 18 | ||
19 | msgid "dlg.message.ok" | ||
20 | msgstr "Continue" | ||
21 | |||
22 | msgid "dlg.default" | ||
23 | msgstr " OK " | ||
24 | |||
25 | msgid "toggle.yes" | ||
26 | msgstr "YES" | ||
27 | |||
28 | msgid "toggle.no" | ||
29 | msgstr "NO" | ||
30 | |||
19 | msgid "menu.title.file" | 31 | msgid "menu.title.file" |
20 | msgstr "File" | 32 | msgstr "File" |
21 | 33 | ||
@@ -175,6 +187,12 @@ msgstr "Subscribe to Pageā¦" | |||
175 | msgid "menu.aboutpages" | 187 | msgid "menu.aboutpages" |
176 | msgstr "About Pages" | 188 | msgstr "About Pages" |
177 | 189 | ||
190 | msgid "menu.about" | ||
191 | msgstr "About" | ||
192 | |||
193 | msgid "panel.back" | ||
194 | msgstr "Back" | ||
195 | |||
178 | msgid "menu.debug" | 196 | msgid "menu.debug" |
179 | msgstr "Debug Information" | 197 | msgstr "Debug Information" |
180 | 198 | ||
@@ -581,3 +599,438 @@ msgstr "View Image" | |||
581 | msgid "bookmark.title.blank" | 599 | msgid "bookmark.title.blank" |
582 | msgstr "Blank Page" | 600 | msgstr "Blank Page" |
583 | 601 | ||
602 | msgid "heading.translate" | ||
603 | msgstr "TRANSLATE PAGE" | ||
604 | |||
605 | msgid "dlg.translate.unavail" | ||
606 | msgstr "Service Unavailable" | ||
607 | |||
608 | msgid "dlg.translate.fail" | ||
609 | msgstr "Request Failed" | ||
610 | |||
611 | msgid "dlg.translate" | ||
612 | msgstr "Translate" | ||
613 | |||
614 | msgid "dlg.translate.from" | ||
615 | msgstr "From:" | ||
616 | |||
617 | msgid "dlg.translate.to" | ||
618 | msgstr "To:" | ||
619 | |||
620 | msgid "lang.ar" | ||
621 | msgstr "Arabic" | ||
622 | |||
623 | msgid "lang.zh" | ||
624 | msgstr "Chinese" | ||
625 | |||
626 | msgid "lang.en" | ||
627 | msgstr "English" | ||
628 | |||
629 | msgid "lang.fr" | ||
630 | msgstr "French" | ||
631 | |||
632 | msgid "lang.de" | ||
633 | msgstr "German" | ||
634 | |||
635 | msgid "lang.hi" | ||
636 | msgstr "Hindi" | ||
637 | |||
638 | msgid "lang.it" | ||
639 | msgstr "Italian" | ||
640 | |||
641 | msgid "lang.ja" | ||
642 | msgstr "Japanese" | ||
643 | |||
644 | msgid "lang.pt" | ||
645 | msgstr "Portuguese" | ||
646 | |||
647 | msgid "lang.ru" | ||
648 | msgstr "Russian" | ||
649 | |||
650 | msgid "lang.es" | ||
651 | msgstr "Spanish" | ||
652 | |||
653 | msgid "heading.newident" | ||
654 | msgstr "NEW IDENTITY" | ||
655 | |||
656 | msgid "dlg.newident.rsa.selfsign" | ||
657 | msgstr "Creating a self-signed 2048-bit RSA certificate." | ||
658 | |||
659 | msgid "dlg.newident.until" | ||
660 | msgstr "Valid until:" | ||
661 | |||
662 | msgid "hint.newident.date" | ||
663 | msgstr "YYYY-MM-DD HH:MM:SS" | ||
664 | |||
665 | msgid "hint.newident.optional" | ||
666 | msgstr "optional" | ||
667 | |||
668 | msgid "dlg.newident.commonname" | ||
669 | msgstr "Common name:" | ||
670 | |||
671 | msgid "dlg.newident.temp" | ||
672 | msgstr "Temporary:" | ||
673 | |||
674 | msgid "dlg.newident.notsaved" | ||
675 | msgstr "not saved to disk" | ||
676 | |||
677 | msgid "dlg.newident.email" | ||
678 | msgstr "Email:" | ||
679 | |||
680 | msgid "dlg.newident.userid" | ||
681 | msgstr "User ID:" | ||
682 | |||
683 | msgid "dlg.newident.domain" | ||
684 | msgstr "Domain:" | ||
685 | |||
686 | msgid "dlg.newident.org" | ||
687 | msgstr "Organization:" | ||
688 | |||
689 | msgid "dlg.newident.country" | ||
690 | msgstr "Country:" | ||
691 | |||
692 | msgid "dlg.newident.create" | ||
693 | msgstr "Create Identity" | ||
694 | |||
695 | msgid "heading.feedcfg" | ||
696 | msgstr "FEED SETTINGS" | ||
697 | |||
698 | msgid "heading.subscribe" | ||
699 | msgstr "SUBSCRIBE TO PAGE" | ||
700 | |||
701 | msgid "dlg.feed.title" | ||
702 | msgstr "Title:" | ||
703 | |||
704 | msgid "dlg.feed.entrytype" | ||
705 | msgstr "Entry type:" | ||
706 | |||
707 | msgid "dlg.feed.type.gemini" | ||
708 | msgstr "YYYY-MM-DD Links" | ||
709 | |||
710 | msgid "dlg.feed.type.headings" | ||
711 | msgstr "New Headings" | ||
712 | |||
713 | msgid "dlg.feed.save" | ||
714 | msgstr "Save Settings" | ||
715 | |||
716 | msgid "dlg.feed.sub" | ||
717 | msgstr "Subscribe" | ||
718 | |||
719 | msgid "heading.bookmark.add" | ||
720 | msgstr "ADD BOOKMARK" | ||
721 | |||
722 | msgid "heading.bookmark.edit" | ||
723 | msgstr "EDIT BOOKMARK" | ||
724 | |||
725 | msgid "dlg.bookmark.save" | ||
726 | msgstr "Save Bookmark" | ||
727 | |||
728 | msgid "dlg.bookmark.title" | ||
729 | msgstr "Title:" | ||
730 | |||
731 | msgid "dlg.bookmark.url" | ||
732 | msgstr "URL:" | ||
733 | |||
734 | msgid "dlg.bookmark.tags" | ||
735 | msgstr "Tags:" | ||
736 | |||
737 | msgid "dlg.bookmark.icon" | ||
738 | msgstr "Icon:" | ||
739 | |||
740 | msgid "heading.prefs" | ||
741 | msgstr "PREFERENCES" | ||
742 | |||
743 | msgid "heading.prefs.certs" | ||
744 | msgstr "CERTIFICATES" | ||
745 | |||
746 | # tab button | ||
747 | msgid "heading.prefs.colors" | ||
748 | msgstr "Colors" | ||
749 | |||
750 | msgid "heading.prefs.fonts" | ||
751 | msgstr "FONTS" | ||
752 | |||
753 | # tab button | ||
754 | msgid "heading.prefs.general" | ||
755 | msgstr "General" | ||
756 | |||
757 | # tab button | ||
758 | msgid "heading.prefs.interface" | ||
759 | msgstr "Interface" | ||
760 | |||
761 | # tab button | ||
762 | msgid "heading.prefs.keys" | ||
763 | msgstr "Keys" | ||
764 | |||
765 | # tab button | ||
766 | msgid "heading.prefs.network" | ||
767 | msgstr "Network" | ||
768 | |||
769 | msgid "heading.prefs.paragraph" | ||
770 | msgstr "PARAGRAPH" | ||
771 | |||
772 | msgid "heading.prefs.pagecontent" | ||
773 | msgstr "PAGE CONTENT" | ||
774 | |||
775 | msgid "heading.prefs.proxies" | ||
776 | msgstr "PROXIES" | ||
777 | |||
778 | msgid "heading.prefs.scrolling" | ||
779 | msgstr "SCROLLING" | ||
780 | |||
781 | msgid "heading.prefs.sizing" | ||
782 | msgstr "SIZING" | ||
783 | |||
784 | msgid "heading.prefs.widelayout" | ||
785 | msgstr "WIDE LAYOUT" | ||
786 | |||
787 | # tab button | ||
788 | msgid "heading.prefs.style" | ||
789 | msgstr "Style" | ||
790 | |||
791 | # tab button | ||
792 | msgid "heading.prefs.userinterface" | ||
793 | msgstr "User Interface" | ||
794 | |||
795 | msgid "prefs.downloads" | ||
796 | msgstr "Donwloads folder:" | ||
797 | |||
798 | msgid "prefs.searchurl" | ||
799 | msgstr "Search URL:" | ||
800 | |||
801 | msgid "prefs.hoverlink" | ||
802 | msgstr "Show URL on hover:" | ||
803 | |||
804 | msgid "prefs.centershort" | ||
805 | msgstr "Vertical centering:" | ||
806 | |||
807 | msgid "prefs.smoothscroll" | ||
808 | msgstr "Smooth scrolling:" | ||
809 | |||
810 | msgid "prefs.imageloadscroll" | ||
811 | msgstr "Load image on scroll:" | ||
812 | |||
813 | msgid "prefs.hidetoolbarscroll" | ||
814 | msgstr "Hide toolbar on scroll:" | ||
815 | |||
816 | msgid "prefs.ostheme" | ||
817 | msgstr "Use system theme:" | ||
818 | |||
819 | msgid "prefs.theme" | ||
820 | msgstr "Theme:" | ||
821 | |||
822 | msgid "prefs.theme.black" | ||
823 | msgstr "Pure Black" | ||
824 | |||
825 | msgid "prefs.theme.dark" | ||
826 | msgstr "Dark" | ||
827 | |||
828 | msgid "prefs.theme.light" | ||
829 | msgstr "Light" | ||
830 | |||
831 | msgid "prefs.theme.white" | ||
832 | msgstr "Pure White" | ||
833 | |||
834 | msgid "prefs.accent" | ||
835 | msgstr "Accent color:" | ||
836 | |||
837 | msgid "prefs.accent.teal" | ||
838 | msgstr "Teal" | ||
839 | |||
840 | msgid "prefs.accent.orange" | ||
841 | msgstr "Orange" | ||
842 | |||
843 | msgid "prefs.uiscale" | ||
844 | msgstr "UI scale factor:" | ||
845 | |||
846 | msgid "prefs.customframe" | ||
847 | msgstr "Custom window frame:" | ||
848 | |||
849 | msgid "prefs.retainwindow" | ||
850 | msgstr "Retain placement:" | ||
851 | |||
852 | msgid "prefs.sideicon" | ||
853 | msgstr "Capsule icon:" | ||
854 | |||
855 | msgid "prefs.doctheme.dark" | ||
856 | msgstr "Dark theme:" | ||
857 | |||
858 | msgid "prefs.doctheme.light" | ||
859 | msgstr "Light theme:" | ||
860 | |||
861 | msgid "prefs.doctheme.name.colorfuldark" | ||
862 | msgstr "Colorful Dark" | ||
863 | |||
864 | msgid "prefs.doctheme.name.colorfullight" | ||
865 | msgstr "Colorful Light" | ||
866 | |||
867 | msgid "prefs.doctheme.name.black" | ||
868 | msgstr "Black" | ||
869 | |||
870 | msgid "prefs.doctheme.name.gray" | ||
871 | msgstr "Gray" | ||
872 | |||
873 | msgid "prefs.doctheme.name.white" | ||
874 | msgstr "White" | ||
875 | |||
876 | msgid "prefs.doctheme.name.sepia" | ||
877 | msgstr "Sepia" | ||
878 | |||
879 | msgid "prefs.doctheme.name.highcontrast" | ||
880 | msgstr "High Contrast" | ||
881 | |||
882 | msgid "prefs.saturation" | ||
883 | msgstr "Saturation:" | ||
884 | |||
885 | msgid "prefs.headingfont" | ||
886 | msgstr "Heading font:" | ||
887 | |||
888 | msgid "prefs.font" | ||
889 | msgstr "Body font:" | ||
890 | |||
891 | msgid "prefs.mono" | ||
892 | msgstr "Monospace body:" | ||
893 | |||
894 | msgid "prefs.mono.gemini" | ||
895 | msgstr "Gemini" | ||
896 | |||
897 | msgid "prefs.mono.gopher" | ||
898 | msgstr "Gopher" | ||
899 | |||
900 | msgid "prefs.linewidth" | ||
901 | msgstr "Line width:" | ||
902 | |||
903 | msgid "prefs.linewidth.normal" | ||
904 | msgstr "Normal" | ||
905 | |||
906 | msgid "prefs.linewidth.fill" | ||
907 | msgstr "Fill" | ||
908 | |||
909 | msgid "prefs.quoteicon" | ||
910 | msgstr "Quote indicator:" | ||
911 | |||
912 | msgid "prefs.quoteicon.icon" | ||
913 | msgstr "\" Icon" | ||
914 | |||
915 | msgid "prefs.quoteicon.line" | ||
916 | msgstr "Line" | ||
917 | |||
918 | msgid "prefs.biglede" | ||
919 | msgstr "Big 1st paragaph:" | ||
920 | |||
921 | msgid "prefs.plaintext.wrap" | ||
922 | msgstr "Wrap plain text:" | ||
923 | |||
924 | msgid "prefs.decodeurls" | ||
925 | msgstr "Decode URLs:" | ||
926 | |||
927 | msgid "prefs.cachesize" | ||
928 | msgstr "Cache size:" | ||
929 | |||
930 | msgid "prefs.ca.file" | ||
931 | msgstr "CA file:" | ||
932 | |||
933 | msgid "prefs.ca.path" | ||
934 | msgstr "CA path:" | ||
935 | |||
936 | msgid "prefs.proxy.gemini" | ||
937 | msgstr "Gemini proxy:" | ||
938 | |||
939 | msgid "prefs.proxy.gopher" | ||
940 | msgstr "Gopher proxy:" | ||
941 | |||
942 | msgid "prefs.proxy.http" | ||
943 | msgstr "HTTP proxy:" | ||
944 | |||
945 | msgid "menu.binding.reset" | ||
946 | msgstr "Reset to Default" | ||
947 | |||
948 | msgid "menu.binding.clear" | ||
949 | msgstr "Remove" | ||
950 | |||
951 | msgid "keys.top" | ||
952 | msgstr "Jump to top" | ||
953 | |||
954 | msgid "keys.bottom" | ||
955 | msgstr "Jump to bottom" | ||
956 | |||
957 | msgid "keys.scroll.up" | ||
958 | msgstr "Scroll up" | ||
959 | |||
960 | msgid "keys.scroll.down" | ||
961 | msgstr "Scroll down" | ||
962 | |||
963 | msgid "keys.scroll.halfpage.up" | ||
964 | msgstr "Scroll up half a page" | ||
965 | |||
966 | msgid "keys.scroll.halfpage.down" | ||
967 | msgstr "Scroll down half a page" | ||
968 | |||
969 | msgid "keys.scroll.page.up" | ||
970 | msgstr "Scroll up a page" | ||
971 | |||
972 | msgid "keys.scroll.page.down" | ||
973 | msgstr "Scroll down a page" | ||
974 | |||
975 | msgid "keys.back" | ||
976 | msgstr "Go back" | ||
977 | |||
978 | msgid "keys.forward" | ||
979 | msgstr "Go forward" | ||
980 | |||
981 | msgid "keys.parent" | ||
982 | msgstr "Go to parent directory" | ||
983 | |||
984 | msgid "keys.root" | ||
985 | msgstr "Go to capsule root" | ||
986 | |||
987 | msgid "keys.reload" | ||
988 | msgstr "Reload page" | ||
989 | |||
990 | msgid "keys.link.modkey" | ||
991 | msgstr "Open link via modifier key" | ||
992 | |||
993 | msgid "keys.link.homerow" | ||
994 | msgstr "Open link via home row keys" | ||
995 | |||
996 | msgid "keys.link.homerow.newtab" | ||
997 | msgstr "Open link in new tab via home row keys" | ||
998 | |||
999 | msgid "keys.link.homerow.hover" | ||
1000 | msgstr "Hover on link via home row keys" | ||
1001 | |||
1002 | msgid "keys.link.homerow.next" | ||
1003 | msgstr "Next set of home row key links" | ||
1004 | |||
1005 | msgid "keys.bookmark.add" | ||
1006 | msgstr "Add bookmark" | ||
1007 | |||
1008 | msgid "keys.findtext" | ||
1009 | msgstr "Find text on page" | ||
1010 | |||
1011 | msgid "keys.zoom.in" | ||
1012 | msgstr "Zoom in" | ||
1013 | |||
1014 | msgid "keys.zoom.out" | ||
1015 | msgstr "Zoom out" | ||
1016 | |||
1017 | msgid "keys.zoom.reset" | ||
1018 | msgstr "Reset zoom" | ||
1019 | |||
1020 | msgid "keys.fullscreen" | ||
1021 | msgstr "Toggle fullscreen mode" | ||
1022 | |||
1023 | msgid "keys.tab.new" | ||
1024 | msgstr "New tab" | ||
1025 | |||
1026 | msgid "keys.tab.close" | ||
1027 | msgstr "Close tab" | ||
1028 | |||
1029 | msgid "keys.tab.prev" | ||
1030 | msgstr "Previous tab" | ||
1031 | |||
1032 | msgid "keys.tab.next" | ||
1033 | msgstr "Next tab" | ||
1034 | |||
1035 | msgid "keys.hoverurl" | ||
1036 | msgstr "Toggle show URL on hover" | ||
diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..8abcf95b --- /dev/null +++ b/po/ru.po | |||
@@ -0,0 +1,1340 @@ | |||
1 | |||
2 | msgid "about.logo" | ||
3 | msgstr "" | ||
4 | |||
5 | |||
6 | msgid "about.tagline" | ||
7 | msgstr "" | ||
8 | |||
9 | |||
10 | msgid "about.version" | ||
11 | msgstr "" | ||
12 | |||
13 | |||
14 | msgid "about.powered" | ||
15 | msgstr "" | ||
16 | |||
17 | |||
18 | msgid "cancel" | ||
19 | msgstr "" | ||
20 | |||
21 | |||
22 | msgid "dismiss" | ||
23 | msgstr "" | ||
24 | |||
25 | |||
26 | msgid "dlg.message.ok" | ||
27 | msgstr "" | ||
28 | |||
29 | |||
30 | msgid "dlg.default" | ||
31 | msgstr "" | ||
32 | |||
33 | |||
34 | msgid "toggle.yes" | ||
35 | msgstr "" | ||
36 | |||
37 | |||
38 | msgid "toggle.no" | ||
39 | msgstr "" | ||
40 | |||
41 | |||
42 | msgid "menu.title.file" | ||
43 | msgstr "" | ||
44 | |||
45 | |||
46 | msgid "menu.title.edit" | ||
47 | msgstr "" | ||
48 | |||
49 | |||
50 | msgid "menu.title.view" | ||
51 | msgstr "" | ||
52 | |||
53 | |||
54 | msgid "menu.title.bookmarks" | ||
55 | msgstr "" | ||
56 | |||
57 | |||
58 | msgid "menu.title.identity" | ||
59 | msgstr "" | ||
60 | |||
61 | |||
62 | msgid "menu.title.help" | ||
63 | msgstr "" | ||
64 | |||
65 | |||
66 | msgid "menu.newtab" | ||
67 | msgstr "" | ||
68 | |||
69 | |||
70 | msgid "menu.closetab" | ||
71 | msgstr "" | ||
72 | |||
73 | |||
74 | msgid "menu.closetab.other" | ||
75 | msgstr "" | ||
76 | |||
77 | |||
78 | msgid "menu.closetab.left" | ||
79 | msgstr "" | ||
80 | |||
81 | |||
82 | msgid "menu.closetab.right" | ||
83 | msgstr "" | ||
84 | |||
85 | |||
86 | msgid "menu.duptab" | ||
87 | msgstr "" | ||
88 | |||
89 | |||
90 | msgid "menu.openlocation" | ||
91 | msgstr "" | ||
92 | |||
93 | |||
94 | msgid "menu.find" | ||
95 | msgstr "" | ||
96 | |||
97 | |||
98 | msgid "macos.menu.find" | ||
99 | msgstr "" | ||
100 | |||
101 | |||
102 | msgid "menu.save.files" | ||
103 | msgstr "" | ||
104 | |||
105 | |||
106 | msgid "menu.save.downloads" | ||
107 | msgstr "" | ||
108 | |||
109 | |||
110 | msgid "menu.copy.source" | ||
111 | msgstr "" | ||
112 | |||
113 | |||
114 | msgid "menu.sidebar" | ||
115 | msgstr "" | ||
116 | |||
117 | |||
118 | msgid "menu.sidebar.left" | ||
119 | msgstr "" | ||
120 | |||
121 | |||
122 | msgid "menu.sidebar.right" | ||
123 | msgstr "" | ||
124 | |||
125 | |||
126 | msgid "menu.zoom.in" | ||
127 | msgstr "" | ||
128 | |||
129 | |||
130 | msgid "menu.zoom.out" | ||
131 | msgstr "" | ||
132 | |||
133 | |||
134 | msgid "menu.zoom.reset" | ||
135 | msgstr "" | ||
136 | |||
137 | |||
138 | msgid "menu.bookmarks.list" | ||
139 | msgstr "" | ||
140 | |||
141 | |||
142 | msgid "macos.menu.bookmarks.list" | ||
143 | msgstr "" | ||
144 | |||
145 | |||
146 | msgid "menu.bookmarks.bytag" | ||
147 | msgstr "" | ||
148 | |||
149 | |||
150 | msgid "macos.menu.bookmarks.bytag" | ||
151 | msgstr "" | ||
152 | |||
153 | |||
154 | msgid "menu.bookmarks.bytime" | ||
155 | msgstr "" | ||
156 | |||
157 | |||
158 | msgid "macos.menu.bookmarks.bytime" | ||
159 | msgstr "" | ||
160 | |||
161 | |||
162 | msgid "menu.feeds.entrylist" | ||
163 | msgstr "" | ||
164 | |||
165 | |||
166 | msgid "menu.preferences" | ||
167 | msgstr "" | ||
168 | |||
169 | |||
170 | msgid "menu.help" | ||
171 | msgstr "" | ||
172 | |||
173 | |||
174 | msgid "menu.releasenotes" | ||
175 | msgstr "" | ||
176 | |||
177 | |||
178 | msgid "menu.quit" | ||
179 | msgstr "" | ||
180 | |||
181 | |||
182 | msgid "menu.cut" | ||
183 | msgstr "" | ||
184 | |||
185 | |||
186 | msgid "menu.copy" | ||
187 | msgstr "" | ||
188 | |||
189 | |||
190 | msgid "menu.paste" | ||
191 | msgstr "" | ||
192 | |||
193 | |||
194 | msgid "menu.copy.pagelink" | ||
195 | msgstr "" | ||
196 | |||
197 | |||
198 | msgid "menu.show.bookmarks" | ||
199 | msgstr "" | ||
200 | |||
201 | |||
202 | msgid "menu.show.feeds" | ||
203 | msgstr "" | ||
204 | |||
205 | |||
206 | msgid "menu.show.history" | ||
207 | msgstr "" | ||
208 | |||
209 | |||
210 | msgid "menu.show.identities" | ||
211 | msgstr "" | ||
212 | |||
213 | |||
214 | msgid "menu.show.outline" | ||
215 | msgstr "" | ||
216 | |||
217 | |||
218 | msgid "menu.back" | ||
219 | msgstr "" | ||
220 | |||
221 | |||
222 | msgid "menu.forward" | ||
223 | msgstr "" | ||
224 | |||
225 | |||
226 | msgid "menu.parent" | ||
227 | msgstr "" | ||
228 | |||
229 | |||
230 | msgid "menu.root" | ||
231 | msgstr "" | ||
232 | |||
233 | |||
234 | msgid "menu.reload" | ||
235 | msgstr "" | ||
236 | |||
237 | |||
238 | msgid "menu.autoreload" | ||
239 | msgstr "" | ||
240 | |||
241 | |||
242 | msgid "menu.page.bookmark" | ||
243 | msgstr "" | ||
244 | |||
245 | |||
246 | msgid "menu.page.subscribe" | ||
247 | msgstr "" | ||
248 | |||
249 | |||
250 | msgid "menu.aboutpages" | ||
251 | msgstr "" | ||
252 | |||
253 | |||
254 | msgid "menu.about" | ||
255 | msgstr "" | ||
256 | |||
257 | |||
258 | msgid "panel.back" | ||
259 | msgstr "" | ||
260 | |||
261 | |||
262 | msgid "menu.debug" | ||
263 | msgstr "" | ||
264 | |||
265 | |||
266 | msgid "menu.import.links" | ||
267 | msgstr "" | ||
268 | |||
269 | |||
270 | msgid "menu.page.import" | ||
271 | msgstr "" | ||
272 | |||
273 | |||
274 | msgid "menu.page.translate" | ||
275 | msgstr "" | ||
276 | |||
277 | |||
278 | msgid "menu.page.copyurl" | ||
279 | msgstr "" | ||
280 | |||
281 | |||
282 | msgid "menu.page.copysource" | ||
283 | msgstr "" | ||
284 | |||
285 | |||
286 | msgid "menu.bookmarks.refresh" | ||
287 | msgstr "" | ||
288 | |||
289 | |||
290 | msgid "menu.feeds.refresh" | ||
291 | msgstr "" | ||
292 | |||
293 | |||
294 | msgid "menu.identity.new" | ||
295 | msgstr "" | ||
296 | |||
297 | |||
298 | msgid "menu.identity.import" | ||
299 | msgstr "" | ||
300 | |||
301 | |||
302 | msgid "menu.identity.notactive" | ||
303 | msgstr "" | ||
304 | |||
305 | |||
306 | msgid "sidebar.bookmarks" | ||
307 | msgstr "" | ||
308 | |||
309 | |||
310 | msgid "sidebar.feeds" | ||
311 | msgstr "" | ||
312 | |||
313 | |||
314 | msgid "sidebar.history" | ||
315 | msgstr "" | ||
316 | |||
317 | |||
318 | msgid "sidebar.identities" | ||
319 | msgstr "" | ||
320 | |||
321 | |||
322 | msgid "sidebar.outline" | ||
323 | msgstr "" | ||
324 | |||
325 | |||
326 | msgid "sidebar.unread" | ||
327 | msgstr "" | ||
328 | |||
329 | |||
330 | msgid "toolbar.outline" | ||
331 | msgstr "" | ||
332 | |||
333 | |||
334 | msgid "hint.findtext" | ||
335 | msgstr "" | ||
336 | |||
337 | |||
338 | msgid "status.query" | ||
339 | msgstr "" | ||
340 | |||
341 | |||
342 | msgid "status.feeds" | ||
343 | msgstr "" | ||
344 | |||
345 | |||
346 | msgid "mb" | ||
347 | msgstr "" | ||
348 | |||
349 | |||
350 | msgid "kb" | ||
351 | msgstr "" | ||
352 | |||
353 | |||
354 | msgid "bytes" | ||
355 | msgstr "" | ||
356 | |||
357 | |||
358 | msgid "page.timestamp" | ||
359 | msgstr "" | ||
360 | |||
361 | |||
362 | msgid "sidebar.date.thisyear" | ||
363 | msgstr "" | ||
364 | |||
365 | |||
366 | msgid "sidebar.date.otheryear" | ||
367 | msgstr "" | ||
368 | |||
369 | |||
370 | msgid "feeds.today" | ||
371 | msgstr "" | ||
372 | |||
373 | |||
374 | msgid "feeds.entry.newtab" | ||
375 | msgstr "" | ||
376 | |||
377 | |||
378 | msgid "feeds.entry.markread" | ||
379 | msgstr "" | ||
380 | |||
381 | |||
382 | msgid "feeds.entry.markunread" | ||
383 | msgstr "" | ||
384 | |||
385 | |||
386 | msgid "sidebar.entry.bookmark" | ||
387 | msgstr "" | ||
388 | |||
389 | |||
390 | msgid "feeds.entry.bookmark" | ||
391 | msgstr "" | ||
392 | |||
393 | |||
394 | msgid "feeds.entry.openfeed" | ||
395 | msgstr "" | ||
396 | |||
397 | |||
398 | msgid "feeds.edit" | ||
399 | msgstr "" | ||
400 | |||
401 | |||
402 | msgid "feeds.unsubscribe" | ||
403 | msgstr "" | ||
404 | |||
405 | |||
406 | msgid "feeds.markallread" | ||
407 | msgstr "" | ||
408 | |||
409 | |||
410 | msgid "feeds.refresh" | ||
411 | msgstr "" | ||
412 | |||
413 | |||
414 | msgid "menu.opentab" | ||
415 | msgstr "" | ||
416 | |||
417 | |||
418 | msgid "menu.opentab.background" | ||
419 | msgstr "" | ||
420 | |||
421 | |||
422 | msgid "menu.edit" | ||
423 | msgstr "" | ||
424 | |||
425 | |||
426 | msgid "menu.dup" | ||
427 | msgstr "" | ||
428 | |||
429 | |||
430 | msgid "menu.copyurl" | ||
431 | msgstr "" | ||
432 | |||
433 | |||
434 | msgid "menu.forgeturl" | ||
435 | msgstr "" | ||
436 | |||
437 | |||
438 | msgid "history.clear" | ||
439 | msgstr "" | ||
440 | |||
441 | |||
442 | msgid "heading.history.clear" | ||
443 | msgstr "" | ||
444 | |||
445 | |||
446 | msgid "dlg.confirm.history.clear" | ||
447 | msgstr "" | ||
448 | |||
449 | |||
450 | msgid "dlg.history.clear" | ||
451 | msgstr "" | ||
452 | |||
453 | |||
454 | msgid "bookmark.tag.home" | ||
455 | msgstr "" | ||
456 | |||
457 | |||
458 | msgid "bookmark.tag.sub" | ||
459 | msgstr "" | ||
460 | |||
461 | |||
462 | msgid "bookmark.tag.remote" | ||
463 | msgstr "" | ||
464 | |||
465 | |||
466 | msgid "bookmark.untag.home" | ||
467 | msgstr "" | ||
468 | |||
469 | |||
470 | msgid "bookmark.untag.sub" | ||
471 | msgstr "" | ||
472 | |||
473 | |||
474 | msgid "bookmark.untag.remote" | ||
475 | msgstr "" | ||
476 | |||
477 | |||
478 | msgid "bookmark.delete" | ||
479 | msgstr "" | ||
480 | |||
481 | |||
482 | msgid "bookmarks.reload" | ||
483 | msgstr "" | ||
484 | |||
485 | |||
486 | msgid "ident.using" | ||
487 | msgstr "" | ||
488 | |||
489 | |||
490 | msgid "ident.notused" | ||
491 | msgstr "" | ||
492 | |||
493 | |||
494 | msgid "ident.usedonurls" | ||
495 | msgstr "" | ||
496 | |||
497 | |||
498 | msgid "ident.temporary" | ||
499 | msgstr "" | ||
500 | |||
501 | |||
502 | msgid "ident.expiry" | ||
503 | msgstr "" | ||
504 | |||
505 | |||
506 | msgid "ident.use" | ||
507 | msgstr "" | ||
508 | |||
509 | |||
510 | msgid "ident.stopuse" | ||
511 | msgstr "" | ||
512 | |||
513 | |||
514 | msgid "ident.stopuse.all" | ||
515 | msgstr "" | ||
516 | |||
517 | |||
518 | msgid "ident.showuse" | ||
519 | msgstr "" | ||
520 | |||
521 | |||
522 | msgid "heading.ident.use" | ||
523 | msgstr "" | ||
524 | |||
525 | |||
526 | msgid "menu.edit.notes" | ||
527 | msgstr "" | ||
528 | |||
529 | |||
530 | msgid "heading.ident.notes" | ||
531 | msgstr "" | ||
532 | |||
533 | |||
534 | msgid "dlg.ident.notes" | ||
535 | msgstr "" | ||
536 | |||
537 | |||
538 | msgid "ident.fingerprint" | ||
539 | msgstr "" | ||
540 | |||
541 | |||
542 | msgid "ident.delete" | ||
543 | msgstr "" | ||
544 | |||
545 | |||
546 | msgid "heading.ident.delete" | ||
547 | msgstr "" | ||
548 | |||
549 | |||
550 | msgid "dlg.confirm.ident.delete" | ||
551 | msgstr "" | ||
552 | |||
553 | |||
554 | msgid "dlg.ident.delete" | ||
555 | msgstr "" | ||
556 | |||
557 | |||
558 | msgid "sidebar.empty.idents" | ||
559 | msgstr "" | ||
560 | |||
561 | |||
562 | msgid "ident.gotohelp" | ||
563 | msgstr "" | ||
564 | |||
565 | |||
566 | msgid "heading.unsub" | ||
567 | msgstr "" | ||
568 | |||
569 | |||
570 | msgid "dlg.confirm.unsub" | ||
571 | msgstr "" | ||
572 | |||
573 | |||
574 | msgid "dlg.unsub" | ||
575 | msgstr "" | ||
576 | |||
577 | |||
578 | msgid "error.unsupported.suggestsave" | ||
579 | msgstr "" | ||
580 | |||
581 | |||
582 | msgid "heading.pageinfo" | ||
583 | msgstr "" | ||
584 | |||
585 | |||
586 | msgid "pageinfo.header.cached" | ||
587 | msgstr "" | ||
588 | |||
589 | |||
590 | msgid "pageinfo.cert.status" | ||
591 | msgstr "" | ||
592 | |||
593 | |||
594 | msgid "pageinfo.cert.ca.verified" | ||
595 | msgstr "" | ||
596 | |||
597 | |||
598 | msgid "pageinfo.cert.ca.unverified" | ||
599 | msgstr "" | ||
600 | |||
601 | |||
602 | msgid "pageinfo.cert.notexpired" | ||
603 | msgstr "" | ||
604 | |||
605 | |||
606 | msgid "pageinfo.cert.expired" | ||
607 | msgstr "" | ||
608 | |||
609 | |||
610 | msgid "pageinfo.cert.trusted" | ||
611 | msgstr "" | ||
612 | |||
613 | |||
614 | msgid "pageinfo.cert.untrusted" | ||
615 | msgstr "" | ||
616 | |||
617 | |||
618 | msgid "pageinfo.domain.match" | ||
619 | msgstr "" | ||
620 | |||
621 | |||
622 | msgid "pageinfo.domain.mismatch" | ||
623 | msgstr "" | ||
624 | |||
625 | |||
626 | msgid "dlg.cert.trust" | ||
627 | msgstr "" | ||
628 | |||
629 | |||
630 | msgid "dlg.cert.fingerprint" | ||
631 | msgstr "" | ||
632 | |||
633 | |||
634 | msgid "dlg.input.prompt" | ||
635 | msgstr "" | ||
636 | |||
637 | |||
638 | msgid "dlg.input.send" | ||
639 | msgstr "" | ||
640 | |||
641 | |||
642 | msgid "heading.save" | ||
643 | msgstr "" | ||
644 | |||
645 | |||
646 | msgid "heading.save.incomplete" | ||
647 | msgstr "" | ||
648 | |||
649 | |||
650 | msgid "dlg.save.incomplete" | ||
651 | msgstr "" | ||
652 | |||
653 | |||
654 | msgid "dlg.save.size" | ||
655 | msgstr "" | ||
656 | |||
657 | |||
658 | msgid "heading.save.error" | ||
659 | msgstr "" | ||
660 | |||
661 | |||
662 | msgid "heading.import.bookmarks" | ||
663 | msgstr "" | ||
664 | |||
665 | |||
666 | msgid "dlg.import.found" | ||
667 | msgstr "" | ||
668 | |||
669 | |||
670 | msgid "dlg.import.found.many" | ||
671 | msgstr "" | ||
672 | |||
673 | |||
674 | msgid "dlg.import.add" | ||
675 | msgstr "" | ||
676 | |||
677 | |||
678 | msgid "dlg.import.add.many" | ||
679 | msgstr "" | ||
680 | |||
681 | |||
682 | msgid "dlg.import.notnew" | ||
683 | msgstr "" | ||
684 | |||
685 | |||
686 | msgid "heading.autoreload" | ||
687 | msgstr "" | ||
688 | |||
689 | |||
690 | msgid "dlg.autoreload" | ||
691 | msgstr "" | ||
692 | |||
693 | |||
694 | msgid "link.newtab" | ||
695 | msgstr "" | ||
696 | |||
697 | |||
698 | msgid "link.newtab.background" | ||
699 | msgstr "" | ||
700 | |||
701 | |||
702 | msgid "link.browser" | ||
703 | msgstr "" | ||
704 | |||
705 | |||
706 | msgid "link.noproxy" | ||
707 | msgstr "" | ||
708 | |||
709 | |||
710 | msgid "link.copy" | ||
711 | msgstr "" | ||
712 | |||
713 | |||
714 | msgid "link.bookmark" | ||
715 | msgstr "" | ||
716 | |||
717 | |||
718 | msgid "link.download" | ||
719 | msgstr "" | ||
720 | |||
721 | |||
722 | msgid "heading.openlink" | ||
723 | msgstr "" | ||
724 | |||
725 | |||
726 | msgid "dlg.openlink.confirm" | ||
727 | msgstr "" | ||
728 | |||
729 | |||
730 | msgid "dlg.openlink" | ||
731 | msgstr "" | ||
732 | |||
733 | |||
734 | msgid "heading.certwarn" | ||
735 | msgstr "" | ||
736 | |||
737 | |||
738 | msgid "dlg.certwarn.mayberenewed" | ||
739 | msgstr "" | ||
740 | |||
741 | |||
742 | msgid "dlg.certwarn.different" | ||
743 | msgstr "" | ||
744 | |||
745 | |||
746 | msgid "dlg.certwarn.expired" | ||
747 | msgstr "" | ||
748 | |||
749 | |||
750 | msgid "dlg.certwarn.domain" | ||
751 | msgstr "" | ||
752 | |||
753 | |||
754 | msgid "dlg.certwarn.domain.expired" | ||
755 | msgstr "" | ||
756 | |||
757 | |||
758 | msgid "link.hint.audio" | ||
759 | msgstr "" | ||
760 | |||
761 | |||
762 | msgid "link.hint.image" | ||
763 | msgstr "" | ||
764 | |||
765 | |||
766 | msgid "bookmark.title.blank" | ||
767 | msgstr "" | ||
768 | |||
769 | |||
770 | msgid "heading.translate" | ||
771 | msgstr "" | ||
772 | |||
773 | |||
774 | msgid "dlg.translate.unavail" | ||
775 | msgstr "" | ||
776 | |||
777 | |||
778 | msgid "dlg.translate.fail" | ||
779 | msgstr "" | ||
780 | |||
781 | |||
782 | msgid "dlg.translate" | ||
783 | msgstr "" | ||
784 | |||
785 | |||
786 | msgid "dlg.translate.from" | ||
787 | msgstr "" | ||
788 | |||
789 | |||
790 | msgid "dlg.translate.to" | ||
791 | msgstr "" | ||
792 | |||
793 | |||
794 | msgid "lang.ar" | ||
795 | msgstr "" | ||
796 | |||
797 | |||
798 | msgid "lang.zh" | ||
799 | msgstr "" | ||
800 | |||
801 | |||
802 | msgid "lang.en" | ||
803 | msgstr "" | ||
804 | |||
805 | |||
806 | msgid "lang.fr" | ||
807 | msgstr "" | ||
808 | |||
809 | |||
810 | msgid "lang.de" | ||
811 | msgstr "" | ||
812 | |||
813 | |||
814 | msgid "lang.hi" | ||
815 | msgstr "" | ||
816 | |||
817 | |||
818 | msgid "lang.it" | ||
819 | msgstr "" | ||
820 | |||
821 | |||
822 | msgid "lang.ja" | ||
823 | msgstr "" | ||
824 | |||
825 | |||
826 | msgid "lang.pt" | ||
827 | msgstr "" | ||
828 | |||
829 | |||
830 | msgid "lang.ru" | ||
831 | msgstr "" | ||
832 | |||
833 | |||
834 | msgid "lang.es" | ||
835 | msgstr "" | ||
836 | |||
837 | |||
838 | msgid "heading.newident" | ||
839 | msgstr "" | ||
840 | |||
841 | |||
842 | msgid "dlg.newident.rsa.selfsign" | ||
843 | msgstr "" | ||
844 | |||
845 | |||
846 | msgid "dlg.newident.until" | ||
847 | msgstr "" | ||
848 | |||
849 | |||
850 | msgid "hint.newident.date" | ||
851 | msgstr "" | ||
852 | |||
853 | |||
854 | msgid "hint.newident.optional" | ||
855 | msgstr "" | ||
856 | |||
857 | |||
858 | msgid "dlg.newident.commonname" | ||
859 | msgstr "" | ||
860 | |||
861 | |||
862 | msgid "dlg.newident.temp" | ||
863 | msgstr "" | ||
864 | |||
865 | |||
866 | msgid "dlg.newident.notsaved" | ||
867 | msgstr "" | ||
868 | |||
869 | |||
870 | msgid "dlg.newident.email" | ||
871 | msgstr "" | ||
872 | |||
873 | |||
874 | msgid "dlg.newident.userid" | ||
875 | msgstr "" | ||
876 | |||
877 | |||
878 | msgid "dlg.newident.domain" | ||
879 | msgstr "" | ||
880 | |||
881 | |||
882 | msgid "dlg.newident.org" | ||
883 | msgstr "" | ||
884 | |||
885 | |||
886 | msgid "dlg.newident.country" | ||
887 | msgstr "" | ||
888 | |||
889 | |||
890 | msgid "dlg.newident.create" | ||
891 | msgstr "" | ||
892 | |||
893 | |||
894 | msgid "heading.feedcfg" | ||
895 | msgstr "" | ||
896 | |||
897 | |||
898 | msgid "heading.subscribe" | ||
899 | msgstr "" | ||
900 | |||
901 | |||
902 | msgid "dlg.feed.title" | ||
903 | msgstr "" | ||
904 | |||
905 | |||
906 | msgid "dlg.feed.entrytype" | ||
907 | msgstr "" | ||
908 | |||
909 | |||
910 | msgid "dlg.feed.type.gemini" | ||
911 | msgstr "" | ||
912 | |||
913 | |||
914 | msgid "dlg.feed.type.headings" | ||
915 | msgstr "" | ||
916 | |||
917 | |||
918 | msgid "dlg.feed.save" | ||
919 | msgstr "" | ||
920 | |||
921 | |||
922 | msgid "dlg.feed.sub" | ||
923 | msgstr "" | ||
924 | |||
925 | |||
926 | msgid "heading.bookmark.add" | ||
927 | msgstr "" | ||
928 | |||
929 | |||
930 | msgid "heading.bookmark.edit" | ||
931 | msgstr "" | ||
932 | |||
933 | |||
934 | msgid "dlg.bookmark.save" | ||
935 | msgstr "" | ||
936 | |||
937 | |||
938 | msgid "dlg.bookmark.title" | ||
939 | msgstr "" | ||
940 | |||
941 | |||
942 | msgid "dlg.bookmark.url" | ||
943 | msgstr "" | ||
944 | |||
945 | |||
946 | msgid "dlg.bookmark.tags" | ||
947 | msgstr "" | ||
948 | |||
949 | |||
950 | msgid "dlg.bookmark.icon" | ||
951 | msgstr "" | ||
952 | |||
953 | |||
954 | msgid "heading.prefs" | ||
955 | msgstr "" | ||
956 | |||
957 | |||
958 | msgid "heading.prefs.certs" | ||
959 | msgstr "" | ||
960 | |||
961 | |||
962 | msgid "heading.prefs.colors" | ||
963 | msgstr "" | ||
964 | |||
965 | |||
966 | msgid "heading.prefs.fonts" | ||
967 | msgstr "" | ||
968 | |||
969 | |||
970 | msgid "heading.prefs.general" | ||
971 | msgstr "" | ||
972 | |||
973 | |||
974 | msgid "heading.prefs.interface" | ||
975 | msgstr "" | ||
976 | |||
977 | |||
978 | msgid "heading.prefs.keys" | ||
979 | msgstr "" | ||
980 | |||
981 | |||
982 | msgid "heading.prefs.network" | ||
983 | msgstr "" | ||
984 | |||
985 | |||
986 | msgid "heading.prefs.paragraph" | ||
987 | msgstr "" | ||
988 | |||
989 | |||
990 | msgid "heading.prefs.pagecontent" | ||
991 | msgstr "" | ||
992 | |||
993 | |||
994 | msgid "heading.prefs.proxies" | ||
995 | msgstr "" | ||
996 | |||
997 | |||
998 | msgid "heading.prefs.scrolling" | ||
999 | msgstr "" | ||
1000 | |||
1001 | |||
1002 | msgid "heading.prefs.sizing" | ||
1003 | msgstr "" | ||
1004 | |||
1005 | |||
1006 | msgid "heading.prefs.widelayout" | ||
1007 | msgstr "" | ||
1008 | |||
1009 | |||
1010 | msgid "heading.prefs.style" | ||
1011 | msgstr "" | ||
1012 | |||
1013 | |||
1014 | msgid "heading.prefs.userinterface" | ||
1015 | msgstr "" | ||
1016 | |||
1017 | |||
1018 | msgid "prefs.downloads" | ||
1019 | msgstr "" | ||
1020 | |||
1021 | |||
1022 | msgid "prefs.searchurl" | ||
1023 | msgstr "" | ||
1024 | |||
1025 | |||
1026 | msgid "prefs.hoverlink" | ||
1027 | msgstr "" | ||
1028 | |||
1029 | |||
1030 | msgid "prefs.centershort" | ||
1031 | msgstr "" | ||
1032 | |||
1033 | |||
1034 | msgid "prefs.smoothscroll" | ||
1035 | msgstr "" | ||
1036 | |||
1037 | |||
1038 | msgid "prefs.imageloadscroll" | ||
1039 | msgstr "" | ||
1040 | |||
1041 | |||
1042 | msgid "prefs.hidetoolbarscroll" | ||
1043 | msgstr "" | ||
1044 | |||
1045 | |||
1046 | msgid "prefs.ostheme" | ||
1047 | msgstr "" | ||
1048 | |||
1049 | |||
1050 | msgid "prefs.theme" | ||
1051 | msgstr "" | ||
1052 | |||
1053 | |||
1054 | msgid "prefs.theme.black" | ||
1055 | msgstr "" | ||
1056 | |||
1057 | |||
1058 | msgid "prefs.theme.dark" | ||
1059 | msgstr "" | ||
1060 | |||
1061 | |||
1062 | msgid "prefs.theme.light" | ||
1063 | msgstr "" | ||
1064 | |||
1065 | |||
1066 | msgid "prefs.theme.white" | ||
1067 | msgstr "" | ||
1068 | |||
1069 | |||
1070 | msgid "prefs.accent" | ||
1071 | msgstr "" | ||
1072 | |||
1073 | |||
1074 | msgid "prefs.accent.teal" | ||
1075 | msgstr "" | ||
1076 | |||
1077 | |||
1078 | msgid "prefs.accent.orange" | ||
1079 | msgstr "" | ||
1080 | |||
1081 | |||
1082 | msgid "prefs.uiscale" | ||
1083 | msgstr "" | ||
1084 | |||
1085 | |||
1086 | msgid "prefs.customframe" | ||
1087 | msgstr "" | ||
1088 | |||
1089 | |||
1090 | msgid "prefs.retainwindow" | ||
1091 | msgstr "" | ||
1092 | |||
1093 | |||
1094 | msgid "prefs.sideicon" | ||
1095 | msgstr "" | ||
1096 | |||
1097 | |||
1098 | msgid "prefs.doctheme.dark" | ||
1099 | msgstr "" | ||
1100 | |||
1101 | |||
1102 | msgid "prefs.doctheme.light" | ||
1103 | msgstr "" | ||
1104 | |||
1105 | |||
1106 | msgid "prefs.doctheme.name.colorfuldark" | ||
1107 | msgstr "" | ||
1108 | |||
1109 | |||
1110 | msgid "prefs.doctheme.name.colorfullight" | ||
1111 | msgstr "" | ||
1112 | |||
1113 | |||
1114 | msgid "prefs.doctheme.name.black" | ||
1115 | msgstr "" | ||
1116 | |||
1117 | |||
1118 | msgid "prefs.doctheme.name.gray" | ||
1119 | msgstr "" | ||
1120 | |||
1121 | |||
1122 | msgid "prefs.doctheme.name.white" | ||
1123 | msgstr "" | ||
1124 | |||
1125 | |||
1126 | msgid "prefs.doctheme.name.sepia" | ||
1127 | msgstr "" | ||
1128 | |||
1129 | |||
1130 | msgid "prefs.doctheme.name.highcontrast" | ||
1131 | msgstr "" | ||
1132 | |||
1133 | |||
1134 | msgid "prefs.saturation" | ||
1135 | msgstr "" | ||
1136 | |||
1137 | |||
1138 | msgid "prefs.headingfont" | ||
1139 | msgstr "" | ||
1140 | |||
1141 | |||
1142 | msgid "prefs.font" | ||
1143 | msgstr "" | ||
1144 | |||
1145 | |||
1146 | msgid "prefs.mono" | ||
1147 | msgstr "" | ||
1148 | |||
1149 | |||
1150 | msgid "prefs.mono.gemini" | ||
1151 | msgstr "" | ||
1152 | |||
1153 | |||
1154 | msgid "prefs.mono.gopher" | ||
1155 | msgstr "" | ||
1156 | |||
1157 | |||
1158 | msgid "prefs.linewidth" | ||
1159 | msgstr "" | ||
1160 | |||
1161 | |||
1162 | msgid "prefs.linewidth.normal" | ||
1163 | msgstr "" | ||
1164 | |||
1165 | |||
1166 | msgid "prefs.linewidth.fill" | ||
1167 | msgstr "" | ||
1168 | |||
1169 | |||
1170 | msgid "prefs.quoteicon" | ||
1171 | msgstr "" | ||
1172 | |||
1173 | |||
1174 | msgid "prefs.quoteicon.icon" | ||
1175 | msgstr "" | ||
1176 | |||
1177 | |||
1178 | msgid "prefs.quoteicon.line" | ||
1179 | msgstr "" | ||
1180 | |||
1181 | |||
1182 | msgid "prefs.biglede" | ||
1183 | msgstr "" | ||
1184 | |||
1185 | |||
1186 | msgid "prefs.plaintext.wrap" | ||
1187 | msgstr "" | ||
1188 | |||
1189 | |||
1190 | msgid "prefs.decodeurls" | ||
1191 | msgstr "" | ||
1192 | |||
1193 | |||
1194 | msgid "prefs.cachesize" | ||
1195 | msgstr "" | ||
1196 | |||
1197 | |||
1198 | msgid "prefs.ca.file" | ||
1199 | msgstr "" | ||
1200 | |||
1201 | |||
1202 | msgid "prefs.ca.path" | ||
1203 | msgstr "" | ||
1204 | |||
1205 | |||
1206 | msgid "prefs.proxy.gemini" | ||
1207 | msgstr "" | ||
1208 | |||
1209 | |||
1210 | msgid "prefs.proxy.gopher" | ||
1211 | msgstr "" | ||
1212 | |||
1213 | |||
1214 | msgid "prefs.proxy.http" | ||
1215 | msgstr "" | ||
1216 | |||
1217 | |||
1218 | msgid "menu.binding.reset" | ||
1219 | msgstr "" | ||
1220 | |||
1221 | |||
1222 | msgid "menu.binding.clear" | ||
1223 | msgstr "" | ||
1224 | |||
1225 | |||
1226 | msgid "keys.top" | ||
1227 | msgstr "" | ||
1228 | |||
1229 | |||
1230 | msgid "keys.bottom" | ||
1231 | msgstr "" | ||
1232 | |||
1233 | |||
1234 | msgid "keys.scroll.up" | ||
1235 | msgstr "" | ||
1236 | |||
1237 | |||
1238 | msgid "keys.scroll.down" | ||
1239 | msgstr "" | ||
1240 | |||
1241 | |||
1242 | msgid "keys.scroll.halfpage.up" | ||
1243 | msgstr "" | ||
1244 | |||
1245 | |||
1246 | msgid "keys.scroll.halfpage.down" | ||
1247 | msgstr "" | ||
1248 | |||
1249 | |||
1250 | msgid "keys.scroll.page.up" | ||
1251 | msgstr "" | ||
1252 | |||
1253 | |||
1254 | msgid "keys.scroll.page.down" | ||
1255 | msgstr "" | ||
1256 | |||
1257 | |||
1258 | msgid "keys.back" | ||
1259 | msgstr "" | ||
1260 | |||
1261 | |||
1262 | msgid "keys.forward" | ||
1263 | msgstr "" | ||
1264 | |||
1265 | |||
1266 | msgid "keys.parent" | ||
1267 | msgstr "" | ||
1268 | |||
1269 | |||
1270 | msgid "keys.root" | ||
1271 | msgstr "" | ||
1272 | |||
1273 | |||
1274 | msgid "keys.reload" | ||
1275 | msgstr "" | ||
1276 | |||
1277 | |||
1278 | msgid "keys.link.modkey" | ||
1279 | msgstr "" | ||
1280 | |||
1281 | |||
1282 | msgid "keys.link.homerow" | ||
1283 | msgstr "" | ||
1284 | |||
1285 | |||
1286 | msgid "keys.link.homerow.newtab" | ||
1287 | msgstr "" | ||
1288 | |||
1289 | |||
1290 | msgid "keys.link.homerow.hover" | ||
1291 | msgstr "" | ||
1292 | |||
1293 | |||
1294 | msgid "keys.link.homerow.next" | ||
1295 | msgstr "" | ||
1296 | |||
1297 | |||
1298 | msgid "keys.bookmark.add" | ||
1299 | msgstr "" | ||
1300 | |||
1301 | |||
1302 | msgid "keys.findtext" | ||
1303 | msgstr "" | ||
1304 | |||
1305 | |||
1306 | msgid "keys.zoom.in" | ||
1307 | msgstr "" | ||
1308 | |||
1309 | |||
1310 | msgid "keys.zoom.out" | ||
1311 | msgstr "" | ||
1312 | |||
1313 | |||
1314 | msgid "keys.zoom.reset" | ||
1315 | msgstr "" | ||
1316 | |||
1317 | |||
1318 | msgid "keys.fullscreen" | ||
1319 | msgstr "" | ||
1320 | |||
1321 | |||
1322 | msgid "keys.tab.new" | ||
1323 | msgstr "" | ||
1324 | |||
1325 | |||
1326 | msgid "keys.tab.close" | ||
1327 | msgstr "" | ||
1328 | |||
1329 | |||
1330 | msgid "keys.tab.prev" | ||
1331 | msgstr "" | ||
1332 | |||
1333 | |||
1334 | msgid "keys.tab.next" | ||
1335 | msgstr "" | ||
1336 | |||
1337 | |||
1338 | msgid "keys.hoverurl" | ||
1339 | msgstr "" | ||
1340 | |||
diff --git a/res/lang/en.bin b/res/lang/en.bin index ab178d78..becb67ff 100644 --- a/res/lang/en.bin +++ b/res/lang/en.bin | |||
Binary files differ | |||
diff --git a/src/macos.m b/src/macos.m index 12575dd5..019533bd 100644 --- a/src/macos.m +++ b/src/macos.m | |||
@@ -369,6 +369,7 @@ void setupApplication_MacOS(void) { | |||
369 | } | 369 | } |
370 | 370 | ||
371 | void enableMenu_MacOS(const char *menuLabel, iBool enable) { | 371 | void enableMenu_MacOS(const char *menuLabel, iBool enable) { |
372 | menuLabel = translateCStr_Lang(menuLabel); | ||
372 | NSApplication *app = [NSApplication sharedApplication]; | 373 | NSApplication *app = [NSApplication sharedApplication]; |
373 | NSMenu *appMenu = [app mainMenu]; | 374 | NSMenu *appMenu = [app mainMenu]; |
374 | NSString *label = [NSString stringWithUTF8String:menuLabel]; | 375 | NSString *label = [NSString stringWithUTF8String:menuLabel]; |
diff --git a/src/ui/bindingswidget.c b/src/ui/bindingswidget.c index 558bdcd5..c73982b3 100644 --- a/src/ui/bindingswidget.c +++ b/src/ui/bindingswidget.c | |||
@@ -26,6 +26,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ | |||
26 | #include "command.h" | 26 | #include "command.h" |
27 | #include "util.h" | 27 | #include "util.h" |
28 | #include "app.h" | 28 | #include "app.h" |
29 | #include "lang.h" | ||
29 | #if defined (iPlatformAppleDesktop) | 30 | #if defined (iPlatformAppleDesktop) |
30 | # include "macos.h" | 31 | # include "macos.h" |
31 | #endif | 32 | #endif |
@@ -97,6 +98,7 @@ static void updateItems_BindingsWidget_(iBindingsWidget *d) { | |||
97 | iBindingItem *item = new_BindingItem(); | 98 | iBindingItem *item = new_BindingItem(); |
98 | item->id = bind->id; | 99 | item->id = bind->id; |
99 | set_String(&item->label, &bind->label); | 100 | set_String(&item->label, &bind->label); |
101 | translate_Lang(&item->label); | ||
100 | toString_Sym(bind->key, bind->mods, &item->key); | 102 | toString_Sym(bind->key, bind->mods, &item->key); |
101 | addItem_ListWidget(d->list, item); | 103 | addItem_ListWidget(d->list, item); |
102 | } | 104 | } |
@@ -118,8 +120,8 @@ void init_BindingsWidget(iBindingsWidget *d) { | |||
118 | updateItems_BindingsWidget_(d); | 120 | updateItems_BindingsWidget_(d); |
119 | d->menu = makeMenu_Widget( | 121 | d->menu = makeMenu_Widget( |
120 | w, | 122 | w, |
121 | (iMenuItem[]){ { "Reset to Default", 0, 0, "binding.reset" }, | 123 | (iMenuItem[]){ { "${menu.binding.reset}", 0, 0, "binding.reset" }, |
122 | { uiTextCaution_ColorEscape "Clear", 0, 0, "binding.clear" } }, | 124 | { uiTextCaution_ColorEscape "${menu.binding.clear}", 0, 0, "binding.clear" } }, |
123 | 2); | 125 | 2); |
124 | } | 126 | } |
125 | 127 | ||
@@ -143,9 +145,9 @@ static void setActiveItem_BindingsWidget_(iBindingsWidget *d, size_t pos) { | |||
143 | #if defined (iPlatformAppleDesktop) | 145 | #if defined (iPlatformAppleDesktop) |
144 | /* Native menus must be disabled while grabbing keys so the shortcuts don't trigger. */ | 146 | /* Native menus must be disabled while grabbing keys so the shortcuts don't trigger. */ |
145 | const iBool enableNativeMenus = (d->activePos == iInvalidPos); | 147 | const iBool enableNativeMenus = (d->activePos == iInvalidPos); |
146 | enableMenu_MacOS("Edit", enableNativeMenus); | 148 | enableMenu_MacOS("${menu.title.edit}", enableNativeMenus); |
147 | enableMenu_MacOS("View", enableNativeMenus); | 149 | enableMenu_MacOS("${menu.title.view}", enableNativeMenus); |
148 | enableMenu_MacOS("Identity", enableNativeMenus); | 150 | enableMenu_MacOS("${menu.title.identity}", enableNativeMenus); |
149 | #endif | 151 | #endif |
150 | } | 152 | } |
151 | 153 | ||
diff --git a/src/ui/inputwidget.c b/src/ui/inputwidget.c index 699ed184..05b83b3d 100644 --- a/src/ui/inputwidget.c +++ b/src/ui/inputwidget.c | |||
@@ -26,6 +26,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ | |||
26 | #include "util.h" | 26 | #include "util.h" |
27 | #include "keys.h" | 27 | #include "keys.h" |
28 | #include "prefs.h" | 28 | #include "prefs.h" |
29 | #include "lang.h" | ||
29 | #include "app.h" | 30 | #include "app.h" |
30 | 31 | ||
31 | #include <the_Foundation/array.h> | 32 | #include <the_Foundation/array.h> |
@@ -251,6 +252,7 @@ void setMaxLen_InputWidget(iInputWidget *d, size_t maxLen) { | |||
251 | 252 | ||
252 | void setHint_InputWidget(iInputWidget *d, const char *hintText) { | 253 | void setHint_InputWidget(iInputWidget *d, const char *hintText) { |
253 | setCStr_String(&d->hint, hintText); | 254 | setCStr_String(&d->hint, hintText); |
255 | translate_Lang(&d->hint); /* TODO: Keep original for retranslations. */ | ||
254 | } | 256 | } |
255 | 257 | ||
256 | void setContentPadding_InputWidget(iInputWidget *d, int left, int right) { | 258 | void setContentPadding_InputWidget(iInputWidget *d, int left, int right) { |
diff --git a/src/ui/keys.c b/src/ui/keys.c index 4d3f79f7..f59c5997 100644 --- a/src/ui/keys.c +++ b/src/ui/keys.c | |||
@@ -192,37 +192,37 @@ enum iBindFlag { | |||
192 | /* TODO: This indirection could be used for localization, although all UI strings | 192 | /* TODO: This indirection could be used for localization, although all UI strings |
193 | would need to be similarly handled. */ | 193 | would need to be similarly handled. */ |
194 | static const struct { int id; iMenuItem bind; int flags; } defaultBindings_[] = { | 194 | static const struct { int id; iMenuItem bind; int flags; } defaultBindings_[] = { |
195 | { 1, { "Jump to top", SDLK_HOME, 0, "scroll.top" }, 0 }, | 195 | { 1, { "${keys.top}", SDLK_HOME, 0, "scroll.top" }, 0 }, |
196 | { 2, { "Jump to bottom", SDLK_END, 0, "scroll.bottom" }, 0 }, | 196 | { 2, { "${keys.bottom}", SDLK_END, 0, "scroll.bottom" }, 0 }, |
197 | { 10, { "Scroll up", SDLK_UP, 0, "scroll.step arg:-1" }, argRepeat_BindFlag }, | 197 | { 10, { "${keys.scroll.up}", SDLK_UP, 0, "scroll.step arg:-1" }, argRepeat_BindFlag }, |
198 | { 11, { "Scroll down", SDLK_DOWN, 0, "scroll.step arg:1" }, argRepeat_BindFlag }, | 198 | { 11, { "${keys.scroll.down}", SDLK_DOWN, 0, "scroll.step arg:1" }, argRepeat_BindFlag }, |
199 | { 22, { "Scroll up half a page", SDLK_SPACE, KMOD_SHIFT, "scroll.page arg:-1" }, argRepeat_BindFlag }, | 199 | { 22, { "${keys.scroll.halfpage.up}", SDLK_SPACE, KMOD_SHIFT, "scroll.page arg:-1" }, argRepeat_BindFlag }, |
200 | { 23, { "Scroll down half a page", SDLK_SPACE, 0, "scroll.page arg:1" }, argRepeat_BindFlag }, | 200 | { 23, { "${keys.scroll.halfpage.down}", SDLK_SPACE, 0, "scroll.page arg:1" }, argRepeat_BindFlag }, |
201 | { 24, { "Scroll up a page", SDLK_PAGEUP, 0, "scroll.page arg:-1 full:1" }, argRepeat_BindFlag }, | 201 | { 24, { "${keys.scroll.page.up}", SDLK_PAGEUP, 0, "scroll.page arg:-1 full:1" }, argRepeat_BindFlag }, |
202 | { 25, { "Scroll down a page", SDLK_PAGEDOWN, 0, "scroll.page arg:1 full:1" }, argRepeat_BindFlag }, | 202 | { 25, { "${keys.scroll.page.down}", SDLK_PAGEDOWN, 0, "scroll.page arg:1 full:1" }, argRepeat_BindFlag }, |
203 | { 30, { "Go back", navigateBack_KeyShortcut, "navigate.back" }, 0 }, | 203 | { 30, { "${keys.back}", navigateBack_KeyShortcut, "navigate.back" }, 0 }, |
204 | { 31, { "Go forward", navigateForward_KeyShortcut, "navigate.forward" }, 0 }, | 204 | { 31, { "${keys.forward}", navigateForward_KeyShortcut, "navigate.forward" }, 0 }, |
205 | { 32, { "Go to parent directory", navigateParent_KeyShortcut, "navigate.parent" }, 0 }, | 205 | { 32, { "${keys.parent}", navigateParent_KeyShortcut, "navigate.parent" }, 0 }, |
206 | { 33, { "Go to site root", navigateRoot_KeyShortcut, "navigate.root" }, 0 }, | 206 | { 33, { "${keys.root}", navigateRoot_KeyShortcut, "navigate.root" }, 0 }, |
207 | { 35, { "Reload page", reload_KeyShortcut, "document.reload" }, 0 }, | 207 | { 35, { "${keys.reload}", reload_KeyShortcut, "document.reload" }, 0 }, |
208 | { 41, { "Open link via modifier key", SDLK_LALT, 0, "document.linkkeys arg:0" }, argRelease_BindFlag }, | 208 | { 41, { "${keys.link.modkey}", SDLK_LALT, 0, "document.linkkeys arg:0" }, argRelease_BindFlag }, |
209 | { 42, { "Open link via home row keys", 'f', 0, "document.linkkeys arg:1" }, 0 }, | 209 | { 42, { "${keys.link.homerow}", 'f', 0, "document.linkkeys arg:1" }, 0 }, |
210 | { 45, { "Open link in new tab via home row keys", 'f', KMOD_SHIFT, "document.linkkeys arg:1 newtab:1" }, 0 }, | 210 | { 45, { "${keys.link.homerow.newtab}", 'f', KMOD_SHIFT, "document.linkkeys arg:1 newtab:1" }, 0 }, |
211 | { 46, { "Hover on link via home row keys", 'h', 0, "document.linkkeys arg:1 hover:1" }, 0 }, | 211 | { 46, { "${keys.link.homerow.hover}", 'h', 0, "document.linkkeys arg:1 hover:1" }, 0 }, |
212 | { 47, { "Next set of home row key links", '.', 0, "document.linkkeys more:1" }, 0 }, | 212 | { 47, { "${keys.link.homerow.next}", '.', 0, "document.linkkeys more:1" }, 0 }, |
213 | { 50, { "Add bookmark", 'd', KMOD_PRIMARY, "bookmark.add" }, 0 }, | 213 | { 50, { "${keys.bookmark.add}", 'd', KMOD_PRIMARY, "bookmark.add" }, 0 }, |
214 | { 60, { "Find text on page", 'f', KMOD_PRIMARY, "focus.set id:find.input" }, 0 }, | 214 | { 60, { "${keys.findtext}", 'f', KMOD_PRIMARY, "focus.set id:find.input" }, 0 }, |
215 | { 70, { "Zoom in", SDLK_EQUALS, KMOD_PRIMARY, "zoom.delta arg:10" }, 0 }, | 215 | { 70, { "${keys.zoom.in}", SDLK_EQUALS, KMOD_PRIMARY, "zoom.delta arg:10" }, 0 }, |
216 | { 71, { "Zoom out", SDLK_MINUS, KMOD_PRIMARY, "zoom.delta arg:-10" }, 0 }, | 216 | { 71, { "${keys.zoom.out}", SDLK_MINUS, KMOD_PRIMARY, "zoom.delta arg:-10" }, 0 }, |
217 | { 72, { "Reset zoom", SDLK_0, KMOD_PRIMARY, "zoom.set arg:100" }, 0 }, | 217 | { 72, { "${keys.zoom.reset}", SDLK_0, KMOD_PRIMARY, "zoom.set arg:100" }, 0 }, |
218 | #if !defined (iPlatformApple) /* Ctrl-Cmd-F on macOS */ | 218 | #if !defined (iPlatformApple) /* Ctrl-Cmd-F on macOS */ |
219 | { 73, { "Toggle fullscreen mode", SDLK_F11, 0, "window.fullscreen" }, 0 }, | 219 | { 73, { "${keys.fullscreen}", SDLK_F11, 0, "window.fullscreen" }, 0 }, |
220 | #endif | 220 | #endif |
221 | { 76, { "New tab", newTab_KeyShortcut, "tabs.new" }, 0 }, | 221 | { 76, { "${keys.tab.new}", newTab_KeyShortcut, "tabs.new" }, 0 }, |
222 | { 77, { "Close tab", closeTab_KeyShortcut, "tabs.close" }, 0 }, | 222 | { 77, { "${keys.tab.close}", closeTab_KeyShortcut, "tabs.close" }, 0 }, |
223 | { 80, { "Previous tab", prevTab_KeyShortcut, "tabs.prev" }, 0 }, | 223 | { 80, { "${keys.tab.prev}", prevTab_KeyShortcut, "tabs.prev" }, 0 }, |
224 | { 81, { "Next tab", nextTab_KeyShortcut, "tabs.next" }, 0 }, | 224 | { 81, { "${keys.tab.next}", nextTab_KeyShortcut, "tabs.next" }, 0 }, |
225 | { 100,{ "Toggle show URL on hover", '/', KMOD_PRIMARY, "prefs.hoverlink.toggle" }, 0 }, | 225 | { 100,{ "${keys.hoverurl}", '/', KMOD_PRIMARY, "prefs.hoverlink.toggle" }, 0 }, |
226 | /* The following cannot currently be changed (built-in duplicates). */ | 226 | /* The following cannot currently be changed (built-in duplicates). */ |
227 | #if defined (iPlatformApple) | 227 | #if defined (iPlatformApple) |
228 | { 1002, { NULL, SDLK_LEFTBRACKET, KMOD_PRIMARY, "navigate.back" }, 0 }, | 228 | { 1002, { NULL, SDLK_LEFTBRACKET, KMOD_PRIMARY, "navigate.back" }, 0 }, |
diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index 7a704de7..8d025569 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c | |||
@@ -175,7 +175,8 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { | |||
175 | if (today.year == on.year && | 175 | if (today.year == on.year && |
176 | today.month == on.month && | 176 | today.month == on.month && |
177 | today.day == on.day) { | 177 | today.day == on.day) { |
178 | appendCStr_String(text, " \u2014 ${feeds.today}"); | 178 | appendCStr_String(text, " \u2014 "); |
179 | appendCStr_String(text, cstr_Lang("feeds.today")); | ||
179 | } | 180 | } |
180 | set_String(&sep->meta, text); | 181 | set_String(&sep->meta, text); |
181 | delete_String(text); | 182 | delete_String(text); |
diff --git a/src/ui/translation.c b/src/ui/translation.c index aaedfa4f..86607fc6 100644 --- a/src/ui/translation.c +++ b/src/ui/translation.c | |||
@@ -363,7 +363,7 @@ static iBool processResult_Translation_(iTranslation *d) { | |||
363 | SDL_RemoveTimer(d->timer); | 363 | SDL_RemoveTimer(d->timer); |
364 | d->timer = 0; | 364 | d->timer = 0; |
365 | if (status_TlsRequest(d->request) == error_TlsRequestStatus) { | 365 | if (status_TlsRequest(d->request) == error_TlsRequestStatus) { |
366 | setFailed_Translation_(d, explosion_Icon " Request Failed"); | 366 | setFailed_Translation_(d, explosion_Icon " ${dlg.translate.fail}"); |
367 | return iFalse; | 367 | return iFalse; |
368 | } | 368 | } |
369 | iBlock *resultData = collect_Block(readAll_TlsRequest(d->request)); | 369 | iBlock *resultData = collect_Block(readAll_TlsRequest(d->request)); |
@@ -417,7 +417,7 @@ static iBool processResult_Translation_(iTranslation *d) { | |||
417 | delete_String(translation); | 417 | delete_String(translation); |
418 | } | 418 | } |
419 | else { | 419 | else { |
420 | setFailed_Translation_(d, unhappy_Icon " Service Unavailable"); | 420 | setFailed_Translation_(d, unhappy_Icon " ${dlg.translate.unavail}"); |
421 | return iFalse; | 421 | return iFalse; |
422 | } | 422 | } |
423 | return iTrue; | 423 | return iTrue; |
diff --git a/src/ui/util.c b/src/ui/util.c index 5a08ec20..94690bc6 100644 --- a/src/ui/util.c +++ b/src/ui/util.c | |||
@@ -1137,7 +1137,7 @@ void finalizeSheet_Widget(iWidget *sheet) { | |||
1137 | pushBack_PtrArray(panelButtons, | 1137 | pushBack_PtrArray(panelButtons, |
1138 | addChildFlags_Widget(topPanel, | 1138 | addChildFlags_Widget(topPanel, |
1139 | iClob(panelButton = makePanelButton_( | 1139 | iClob(panelButton = makePanelButton_( |
1140 | i == 1 ? "User Interface" : cstr_String(text), | 1140 | i == 1 ? "${heading.prefs.userinterface}" : cstr_String(text), |
1141 | "panel.open")), | 1141 | "panel.open")), |
1142 | (i == 0 ? borderTop_WidgetFlag : 0) | | 1142 | (i == 0 ? borderTop_WidgetFlag : 0) | |
1143 | chevron_WidgetFlag)); | 1143 | chevron_WidgetFlag)); |
@@ -1332,10 +1332,10 @@ void finalizeSheet_Widget(iWidget *sheet) { | |||
1332 | if (isPrefs) { | 1332 | if (isPrefs) { |
1333 | addChild_Widget(topPanel, iClob(makePadding_Widget(lineHeight_Text(defaultBig_FontId)))); | 1333 | addChild_Widget(topPanel, iClob(makePadding_Widget(lineHeight_Text(defaultBig_FontId)))); |
1334 | addChildFlags_Widget(topPanel, | 1334 | addChildFlags_Widget(topPanel, |
1335 | iClob(makePanelButton_(info_Icon " Help", "panel.showhelp")), | 1335 | iClob(makePanelButton_(info_Icon " ${menu.help}", "panel.showhelp")), |
1336 | borderTop_WidgetFlag); | 1336 | borderTop_WidgetFlag); |
1337 | addChildFlags_Widget(topPanel, | 1337 | addChildFlags_Widget(topPanel, |
1338 | iClob(makePanelButton_(planet_Icon " About", "panel.about")), | 1338 | iClob(makePanelButton_(planet_Icon " ${menu.about}", "panel.about")), |
1339 | chevron_WidgetFlag); | 1339 | chevron_WidgetFlag); |
1340 | } | 1340 | } |
1341 | else { | 1341 | else { |
@@ -1362,7 +1362,7 @@ void finalizeSheet_Widget(iWidget *sheet) { | |||
1362 | setBackgroundColor_Widget(navi, uiBackground_ColorId); | 1362 | setBackgroundColor_Widget(navi, uiBackground_ColorId); |
1363 | addChild_Widget(navi, iClob(makePadding_Widget(0))); | 1363 | addChild_Widget(navi, iClob(makePadding_Widget(0))); |
1364 | iLabelWidget *back = addChildFlags_Widget(navi, | 1364 | iLabelWidget *back = addChildFlags_Widget(navi, |
1365 | iClob(new_LabelWidget(leftAngle_Icon " Back", "panel.close")), | 1365 | iClob(new_LabelWidget(leftAngle_Icon " ${panel.back}", "panel.close")), |
1366 | noBackground_WidgetFlag | frameless_WidgetFlag | | 1366 | noBackground_WidgetFlag | frameless_WidgetFlag | |
1367 | alignLeft_WidgetFlag | extraPadding_WidgetFlag); | 1367 | alignLeft_WidgetFlag | extraPadding_WidgetFlag); |
1368 | checkIcon_LabelWidget(back); | 1368 | checkIcon_LabelWidget(back); |
@@ -1577,11 +1577,11 @@ iWidget *makeDialogButtons_Widget(const iMenuItem *actions, size_t numActions) { | |||
1577 | kmods = 0; | 1577 | kmods = 0; |
1578 | } | 1578 | } |
1579 | if (label == NULL) { | 1579 | if (label == NULL) { |
1580 | label = uiTextAction_ColorEscape " OK "; | 1580 | label = format_CStr(uiTextAction_ColorEscape "%s", cstr_Lang("dlg.default")); |
1581 | } | 1581 | } |
1582 | } | 1582 | } |
1583 | iLabelWidget *button = | 1583 | iLabelWidget *button = |
1584 | addChild_Widget(div, iClob(newKeyMods_LabelWidget(actions[i].label, key, kmods, cmd))); | 1584 | addChild_Widget(div, iClob(newKeyMods_LabelWidget(label, key, kmods, cmd))); |
1585 | setFont_LabelWidget(button, isDefault ? fonts[1] : fonts[0]); | 1585 | setFont_LabelWidget(button, isDefault ? fonts[1] : fonts[0]); |
1586 | } | 1586 | } |
1587 | return div; | 1587 | return div; |
@@ -1655,7 +1655,7 @@ static iBool messageHandler_(iWidget *msg, const char *cmd) { | |||
1655 | 1655 | ||
1656 | iWidget *makeMessage_Widget(const char *title, const char *msg) { | 1656 | iWidget *makeMessage_Widget(const char *title, const char *msg) { |
1657 | iWidget *dlg = | 1657 | iWidget *dlg = |
1658 | makeQuestion_Widget(title, msg, (iMenuItem[]){ { "Continue", 0, 0, "message.ok" } }, 1); | 1658 | makeQuestion_Widget(title, msg, (iMenuItem[]){ { "${dlg.message.ok}", 0, 0, "message.ok" } }, 1); |
1659 | addAction_Widget(dlg, SDLK_ESCAPE, 0, "message.ok"); | 1659 | addAction_Widget(dlg, SDLK_ESCAPE, 0, "message.ok"); |
1660 | addAction_Widget(dlg, SDLK_SPACE, 0, "message.ok"); | 1660 | addAction_Widget(dlg, SDLK_SPACE, 0, "message.ok"); |
1661 | return dlg; | 1661 | return dlg; |
@@ -1679,12 +1679,14 @@ iWidget *makeQuestion_Widget(const char *title, const char *msg, | |||
1679 | 1679 | ||
1680 | void setToggle_Widget(iWidget *d, iBool active) { | 1680 | void setToggle_Widget(iWidget *d, iBool active) { |
1681 | if (d) { | 1681 | if (d) { |
1682 | const char *YES = cstr_Lang("toggle.yes"); | ||
1683 | const char *NO = cstr_Lang("toggle.no"); | ||
1682 | setFlags_Widget(d, selected_WidgetFlag, active); | 1684 | setFlags_Widget(d, selected_WidgetFlag, active); |
1683 | iLabelWidget *label = (iLabelWidget *) d; | 1685 | iLabelWidget *label = (iLabelWidget *) d; |
1684 | if (!cmp_String(text_LabelWidget(label), "YES") || | 1686 | if (!cmp_String(text_LabelWidget(label), YES) || |
1685 | !cmp_String(text_LabelWidget(label), "NO")) { | 1687 | !cmp_String(text_LabelWidget(label), NO)) { |
1686 | updateText_LabelWidget((iLabelWidget *) d, | 1688 | updateText_LabelWidget((iLabelWidget *) d, |
1687 | collectNewFormat_String("%s", isSelected_Widget(d) ? "YES" : "NO")); | 1689 | collectNewCStr_String(isSelected_Widget(d) ? YES : NO)); |
1688 | } | 1690 | } |
1689 | else { | 1691 | else { |
1690 | refresh_Widget(d); | 1692 | refresh_Widget(d); |
@@ -1788,85 +1790,85 @@ static void addFontButtons_(iWidget *parent, const char *id) { | |||
1788 | iWidget *makePreferences_Widget(void) { | 1790 | iWidget *makePreferences_Widget(void) { |
1789 | iWidget *dlg = makeSheet_Widget("prefs"); | 1791 | iWidget *dlg = makeSheet_Widget("prefs"); |
1790 | addChildFlags_Widget(dlg, | 1792 | addChildFlags_Widget(dlg, |
1791 | iClob(new_LabelWidget(uiHeading_ColorEscape "PREFERENCES", NULL)), | 1793 | iClob(new_LabelWidget(uiHeading_ColorEscape "${heading.prefs}", NULL)), |
1792 | frameless_WidgetFlag); | 1794 | frameless_WidgetFlag); |
1793 | iWidget *tabs = makeTabs_Widget(dlg); | 1795 | iWidget *tabs = makeTabs_Widget(dlg); |
1794 | setBackgroundColor_Widget(findChild_Widget(tabs, "tabs.buttons"), uiBackgroundSidebar_ColorId); | 1796 | setBackgroundColor_Widget(findChild_Widget(tabs, "tabs.buttons"), uiBackgroundSidebar_ColorId); |
1795 | setId_Widget(tabs, "prefs.tabs"); | 1797 | setId_Widget(tabs, "prefs.tabs"); |
1796 | iWidget *headings, *values; | 1798 | iWidget *headings, *values; |
1797 | /* General preferences. */ { | 1799 | /* General preferences. */ { |
1798 | appendTwoColumnPage_(tabs, "General", '1', &headings, &values); | 1800 | appendTwoColumnPage_(tabs, "${heading.prefs.general}", '1', &headings, &values); |
1799 | #if defined (LAGRANGE_DOWNLOAD_EDIT) | 1801 | #if defined (LAGRANGE_DOWNLOAD_EDIT) |
1800 | addChild_Widget(headings, iClob(makeHeading_Widget("Downloads folder:"))); | 1802 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.downloads}"))); |
1801 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.downloads"); | 1803 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.downloads"); |
1802 | #endif | 1804 | #endif |
1803 | addChild_Widget(headings, iClob(makeHeading_Widget("Search URL:"))); | 1805 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.searchurl}"))); |
1804 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.searchurl"); | 1806 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.searchurl"); |
1805 | addChild_Widget(headings, iClob(makeHeading_Widget("Show URL on hover:"))); | 1807 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.hoverlink}"))); |
1806 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.hoverlink"))); | 1808 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.hoverlink"))); |
1807 | addChild_Widget(headings, iClob(makeHeading_Widget("Vertical centering:"))); | 1809 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.centershort}"))); |
1808 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.centershort"))); | 1810 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.centershort"))); |
1809 | makeTwoColumnHeading_("SCROLLING", headings, values); | 1811 | makeTwoColumnHeading_("${heading.prefs.scrolling}", headings, values); |
1810 | addChild_Widget(headings, iClob(makeHeading_Widget("Smooth scrolling:"))); | 1812 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.smoothscroll}"))); |
1811 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.smoothscroll"))); | 1813 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.smoothscroll"))); |
1812 | addChild_Widget(headings, iClob(makeHeading_Widget("Load image on scroll:"))); | 1814 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.imageloadscroll}"))); |
1813 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.imageloadscroll"))); | 1815 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.imageloadscroll"))); |
1814 | if (deviceType_App() == phone_AppDeviceType) { | 1816 | if (deviceType_App() == phone_AppDeviceType) { |
1815 | addChild_Widget(headings, iClob(makeHeading_Widget("Hide toolbar on scroll:"))); | 1817 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.hidetoolbarscroll}"))); |
1816 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.hidetoolbarscroll"))); | 1818 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.hidetoolbarscroll"))); |
1817 | } | 1819 | } |
1818 | } | 1820 | } |
1819 | /* Window. */ { | 1821 | /* Window. */ { |
1820 | appendTwoColumnPage_(tabs, "Interface", '2', &headings, &values); | 1822 | appendTwoColumnPage_(tabs, "${heading.prefs.interface}", '2', &headings, &values); |
1821 | #if defined (iPlatformApple) || defined (iPlatformMSys) | 1823 | #if defined (iPlatformApple) || defined (iPlatformMSys) |
1822 | addChild_Widget(headings, iClob(makeHeading_Widget("Use system theme:"))); | 1824 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.ostheme}"))); |
1823 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.ostheme"))); | 1825 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.ostheme"))); |
1824 | #endif | 1826 | #endif |
1825 | addChild_Widget(headings, iClob(makeHeading_Widget("Theme:"))); | 1827 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.theme}"))); |
1826 | iWidget *themes = new_Widget(); | 1828 | iWidget *themes = new_Widget(); |
1827 | /* Themes. */ { | 1829 | /* Themes. */ { |
1828 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("Pure Black", "theme.set arg:0"))), "prefs.theme.0"); | 1830 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("${prefs.theme.black}", "theme.set arg:0"))), "prefs.theme.0"); |
1829 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("Dark", "theme.set arg:1"))), "prefs.theme.1"); | 1831 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("${prefs.theme.dark}", "theme.set arg:1"))), "prefs.theme.1"); |
1830 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("Light", "theme.set arg:2"))), "prefs.theme.2"); | 1832 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("${prefs.theme.light}", "theme.set arg:2"))), "prefs.theme.2"); |
1831 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("Pure White", "theme.set arg:3"))), "prefs.theme.3"); | 1833 | setId_Widget(addChild_Widget(themes, iClob(new_LabelWidget("${prefs.theme.white}", "theme.set arg:3"))), "prefs.theme.3"); |
1832 | } | 1834 | } |
1833 | addChildFlags_Widget(values, iClob(themes), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1835 | addChildFlags_Widget(values, iClob(themes), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1834 | /* Accents. */ | 1836 | /* Accents. */ |
1835 | iWidget *accent = new_Widget(); { | 1837 | iWidget *accent = new_Widget(); { |
1836 | setId_Widget(addChild_Widget(accent, iClob(new_LabelWidget("Teal", "accent.set arg:0"))), "prefs.accent.0"); | 1838 | setId_Widget(addChild_Widget(accent, iClob(new_LabelWidget("${prefs.accent.teal}", "accent.set arg:0"))), "prefs.accent.0"); |
1837 | setId_Widget(addChild_Widget(accent, iClob(new_LabelWidget("Orange", "accent.set arg:1"))), "prefs.accent.1"); | 1839 | setId_Widget(addChild_Widget(accent, iClob(new_LabelWidget("${prefs.accent.orange}", "accent.set arg:1"))), "prefs.accent.1"); |
1838 | } | 1840 | } |
1839 | addChild_Widget(headings, iClob(makeHeading_Widget("Accent color:"))); | 1841 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.accent}"))); |
1840 | addChildFlags_Widget(values, iClob(accent), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1842 | addChildFlags_Widget(values, iClob(accent), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1841 | #if defined (LAGRANGE_CUSTOM_FRAME) | 1843 | #if defined (LAGRANGE_CUSTOM_FRAME) |
1842 | addChild_Widget(headings, iClob(makeHeading_Widget("Custom window frame:"))); | 1844 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.customframe}"))); |
1843 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.customframe"))); | 1845 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.customframe"))); |
1844 | #endif | 1846 | #endif |
1845 | makeTwoColumnHeading_("SIZING", headings, values); | 1847 | makeTwoColumnHeading_("${heading.prefs.sizing}", headings, values); |
1846 | addChild_Widget(headings, iClob(makeHeading_Widget("UI scale factor:"))); | 1848 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.uiscale}"))); |
1847 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(8))), "prefs.uiscale"); | 1849 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(8))), "prefs.uiscale"); |
1848 | addChild_Widget(headings, iClob(makeHeading_Widget("Retain placement:"))); | 1850 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.retainwindow}"))); |
1849 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.retainwindow"))); | 1851 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.retainwindow"))); |
1850 | makeTwoColumnHeading_("WIDE LAYOUT", headings, values); | 1852 | makeTwoColumnHeading_("${heading.prefs.widelayout}", headings, values); |
1851 | addChild_Widget(headings, iClob(makeHeading_Widget("Site icon:"))); | 1853 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.sideicon}"))); |
1852 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.sideicon"))); | 1854 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.sideicon"))); |
1853 | } | 1855 | } |
1854 | /* Colors. */ { | 1856 | /* Colors. */ { |
1855 | appendTwoColumnPage_(tabs, "Colors", '3', &headings, &values); | 1857 | appendTwoColumnPage_(tabs, "${heading.prefs.colors}", '3', &headings, &values); |
1856 | makeTwoColumnHeading_("PAGE CONTENT", headings, values); | 1858 | makeTwoColumnHeading_("${heading.prefs.pagecontent}", headings, values); |
1857 | for (int i = 0; i < 2; ++i) { | 1859 | for (int i = 0; i < 2; ++i) { |
1858 | const iBool isDark = (i == 0); | 1860 | const iBool isDark = (i == 0); |
1859 | const char *mode = isDark ? "dark" : "light"; | 1861 | const char *mode = isDark ? "dark" : "light"; |
1860 | const iMenuItem themes[] = { | 1862 | const iMenuItem themes[] = { |
1861 | { "Colorful Dark", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulDark_GmDocumentTheme) }, | 1863 | { "${prefs.doctheme.name.colorfuldark}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulDark_GmDocumentTheme) }, |
1862 | { "Colorful Light", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulLight_GmDocumentTheme) }, | 1864 | { "${prefs.doctheme.name.colorfullight}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulLight_GmDocumentTheme) }, |
1863 | { "Black", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, black_GmDocumentTheme) }, | 1865 | { "${prefs.doctheme.name.black}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, black_GmDocumentTheme) }, |
1864 | { "Gray", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, gray_GmDocumentTheme) }, | 1866 | { "${prefs.doctheme.name.gray}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, gray_GmDocumentTheme) }, |
1865 | { "White", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, white_GmDocumentTheme) }, | 1867 | { "${prefs.doctheme.name.white}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, white_GmDocumentTheme) }, |
1866 | { "Sepia", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, sepia_GmDocumentTheme) }, | 1868 | { "${prefs.doctheme.name.sepia}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, sepia_GmDocumentTheme) }, |
1867 | { "High Contrast", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, highContrast_GmDocumentTheme) }, | 1869 | { "${prefs.doctheme.name.highcontrast}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, highContrast_GmDocumentTheme) }, |
1868 | }; | 1870 | }; |
1869 | addChild_Widget(headings, iClob(makeHeading_Widget(isDark ? "Dark theme:" : "Light theme:"))); | 1871 | addChild_Widget(headings, iClob(makeHeading_Widget(isDark ? "${prefs.doctheme.dark}" : "${prefs.doctheme.light}"))); |
1870 | iLabelWidget *button = | 1872 | iLabelWidget *button = |
1871 | makeMenuButton_LabelWidget(themes[1].label, themes, iElemCount(themes)); | 1873 | makeMenuButton_LabelWidget(themes[1].label, themes, iElemCount(themes)); |
1872 | // setFrameColor_Widget(findChild_Widget(as_Widget(button), "menu"), | 1874 | // setFrameColor_Widget(findChild_Widget(as_Widget(button), "menu"), |
@@ -1875,7 +1877,7 @@ iWidget *makePreferences_Widget(void) { | |||
1875 | setId_Widget(addChildFlags_Widget(values, iClob(button), alignLeft_WidgetFlag), | 1877 | setId_Widget(addChildFlags_Widget(values, iClob(button), alignLeft_WidgetFlag), |
1876 | format_CStr("prefs.doctheme.%s", mode)); | 1878 | format_CStr("prefs.doctheme.%s", mode)); |
1877 | } | 1879 | } |
1878 | addChild_Widget(headings, iClob(makeHeading_Widget("Saturation:"))); | 1880 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.saturation}"))); |
1879 | iWidget *sats = new_Widget(); | 1881 | iWidget *sats = new_Widget(); |
1880 | /* Saturation levels. */ { | 1882 | /* Saturation levels. */ { |
1881 | addRadioButton_(sats, "prefs.saturation.3", "100 %%", "saturation.set arg:100"); | 1883 | addRadioButton_(sats, "prefs.saturation.3", "100 %%", "saturation.set arg:100"); |
@@ -1886,75 +1888,75 @@ iWidget *makePreferences_Widget(void) { | |||
1886 | addChildFlags_Widget(values, iClob(sats), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1888 | addChildFlags_Widget(values, iClob(sats), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1887 | } | 1889 | } |
1888 | /* Layout. */ { | 1890 | /* Layout. */ { |
1889 | appendTwoColumnPage_(tabs, "Style", '4', &headings, &values); | 1891 | appendTwoColumnPage_(tabs, "${heading.prefs.style}", '4', &headings, &values); |
1890 | makeTwoColumnHeading_("FONTS", headings, values); | 1892 | makeTwoColumnHeading_("${heading.prefs.fonts}", headings, values); |
1891 | /* Fonts. */ { | 1893 | /* Fonts. */ { |
1892 | iWidget *fonts; | 1894 | iWidget *fonts; |
1893 | addChild_Widget(headings, iClob(makeHeading_Widget("Heading font:"))); | 1895 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.headingfont}"))); |
1894 | addFontButtons_(values, "headingfont"); | 1896 | addFontButtons_(values, "headingfont"); |
1895 | addChild_Widget(headings, iClob(makeHeading_Widget("Body font:"))); | 1897 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.font}"))); |
1896 | addFontButtons_(values, "font"); | 1898 | addFontButtons_(values, "font"); |
1897 | addChild_Widget(headings, iClob(makeHeading_Widget("Monospace body:"))); | 1899 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.mono}"))); |
1898 | iWidget *mono = new_Widget(); | 1900 | iWidget *mono = new_Widget(); |
1899 | /* TODO: Needs labels! */ | 1901 | /* TODO: Needs labels! */ |
1900 | setTextCStr_LabelWidget( | 1902 | setTextCStr_LabelWidget( |
1901 | addChild_Widget(mono, iClob(makeToggle_Widget("prefs.mono.gemini"))), "Gemini"); | 1903 | addChild_Widget(mono, iClob(makeToggle_Widget("prefs.mono.gemini"))), "${prefs.mono.gemini}"); |
1902 | setTextCStr_LabelWidget( | 1904 | setTextCStr_LabelWidget( |
1903 | addChild_Widget(mono, iClob(makeToggle_Widget("prefs.mono.gopher"))), "Gopher"); | 1905 | addChild_Widget(mono, iClob(makeToggle_Widget("prefs.mono.gopher"))), "${prefs.mono.gopher}"); |
1904 | addChildFlags_Widget(values, iClob(mono), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1906 | addChildFlags_Widget(values, iClob(mono), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1905 | } | 1907 | } |
1906 | makeTwoColumnHeading_("PARAGRAPH", headings, values); | 1908 | makeTwoColumnHeading_("${heading.prefs.paragraph}", headings, values); |
1907 | addChild_Widget(headings, iClob(makeHeading_Widget("Line width:"))); | 1909 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.linewidth}"))); |
1908 | iWidget *widths = new_Widget(); | 1910 | iWidget *widths = new_Widget(); |
1909 | /* Line widths. */ { | 1911 | /* Line widths. */ { |
1910 | addRadioButton_(widths, "prefs.linewidth.30", "\u20132", "linewidth.set arg:30"); | 1912 | addRadioButton_(widths, "prefs.linewidth.30", "\u20132", "linewidth.set arg:30"); |
1911 | addRadioButton_(widths, "prefs.linewidth.34", "\u20131", "linewidth.set arg:34"); | 1913 | addRadioButton_(widths, "prefs.linewidth.34", "\u20131", "linewidth.set arg:34"); |
1912 | addRadioButton_(widths, "prefs.linewidth.38", "Normal", "linewidth.set arg:38"); | 1914 | addRadioButton_(widths, "prefs.linewidth.38", "${prefs.linewidth.normal}", "linewidth.set arg:38"); |
1913 | addRadioButton_(widths, "prefs.linewidth.43", "+1", "linewidth.set arg:43"); | 1915 | addRadioButton_(widths, "prefs.linewidth.43", "+1", "linewidth.set arg:43"); |
1914 | addRadioButton_(widths, "prefs.linewidth.48", "+2", "linewidth.set arg:48"); | 1916 | addRadioButton_(widths, "prefs.linewidth.48", "+2", "linewidth.set arg:48"); |
1915 | addRadioButton_(widths, "prefs.linewidth.1000", "Window", "linewidth.set arg:1000"); | 1917 | addRadioButton_(widths, "prefs.linewidth.1000", "${prefs.linewidth.fill}", "linewidth.set arg:1000"); |
1916 | } | 1918 | } |
1917 | addChildFlags_Widget(values, iClob(widths), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1919 | addChildFlags_Widget(values, iClob(widths), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1918 | addChild_Widget(headings, iClob(makeHeading_Widget("Quote indicator:"))); | 1920 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.quoteicon}"))); |
1919 | iWidget *quote = new_Widget(); { | 1921 | iWidget *quote = new_Widget(); { |
1920 | addRadioButton_(quote, "prefs.quoteicon.1", "Icon", "quoteicon.set arg:1"); | 1922 | addRadioButton_(quote, "prefs.quoteicon.1", "${prefs.quoteicon.icon}", "quoteicon.set arg:1"); |
1921 | addRadioButton_(quote, "prefs.quoteicon.0", "Line", "quoteicon.set arg:0"); | 1923 | addRadioButton_(quote, "prefs.quoteicon.0", "${prefs.quoteicon.line}", "quoteicon.set arg:0"); |
1922 | } | 1924 | } |
1923 | addChildFlags_Widget(values, iClob(quote), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1925 | addChildFlags_Widget(values, iClob(quote), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1924 | addChild_Widget(headings, iClob(makeHeading_Widget("Big 1st paragaph:"))); | 1926 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.biglede}"))); |
1925 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.biglede"))); | 1927 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.biglede"))); |
1926 | addChild_Widget(headings, iClob(makeHeading_Widget("Wrap plain text:"))); | 1928 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.plaintext.wrap}"))); |
1927 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.plaintext.wrap"))); | 1929 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.plaintext.wrap"))); |
1928 | } | 1930 | } |
1929 | /* Network. */ { | 1931 | /* Network. */ { |
1930 | appendTwoColumnPage_(tabs, "Network", '5', &headings, &values); | 1932 | appendTwoColumnPage_(tabs, "${heading.prefs.network}", '5', &headings, &values); |
1931 | addChild_Widget(headings, iClob(makeHeading_Widget("Decode URLs:"))); | 1933 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.decodeurls}"))); |
1932 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.decodeurls"))); | 1934 | addChild_Widget(values, iClob(makeToggle_Widget("prefs.decodeurls"))); |
1933 | addChild_Widget(headings, iClob(makeHeading_Widget("Cache size:"))); | 1935 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.cachesize}"))); |
1934 | iWidget *cacheGroup = new_Widget(); { | 1936 | iWidget *cacheGroup = new_Widget(); { |
1935 | iInputWidget *cache = new_InputWidget(4); | 1937 | iInputWidget *cache = new_InputWidget(4); |
1936 | setSelectAllOnFocus_InputWidget(cache, iTrue); | 1938 | setSelectAllOnFocus_InputWidget(cache, iTrue); |
1937 | setId_Widget(addChild_Widget(cacheGroup, iClob(cache)), "prefs.cachesize"); | 1939 | setId_Widget(addChild_Widget(cacheGroup, iClob(cache)), "prefs.cachesize"); |
1938 | addChildFlags_Widget(cacheGroup, iClob(new_LabelWidget("MB", NULL)), frameless_WidgetFlag); | 1940 | addChildFlags_Widget(cacheGroup, iClob(new_LabelWidget("${mb}", NULL)), frameless_WidgetFlag); |
1939 | } | 1941 | } |
1940 | addChildFlags_Widget(values, iClob(cacheGroup), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 1942 | addChildFlags_Widget(values, iClob(cacheGroup), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
1941 | makeTwoColumnHeading_("CERTIFICATES", headings, values); | 1943 | makeTwoColumnHeading_("${heading.prefs.certs}", headings, values); |
1942 | addChild_Widget(headings, iClob(makeHeading_Widget("CA file:"))); | 1944 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.ca.file}"))); |
1943 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.ca.file"); | 1945 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.ca.file"); |
1944 | addChild_Widget(headings, iClob(makeHeading_Widget("CA path:"))); | 1946 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.ca.path}"))); |
1945 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.ca.path"); | 1947 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.ca.path"); |
1946 | makeTwoColumnHeading_("PROXIES", headings, values); | 1948 | makeTwoColumnHeading_("${heading.prefs.proxies}", headings, values); |
1947 | addChild_Widget(headings, iClob(makeHeading_Widget("Gemini proxy:"))); | 1949 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.proxy.gemini}"))); |
1948 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.proxy.gemini"); | 1950 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.proxy.gemini"); |
1949 | addChild_Widget(headings, iClob(makeHeading_Widget("Gopher proxy:"))); | 1951 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.proxy.gopher}"))); |
1950 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.proxy.gopher"); | 1952 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.proxy.gopher"); |
1951 | addChild_Widget(headings, iClob(makeHeading_Widget("HTTP proxy:"))); | 1953 | addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.proxy.http}"))); |
1952 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.proxy.http"); | 1954 | setId_Widget(addChild_Widget(values, iClob(new_InputWidget(0))), "prefs.proxy.http"); |
1953 | } | 1955 | } |
1954 | /* Keybindings. */ | 1956 | /* Keybindings. */ |
1955 | if (deviceType_App() == desktop_AppDeviceType) { | 1957 | if (deviceType_App() == desktop_AppDeviceType) { |
1956 | iBindingsWidget *bind = new_BindingsWidget(); | 1958 | iBindingsWidget *bind = new_BindingsWidget(); |
1957 | appendFramelessTabPage_(tabs, iClob(bind), "Keys", '6', KMOD_PRIMARY); | 1959 | appendFramelessTabPage_(tabs, iClob(bind), "${heading.prefs.keys}", '6', KMOD_PRIMARY); |
1958 | } | 1960 | } |
1959 | addChild_Widget(dlg, iClob(makePadding_Widget(gap_UI))); | 1961 | addChild_Widget(dlg, iClob(makePadding_Widget(gap_UI))); |
1960 | resizeToLargestPage_Widget(tabs); | 1962 | resizeToLargestPage_Widget(tabs); |
@@ -1980,20 +1982,20 @@ iWidget *makeBookmarkEditor_Widget(void) { | |||
1980 | iWidget *dlg = makeSheet_Widget("bmed"); | 1982 | iWidget *dlg = makeSheet_Widget("bmed"); |
1981 | setId_Widget(addChildFlags_Widget( | 1983 | setId_Widget(addChildFlags_Widget( |
1982 | dlg, | 1984 | dlg, |
1983 | iClob(new_LabelWidget(uiHeading_ColorEscape "EDIT BOOKMARK", NULL)), | 1985 | iClob(new_LabelWidget(uiHeading_ColorEscape "${heading.bookmark.edit}", NULL)), |
1984 | frameless_WidgetFlag), | 1986 | frameless_WidgetFlag), |
1985 | "bmed.heading"); | 1987 | "bmed.heading"); |
1986 | iWidget *headings, *values; | 1988 | iWidget *headings, *values; |
1987 | addChild_Widget(dlg, iClob(makeTwoColumnWidget_(&headings, &values))); | 1989 | addChild_Widget(dlg, iClob(makeTwoColumnWidget_(&headings, &values))); |
1988 | iInputWidget *inputs[4]; | 1990 | iInputWidget *inputs[4]; |
1989 | addChild_Widget(headings, iClob(makeHeading_Widget("Title:"))); | 1991 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.bookmark.title}"))); |
1990 | setId_Widget(addChild_Widget(values, iClob(inputs[0] = new_InputWidget(0))), "bmed.title"); | 1992 | setId_Widget(addChild_Widget(values, iClob(inputs[0] = new_InputWidget(0))), "bmed.title"); |
1991 | addChild_Widget(headings, iClob(makeHeading_Widget("URL:"))); | 1993 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.bookmark.url}"))); |
1992 | setId_Widget(addChild_Widget(values, iClob(inputs[1] = new_InputWidget(0))), "bmed.url"); | 1994 | setId_Widget(addChild_Widget(values, iClob(inputs[1] = new_InputWidget(0))), "bmed.url"); |
1993 | setUrlContent_InputWidget(inputs[1], iTrue); | 1995 | setUrlContent_InputWidget(inputs[1], iTrue); |
1994 | addChild_Widget(headings, iClob(makeHeading_Widget("Tags:"))); | 1996 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.bookmark.tags}"))); |
1995 | setId_Widget(addChild_Widget(values, iClob(inputs[2] = new_InputWidget(0))), "bmed.tags"); | 1997 | setId_Widget(addChild_Widget(values, iClob(inputs[2] = new_InputWidget(0))), "bmed.tags"); |
1996 | addChild_Widget(headings, iClob(makeHeading_Widget("Icon:"))); | 1998 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.bookmark.icon}"))); |
1997 | setId_Widget(addChild_Widget(values, iClob(inputs[3] = new_InputWidget(1))), "bmed.icon"); | 1999 | setId_Widget(addChild_Widget(values, iClob(inputs[3] = new_InputWidget(1))), "bmed.icon"); |
1998 | arrange_Widget(dlg); | 2000 | arrange_Widget(dlg); |
1999 | for (int i = 0; i < 3; ++i) { | 2001 | for (int i = 0; i < 3; ++i) { |
@@ -2002,7 +2004,7 @@ iWidget *makeBookmarkEditor_Widget(void) { | |||
2002 | addChild_Widget( | 2004 | addChild_Widget( |
2003 | dlg, | 2005 | dlg, |
2004 | iClob(makeDialogButtons_Widget((iMenuItem[]){ { "${cancel}", 0, 0, NULL }, | 2006 | iClob(makeDialogButtons_Widget((iMenuItem[]){ { "${cancel}", 0, 0, NULL }, |
2005 | { uiTextCaution_ColorEscape "Save Bookmark", | 2007 | { uiTextCaution_ColorEscape "${dlg.bookmark.save}", |
2006 | SDLK_RETURN, | 2008 | SDLK_RETURN, |
2007 | KMOD_PRIMARY, | 2009 | KMOD_PRIMARY, |
2008 | "bmed.accept" } }, | 2010 | "bmed.accept" } }, |
@@ -2045,7 +2047,7 @@ iWidget *makeBookmarkCreation_Widget(const iString *url, const iString *title, i | |||
2045 | iWidget *dlg = makeBookmarkEditor_Widget(); | 2047 | iWidget *dlg = makeBookmarkEditor_Widget(); |
2046 | setId_Widget(dlg, "bmed.create"); | 2048 | setId_Widget(dlg, "bmed.create"); |
2047 | setTextCStr_LabelWidget(findChild_Widget(dlg, "bmed.heading"), | 2049 | setTextCStr_LabelWidget(findChild_Widget(dlg, "bmed.heading"), |
2048 | uiHeading_ColorEscape "ADD BOOKMARK"); | 2050 | uiHeading_ColorEscape "${heading.bookmark.add}"); |
2049 | iUrl parts; | 2051 | iUrl parts; |
2050 | init_Url(&parts, url); | 2052 | init_Url(&parts, url); |
2051 | setTextCStr_InputWidget(findChild_Widget(dlg, "bmed.title"), | 2053 | setTextCStr_InputWidget(findChild_Widget(dlg, "bmed.title"), |
@@ -2112,28 +2114,28 @@ iWidget *makeFeedSettings_Widget(uint32_t bookmarkId) { | |||
2112 | iWidget *dlg = makeSheet_Widget("feedcfg"); | 2114 | iWidget *dlg = makeSheet_Widget("feedcfg"); |
2113 | setId_Widget(addChildFlags_Widget( | 2115 | setId_Widget(addChildFlags_Widget( |
2114 | dlg, | 2116 | dlg, |
2115 | iClob(new_LabelWidget(bookmarkId ? uiHeading_ColorEscape "FEED SETTINGS" | 2117 | iClob(new_LabelWidget(bookmarkId ? uiHeading_ColorEscape "${heading.feedcfg}" |
2116 | : uiHeading_ColorEscape "SUBSCRIBE TO PAGE", | 2118 | : uiHeading_ColorEscape "${heading.subscribe}", |
2117 | NULL)), | 2119 | NULL)), |
2118 | frameless_WidgetFlag), | 2120 | frameless_WidgetFlag), |
2119 | "feedcfg.heading"); | 2121 | "feedcfg.heading"); |
2120 | iWidget *headings, *values; | 2122 | iWidget *headings, *values; |
2121 | addChild_Widget(dlg, iClob(makeTwoColumnWidget_(&headings, &values))); | 2123 | addChild_Widget(dlg, iClob(makeTwoColumnWidget_(&headings, &values))); |
2122 | addChild_Widget(headings, iClob(makeHeading_Widget("Title:"))); | 2124 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.feed.title}"))); |
2123 | iInputWidget *input = new_InputWidget(0); | 2125 | iInputWidget *input = new_InputWidget(0); |
2124 | setId_Widget(addChild_Widget(values, iClob(input)), "feedcfg.title"); | 2126 | setId_Widget(addChild_Widget(values, iClob(input)), "feedcfg.title"); |
2125 | addChild_Widget(headings, iClob(makeHeading_Widget("Entry type:"))); | 2127 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.feed.entrytype}"))); |
2126 | iWidget *types = new_Widget(); { | 2128 | iWidget *types = new_Widget(); { |
2127 | addRadioButton_(types, "feedcfg.type.gemini", "YYYY-MM-DD Links", "feedcfg.type arg:0"); | 2129 | addRadioButton_(types, "feedcfg.type.gemini", "${dlg.feed.type.gemini}", "feedcfg.type arg:0"); |
2128 | addRadioButton_(types, "feedcfg.type.headings", "New Headings", "feedcfg.type arg:1"); | 2130 | addRadioButton_(types, "feedcfg.type.headings", "${dlg.feed.type.headings}", "feedcfg.type arg:1"); |
2129 | } | 2131 | } |
2130 | addChildFlags_Widget(values, iClob(types), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); | 2132 | addChildFlags_Widget(values, iClob(types), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); |
2131 | iWidget *buttons = | 2133 | iWidget *buttons = |
2132 | addChild_Widget(dlg, | 2134 | addChild_Widget(dlg, |
2133 | iClob(makeDialogButtons_Widget( | 2135 | iClob(makeDialogButtons_Widget( |
2134 | (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, | 2136 | (iMenuItem[]){ { "${cancel}", 0, 0, NULL }, |
2135 | { bookmarkId ? uiTextCaution_ColorEscape "Save Settings" | 2137 | { bookmarkId ? uiTextCaution_ColorEscape "${dlg.feed.save}" |
2136 | : uiTextCaution_ColorEscape "Subscribe", | 2138 | : uiTextCaution_ColorEscape "${dlg.feed.sub}", |
2137 | SDLK_RETURN, | 2139 | SDLK_RETURN, |
2138 | KMOD_PRIMARY, | 2140 | KMOD_PRIMARY, |
2139 | format_CStr("feedcfg.accept bmid:%d", bookmarkId) } }, | 2141 | format_CStr("feedcfg.accept bmid:%d", bookmarkId) } }, |
@@ -2161,14 +2163,14 @@ iWidget *makeIdentityCreation_Widget(void) { | |||
2161 | iWidget *dlg = makeSheet_Widget("ident"); | 2163 | iWidget *dlg = makeSheet_Widget("ident"); |
2162 | setId_Widget(addChildFlags_Widget( | 2164 | setId_Widget(addChildFlags_Widget( |
2163 | dlg, | 2165 | dlg, |
2164 | iClob(new_LabelWidget(uiHeading_ColorEscape "NEW IDENTITY", NULL)), | 2166 | iClob(new_LabelWidget(uiHeading_ColorEscape "${heading.newident}", NULL)), |
2165 | frameless_WidgetFlag), | 2167 | frameless_WidgetFlag), |
2166 | "ident.heading"); | 2168 | "ident.heading"); |
2167 | iWidget *page = new_Widget(); | 2169 | iWidget *page = new_Widget(); |
2168 | addChildFlags_Widget( | 2170 | addChildFlags_Widget( |
2169 | dlg, | 2171 | dlg, |
2170 | iClob( | 2172 | iClob( |
2171 | new_LabelWidget("Creating a self-signed 2048-bit RSA certificate.", NULL)), | 2173 | new_LabelWidget("${dlg.newident.rsa.selfsign}", NULL)), |
2172 | frameless_WidgetFlag); | 2174 | frameless_WidgetFlag); |
2173 | addChild_Widget(dlg, iClob(page)); | 2175 | addChild_Widget(dlg, iClob(page)); |
2174 | setFlags_Widget(page, arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag, iTrue); | 2176 | setFlags_Widget(page, arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag, iTrue); |
@@ -2177,35 +2179,35 @@ iWidget *makeIdentityCreation_Widget(void) { | |||
2177 | iWidget *values = addChildFlags_Widget( | 2179 | iWidget *values = addChildFlags_Widget( |
2178 | page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); | 2180 | page, iClob(new_Widget()), arrangeVertical_WidgetFlag | arrangeSize_WidgetFlag); |
2179 | iInputWidget *inputs[6]; | 2181 | iInputWidget *inputs[6]; |
2180 | addChild_Widget(headings, iClob(makeHeading_Widget("Valid until:"))); | 2182 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.until}"))); |
2181 | setId_Widget(addChild_Widget(values, iClob(newHint_InputWidget(19, "YYYY-MM-DD HH:MM:SS"))), "ident.until"); | 2183 | setId_Widget(addChild_Widget(values, iClob(newHint_InputWidget(19, "${hint.newident.date}"))), "ident.until"); |
2182 | addChild_Widget(headings, iClob(makeHeading_Widget("Common name:"))); | 2184 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.commonname}"))); |
2183 | setId_Widget(addChild_Widget(values, iClob(inputs[0] = new_InputWidget(0))), "ident.common"); | 2185 | setId_Widget(addChild_Widget(values, iClob(inputs[0] = new_InputWidget(0))), "ident.common"); |
2184 | /* Temporary? */ { | 2186 | /* Temporary? */ { |
2185 | addChild_Widget(headings, iClob(makeHeading_Widget("Temporary:"))); | 2187 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.temp}"))); |
2186 | iWidget *tmpGroup = new_Widget(); | 2188 | iWidget *tmpGroup = new_Widget(); |
2187 | setFlags_Widget(tmpGroup, arrangeSize_WidgetFlag | arrangeHorizontal_WidgetFlag, iTrue); | 2189 | setFlags_Widget(tmpGroup, arrangeSize_WidgetFlag | arrangeHorizontal_WidgetFlag, iTrue); |
2188 | addChild_Widget(tmpGroup, iClob(makeToggle_Widget("ident.temp"))); | 2190 | addChild_Widget(tmpGroup, iClob(makeToggle_Widget("ident.temp"))); |
2189 | setId_Widget( | 2191 | setId_Widget( |
2190 | addChildFlags_Widget( | 2192 | addChildFlags_Widget( |
2191 | tmpGroup, | 2193 | tmpGroup, |
2192 | iClob(new_LabelWidget(uiTextCaution_ColorEscape "\u26a0 not saved to disk", NULL)), | 2194 | iClob(new_LabelWidget(uiTextCaution_ColorEscape "\u26a0 ${dlg.newident.notsaved}", NULL)), |
2193 | hidden_WidgetFlag | frameless_WidgetFlag), | 2195 | hidden_WidgetFlag | frameless_WidgetFlag), |
2194 | "ident.temp.note"); | 2196 | "ident.temp.note"); |
2195 | addChild_Widget(values, iClob(tmpGroup)); | 2197 | addChild_Widget(values, iClob(tmpGroup)); |
2196 | } | 2198 | } |
2197 | addChild_Widget(headings, iClob(makePadding_Widget(gap_UI))); | 2199 | addChild_Widget(headings, iClob(makePadding_Widget(gap_UI))); |
2198 | addChild_Widget(values, iClob(makePadding_Widget(gap_UI))); | 2200 | addChild_Widget(values, iClob(makePadding_Widget(gap_UI))); |
2199 | addChild_Widget(headings, iClob(makeHeading_Widget("Email:"))); | 2201 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.email}"))); |
2200 | setId_Widget(addChild_Widget(values, iClob(inputs[1] = newHint_InputWidget(0, "optional"))), "ident.email"); | 2202 | setId_Widget(addChild_Widget(values, iClob(inputs[1] = newHint_InputWidget(0, "${hint.newident.optional}"))), "ident.email"); |
2201 | addChild_Widget(headings, iClob(makeHeading_Widget("User ID:"))); | 2203 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.userid}"))); |
2202 | setId_Widget(addChild_Widget(values, iClob(inputs[2] = newHint_InputWidget(0, "optional"))), "ident.userid"); | 2204 | setId_Widget(addChild_Widget(values, iClob(inputs[2] = newHint_InputWidget(0, "${hint.newident.optional}"))), "ident.userid"); |
2203 | addChild_Widget(headings, iClob(makeHeading_Widget("Domain:"))); | 2205 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.domain}"))); |
2204 | setId_Widget(addChild_Widget(values, iClob(inputs[3] = newHint_InputWidget(0, "optional"))), "ident.domain"); | 2206 | setId_Widget(addChild_Widget(values, iClob(inputs[3] = newHint_InputWidget(0, "${hint.newident.optional}"))), "ident.domain"); |
2205 | addChild_Widget(headings, iClob(makeHeading_Widget("Organization:"))); | 2207 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.org}"))); |
2206 | setId_Widget(addChild_Widget(values, iClob(inputs[4] = newHint_InputWidget(0, "optional"))), "ident.org"); | 2208 | setId_Widget(addChild_Widget(values, iClob(inputs[4] = newHint_InputWidget(0, "${hint.newident.optional}"))), "ident.org"); |
2207 | addChild_Widget(headings, iClob(makeHeading_Widget("Country:"))); | 2209 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.newident.country}"))); |
2208 | setId_Widget(addChild_Widget(values, iClob(inputs[5] = newHint_InputWidget(0, "optional"))), "ident.country"); | 2210 | setId_Widget(addChild_Widget(values, iClob(inputs[5] = newHint_InputWidget(0, "${hint.newident.optional}"))), "ident.country"); |
2209 | arrange_Widget(dlg); | 2211 | arrange_Widget(dlg); |
2210 | for (size_t i = 0; i < iElemCount(inputs); ++i) { | 2212 | for (size_t i = 0; i < iElemCount(inputs); ++i) { |
2211 | as_Widget(inputs[i])->rect.size.x = 100 * gap_UI - headings->rect.size.x; | 2213 | as_Widget(inputs[i])->rect.size.x = 100 * gap_UI - headings->rect.size.x; |
@@ -2213,7 +2215,7 @@ iWidget *makeIdentityCreation_Widget(void) { | |||
2213 | addChild_Widget( | 2215 | addChild_Widget( |
2214 | dlg, | 2216 | dlg, |
2215 | iClob(makeDialogButtons_Widget((iMenuItem[]){ { "${cancel}", 0, 0, NULL }, | 2217 | iClob(makeDialogButtons_Widget((iMenuItem[]){ { "${cancel}", 0, 0, NULL }, |
2216 | { uiTextAction_ColorEscape "Create Identity", | 2218 | { uiTextAction_ColorEscape "${dlg.newident.create}", |
2217 | SDLK_RETURN, | 2219 | SDLK_RETURN, |
2218 | KMOD_PRIMARY, | 2220 | KMOD_PRIMARY, |
2219 | "ident.accept" } }, | 2221 | "ident.accept" } }, |
@@ -2224,17 +2226,17 @@ iWidget *makeIdentityCreation_Widget(void) { | |||
2224 | } | 2226 | } |
2225 | 2227 | ||
2226 | static const iMenuItem languages[] = { | 2228 | static const iMenuItem languages[] = { |
2227 | { "Arabic", 0, 0, "xlt.lang id:ar" }, | 2229 | { "${lang.ar}", 0, 0, "xlt.lang id:ar" }, |
2228 | { "Chinese", 0, 0, "xlt.lang id:zh" }, | 2230 | { "${lang.zh}", 0, 0, "xlt.lang id:zh" }, |
2229 | { "English", 0, 0, "xlt.lang id:en" }, | 2231 | { "${lang.en}", 0, 0, "xlt.lang id:en" }, |
2230 | { "French", 0, 0, "xlt.lang id:fr" }, | 2232 | { "${lang.fr}", 0, 0, "xlt.lang id:fr" }, |
2231 | { "German", 0, 0, "xlt.lang id:de" }, | 2233 | { "${lang.de}", 0, 0, "xlt.lang id:de" }, |
2232 | { "Hindi", 0, 0, "xlt.lang id:hi" }, | 2234 | { "${lang.hi}", 0, 0, "xlt.lang id:hi" }, |
2233 | { "Italian", 0, 0, "xlt.lang id:it" }, | 2235 | { "${lang.it}", 0, 0, "xlt.lang id:it" }, |
2234 | { "Japanese", 0, 0, "xlt.lang id:ja" }, | 2236 | { "${lang.ja}", 0, 0, "xlt.lang id:ja" }, |
2235 | { "Portuguese", 0, 0, "xlt.lang id:pt" }, | 2237 | { "${lang.pt}", 0, 0, "xlt.lang id:pt" }, |
2236 | { "Russian", 0, 0, "xlt.lang id:ru" }, | 2238 | { "${lang.ru}", 0, 0, "xlt.lang id:ru" }, |
2237 | { "Spanish", 0, 0, "xlt.lang id:es" }, | 2239 | { "${lang.es}", 0, 0, "xlt.lang id:es" }, |
2238 | }; | 2240 | }; |
2239 | 2241 | ||
2240 | static iBool translationHandler_(iWidget *dlg, const char *cmd) { | 2242 | static iBool translationHandler_(iWidget *dlg, const char *cmd) { |
@@ -2251,7 +2253,7 @@ static iBool translationHandler_(iWidget *dlg, const char *cmd) { | |||
2251 | 2253 | ||
2252 | const char *languageId_String(const iString *menuItemLabel) { | 2254 | const char *languageId_String(const iString *menuItemLabel) { |
2253 | iForIndices(i, languages) { | 2255 | iForIndices(i, languages) { |
2254 | if (!cmp_String(menuItemLabel, languages[i].label)) { | 2256 | if (!cmp_String(menuItemLabel, translateCStr_Lang(languages[i].label))) { |
2255 | return cstr_Rangecc(range_Command(languages[i].command, "id")); | 2257 | return cstr_Rangecc(range_Command(languages[i].command, "id")); |
2256 | } | 2258 | } |
2257 | } | 2259 | } |
@@ -2272,7 +2274,7 @@ iWidget *makeTranslation_Widget(iWidget *parent) { | |||
2272 | setFlags_Widget(dlg, keepOnTop_WidgetFlag, iFalse); | 2274 | setFlags_Widget(dlg, keepOnTop_WidgetFlag, iFalse); |
2273 | setCommandHandler_Widget(dlg, translationHandler_); | 2275 | setCommandHandler_Widget(dlg, translationHandler_); |
2274 | addChildFlags_Widget(dlg, | 2276 | addChildFlags_Widget(dlg, |
2275 | iClob(new_LabelWidget(uiHeading_ColorEscape "TRANSLATE PAGE", NULL)), | 2277 | iClob(new_LabelWidget(uiHeading_ColorEscape "${heading.translate}", NULL)), |
2276 | frameless_WidgetFlag); | 2278 | frameless_WidgetFlag); |
2277 | addChild_Widget(dlg, iClob(makePadding_Widget(lineHeight_Text(uiLabel_FontId)))); | 2279 | addChild_Widget(dlg, iClob(makePadding_Widget(lineHeight_Text(uiLabel_FontId)))); |
2278 | iWidget *headings, *values; | 2280 | iWidget *headings, *values; |
@@ -2281,11 +2283,11 @@ iWidget *makeTranslation_Widget(iWidget *parent) { | |||
2281 | setId_Widget(page, "xlt.langs"); | 2283 | setId_Widget(page, "xlt.langs"); |
2282 | iLabelWidget *fromLang, *toLang; | 2284 | iLabelWidget *fromLang, *toLang; |
2283 | /* Source language. */ { | 2285 | /* Source language. */ { |
2284 | addChild_Widget(headings, iClob(makeHeading_Widget("From:"))); | 2286 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.translate.from}"))); |
2285 | setId_Widget( | 2287 | setId_Widget( |
2286 | addChildFlags_Widget(values, | 2288 | addChildFlags_Widget(values, |
2287 | iClob(fromLang = makeMenuButton_LabelWidget( | 2289 | iClob(fromLang = makeMenuButton_LabelWidget( |
2288 | "Portuguese", languages, iElemCount(languages))), | 2290 | "${lang.pt}", languages, iElemCount(languages))), |
2289 | alignLeft_WidgetFlag), | 2291 | alignLeft_WidgetFlag), |
2290 | "xlt.from"); | 2292 | "xlt.from"); |
2291 | iWidget *langMenu = findChild_Widget(as_Widget(fromLang), "menu"); | 2293 | iWidget *langMenu = findChild_Widget(as_Widget(fromLang), "menu"); |
@@ -2294,10 +2296,10 @@ iWidget *makeTranslation_Widget(iWidget *parent) { | |||
2294 | setBackgroundColor_Widget(langMenu, uiBackgroundMenu_ColorId); | 2296 | setBackgroundColor_Widget(langMenu, uiBackgroundMenu_ColorId); |
2295 | } | 2297 | } |
2296 | /* Target language. */ { | 2298 | /* Target language. */ { |
2297 | addChild_Widget(headings, iClob(makeHeading_Widget("To:"))); | 2299 | addChild_Widget(headings, iClob(makeHeading_Widget("${dlg.translate.to}"))); |
2298 | setId_Widget(addChildFlags_Widget(values, | 2300 | setId_Widget(addChildFlags_Widget(values, |
2299 | iClob(toLang = makeMenuButton_LabelWidget( | 2301 | iClob(toLang = makeMenuButton_LabelWidget( |
2300 | "Portuguese", languages, iElemCount(languages))), | 2302 | "${lang.pt}", languages, iElemCount(languages))), |
2301 | alignLeft_WidgetFlag), | 2303 | alignLeft_WidgetFlag), |
2302 | "xlt.to"); | 2304 | "xlt.to"); |
2303 | iWidget *langMenu = findChild_Widget(as_Widget(toLang), "menu"); | 2305 | iWidget *langMenu = findChild_Widget(as_Widget(toLang), "menu"); |
@@ -2311,7 +2313,7 @@ iWidget *makeTranslation_Widget(iWidget *parent) { | |||
2311 | iClob(makeDialogButtons_Widget( | 2313 | iClob(makeDialogButtons_Widget( |
2312 | (iMenuItem[]){ | 2314 | (iMenuItem[]){ |
2313 | { "${cancel}", SDLK_ESCAPE, 0, "translation.cancel" }, | 2315 | { "${cancel}", SDLK_ESCAPE, 0, "translation.cancel" }, |
2314 | { uiTextAction_ColorEscape "Translate", SDLK_RETURN, 0, "translation.submit" } }, | 2316 | { uiTextAction_ColorEscape "${dlg.translate}", SDLK_RETURN, 0, "translation.submit" } }, |
2315 | 2))); | 2317 | 2))); |
2316 | addChild_Widget(parent, iClob(dlg)); | 2318 | addChild_Widget(parent, iClob(dlg)); |
2317 | arrange_Widget(dlg); | 2319 | arrange_Widget(dlg); |