Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
664bdce10f | ||
|
|
9457d74047 | ||
|
|
26663ed888 | ||
|
|
9f9e19e3b0 | ||
|
|
df902e9122 | ||
|
|
8337a2822f | ||
|
|
e8f39da602 | ||
|
|
1ba71443f5 | ||
|
|
9c4caf506b | ||
|
|
668396803a | ||
|
|
a11c4bc79a | ||
|
|
ec957caf3c | ||
|
|
ad80612ac2 | ||
|
|
3eb6d98b95 | ||
|
|
c722094df9 | ||
|
|
c199ce80c7 | ||
|
|
ead50105e3 | ||
|
|
81db4c0055 | ||
|
|
9f64d060fb | ||
|
|
0cf4a755fd | ||
|
|
37196ab4f5 | ||
|
|
e96a627c55 | ||
|
|
7f2c209a06 | ||
|
|
b1a3eb23c7 | ||
|
|
35b8b389ff | ||
|
|
d8493554cd | ||
|
|
a40e730bf0 | ||
|
|
056b1c3087 | ||
|
|
7127b8ea31 | ||
|
|
82906899de | ||
|
|
566d40bd05 | ||
|
|
6a8cd1ec80 | ||
|
|
b0db806f5e | ||
|
|
439dcb35d1 | ||
|
|
ad07539cb6 | ||
|
|
a7c1481f87 | ||
|
|
c7bc2d0aa6 | ||
|
|
2bbad80235 | ||
|
|
ffe11b17b5 | ||
|
|
0daae5af37 | ||
|
|
2f1f6a6c83 | ||
|
|
f8393e3d77 | ||
|
|
40c4d65669 | ||
|
|
7d866b183b | ||
|
|
b13f77ce95 | ||
|
|
cb324389e4 | ||
|
|
2de62b1636 | ||
|
|
afb137edee | ||
|
|
d4fdd62916 | ||
|
|
ac63e5a957 | ||
|
|
b8aa592b19 | ||
|
|
325b9334b5 | ||
|
|
f547fbc601 | ||
|
|
0e2678f09e | ||
|
|
e78bbc9c3b | ||
|
|
f523d12fa1 | ||
|
|
c6f844775f | ||
|
|
450c18198a | ||
|
|
ad57071515 | ||
|
|
f6d0323485 | ||
|
|
004958f464 | ||
|
|
09117d68a6 | ||
|
|
04eea84f8a | ||
|
|
685ffedb53 | ||
|
|
f74e9930c1 | ||
|
|
a05e62f1d3 | ||
|
|
3aba608001 | ||
|
|
fa59e71fe3 | ||
|
|
839c6fc1e6 | ||
|
|
ff509ed6b5 | ||
|
|
ca3239f0ff | ||
|
|
eb0911d3c0 | ||
|
|
a7c7a3f40c | ||
|
|
a6f0357ad8 | ||
|
|
35eb472e6b | ||
|
|
ba4ff3cd42 | ||
|
|
9709cc2845 | ||
|
|
f35e49dc8b | ||
|
|
9a307978b5 | ||
|
|
bd01e250b2 | ||
|
|
8bb1049cf0 | ||
|
|
52391d9a08 | ||
|
|
823390d28b | ||
|
|
eedab7da56 | ||
|
|
63fda12c99 | ||
|
|
5cc005583c | ||
|
|
6b856314d0 | ||
|
|
b581b7a8b1 | ||
|
|
0bfa44e6bb | ||
|
|
5c05dc6eb6 | ||
|
|
7a2845fef3 | ||
|
|
5b71b776a7 | ||
|
|
2bd3b4c3b9 |
18
.gitmodules
vendored
18
.gitmodules
vendored
@@ -1,18 +1,24 @@
|
||||
[submodule "lib/stdex"]
|
||||
path = lib/stdex
|
||||
url = https://github.com/Amebis/stdex.git
|
||||
url = https://git.amebis.si/Amebis/stdex.git
|
||||
[submodule "lib/WinStd"]
|
||||
path = lib/WinStd
|
||||
url = https://github.com/Amebis/WinStd.git
|
||||
url = https://git.amebis.si/Amebis/WinStd.git
|
||||
[submodule "lib/wxExtend"]
|
||||
path = lib/wxExtend
|
||||
url = https://github.com/Amebis/wxExtend.git
|
||||
url = https://git.amebis.si/Amebis/wxExtend.git
|
||||
[submodule "MSI/MSIBuild"]
|
||||
path = MSI/MSIBuild
|
||||
url = https://github.com/Amebis/MSIBuild.git
|
||||
url = https://git.amebis.si/Amebis/MSIBuild.git
|
||||
[submodule "MSI/MSICA"]
|
||||
path = MSI/MSICA
|
||||
url = https://github.com/Amebis/MSICA.git
|
||||
url = https://git.amebis.si/Amebis/MSICA.git
|
||||
[submodule "Updater"]
|
||||
path = Updater
|
||||
url = https://github.com/Amebis/Updater.git
|
||||
url = https://git.amebis.si/Amebis/Updater.git
|
||||
[submodule "lib/oatpp"]
|
||||
path = lib/oatpp
|
||||
url = https://github.com/oatpp/oatpp.git
|
||||
[submodule "lib/oatpp-swagger"]
|
||||
path = lib/oatpp-swagger
|
||||
url = https://github.com/oatpp/oatpp-swagger.git
|
||||
|
||||
Submodule MSI/MSIBuild updated: 9eeff699e5...eccce8c523
Submodule MSI/MSICA updated: 51e1196c19...982643e871
Binary file not shown.
@@ -7,21 +7,22 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-19 08:59+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:19+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2022\n"
|
||||
"Language-Team: German (Germany) (https://www.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"Language-Team: German (Germany) (https://app.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de_DE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:4 en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: en_US.Win32.Debug.Control-2.idtx:4 en_US.Win32.Release.Control-2.idtx:4
|
||||
#: en_US.x64.Debug.Control-2.idtx:4 en_US.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -3465,6 +3466,8 @@ msgstr ""
|
||||
"Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:5 en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: en_US.ARM64.Release.Control-2.idtx:5 en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: en_US.Win32.Debug.Control-2.idtx:5 en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: en_US.Win32.Release.Control-2.idtx:5 en_US.Win32.Release.Control-2.idtx:12
|
||||
#: en_US.x64.Debug.Control-2.idtx:5 en_US.x64.Debug.Control-2.idtx:12
|
||||
@@ -3472,11 +3475,13 @@ msgstr ""
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:6 en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: en_US.Win32.Debug.Control-2.idtx:6 en_US.Win32.Release.Control-2.idtx:6
|
||||
#: en_US.x64.Debug.Control-2.idtx:6 en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:7 en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: en_US.Win32.Debug.Control-2.idtx:7 en_US.Win32.Release.Control-2.idtx:7
|
||||
#: en_US.x64.Debug.Control-2.idtx:7 en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
@@ -3484,6 +3489,7 @@ msgid ""
|
||||
"or some other appropriate part of the publication the note below:"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:8 en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: en_US.Win32.Debug.Control-2.idtx:8 en_US.Win32.Release.Control-2.idtx:8
|
||||
#: en_US.x64.Debug.Control-2.idtx:8 en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
@@ -3497,6 +3503,7 @@ msgid ""
|
||||
"(http://www.zrc-sazu.si) by Peter Weiss.\\f1\\par}"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:9 en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: en_US.Win32.Debug.Control-2.idtx:9 en_US.Win32.Release.Control-2.idtx:9
|
||||
#: en_US.x64.Debug.Control-2.idtx:9 en_US.x64.Release.Control-2.idtx:9
|
||||
msgid ""
|
||||
@@ -3504,11 +3511,14 @@ msgid ""
|
||||
"dialog or on its website."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:10 en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: en_US.Win32.Debug.Control-2.idtx:10 en_US.Win32.Release.Control-2.idtx:10
|
||||
#: en_US.x64.Debug.Control-2.idtx:10 en_US.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:11 en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: en_US.ARM64.Release.Control-2.idtx:11 en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: en_US.Win32.Debug.Control-2.idtx:11 en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: en_US.Win32.Release.Control-2.idtx:11 en_US.Win32.Release.Control-2.idtx:16
|
||||
#: en_US.x64.Debug.Control-2.idtx:11 en_US.x64.Debug.Control-2.idtx:16
|
||||
@@ -3516,16 +3526,19 @@ msgstr ""
|
||||
msgid "&Continue"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:13 en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: en_US.Win32.Debug.Control-2.idtx:13 en_US.Win32.Release.Control-2.idtx:13
|
||||
#: en_US.x64.Debug.Control-2.idtx:13 en_US.x64.Release.Control-2.idtx:13
|
||||
msgid "[DlgTitleFont]\"00 ZRCola\" to \"ZRCola\" Font"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:14 en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: en_US.Win32.Debug.Control-2.idtx:14 en_US.Win32.Release.Control-2.idtx:14
|
||||
#: en_US.x64.Debug.Control-2.idtx:14 en_US.x64.Release.Control-2.idtx:14
|
||||
msgid "fontsubst.bmp"
|
||||
msgstr "fontsubst.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:15 en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: en_US.Win32.Debug.Control-2.idtx:15 en_US.Win32.Release.Control-2.idtx:15
|
||||
#: en_US.x64.Debug.Control-2.idtx:15 en_US.x64.Release.Control-2.idtx:15
|
||||
msgid ""
|
||||
@@ -3534,86 +3547,103 @@ msgid ""
|
||||
"computer that will take effect after the next restart."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Directory-2.idtx:4 en_US.ARM64.Release.Directory-2.idtx:4
|
||||
#: en_US.Win32.Debug.Directory-2.idtx:4 en_US.Win32.Release.Directory-2.idtx:4
|
||||
#: en_US.x64.Debug.Directory-2.idtx:4 en_US.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Schriftarten"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentation"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:4 en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: en_US.Win32.Debug.Property-2.idtx:4 en_US.Win32.Release.Property-2.idtx:4
|
||||
#: en_US.x64.Debug.Property-2.idtx:4 en_US.x64.Release.Property-2.idtx:4
|
||||
msgid "Amebis, Slovenia, E.U."
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:5 en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: en_US.Win32.Debug.Property-2.idtx:5 en_US.Win32.Release.Property-2.idtx:5
|
||||
#: en_US.x64.Debug.Property-2.idtx:5 en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "Fran Ramovš Institute of Slovenian Language ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:6 en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: en_US.Win32.Debug.Property-2.idtx:6 en_US.Win32.Release.Property-2.idtx:6
|
||||
#: en_US.x64.Debug.Property-2.idtx:6 en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "+386 1 470 6170"
|
||||
msgstr "+386 1 470 6170"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:7 en_US.ARM64.Release.Property-2.idtx:7
|
||||
#: en_US.Win32.Debug.Property-2.idtx:7 en_US.Win32.Release.Property-2.idtx:7
|
||||
#: en_US.x64.Debug.Property-2.idtx:7 en_US.x64.Release.Property-2.idtx:7
|
||||
msgid "http://zrcola.zrc-sazu.si/en/contact/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/contact/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:8 en_US.ARM64.Release.Property-2.idtx:8
|
||||
#: en_US.Win32.Debug.Property-2.idtx:8 en_US.Win32.Release.Property-2.idtx:8
|
||||
#: en_US.x64.Debug.Property-2.idtx:8 en_US.x64.Release.Property-2.idtx:8
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/info/instructions/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:9 en_US.ARM64.Release.Property-2.idtx:9
|
||||
#: en_US.Win32.Debug.Property-2.idtx:9 en_US.Win32.Release.Property-2.idtx:9
|
||||
#: en_US.x64.Debug.Property-2.idtx:9 en_US.x64.Release.Property-2.idtx:9
|
||||
msgid "http://zrcola.zrc-sazu.si/en/install/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/install/"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
|
||||
@@ -7,21 +7,22 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-19 08:59+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:19+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2022\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"Language-Team: Russian (Russia) (https://app.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru_RU\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:4 en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: en_US.Win32.Debug.Control-2.idtx:4 en_US.Win32.Release.Control-2.idtx:4
|
||||
#: en_US.x64.Debug.Control-2.idtx:4 en_US.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -3465,6 +3466,8 @@ msgstr ""
|
||||
"Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:5 en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: en_US.ARM64.Release.Control-2.idtx:5 en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: en_US.Win32.Debug.Control-2.idtx:5 en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: en_US.Win32.Release.Control-2.idtx:5 en_US.Win32.Release.Control-2.idtx:12
|
||||
#: en_US.x64.Debug.Control-2.idtx:5 en_US.x64.Debug.Control-2.idtx:12
|
||||
@@ -3472,11 +3475,13 @@ msgstr ""
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:6 en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: en_US.Win32.Debug.Control-2.idtx:6 en_US.Win32.Release.Control-2.idtx:6
|
||||
#: en_US.x64.Debug.Control-2.idtx:6 en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Декларация"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:7 en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: en_US.Win32.Debug.Control-2.idtx:7 en_US.Win32.Release.Control-2.idtx:7
|
||||
#: en_US.x64.Debug.Control-2.idtx:7 en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
@@ -3486,6 +3491,7 @@ msgstr ""
|
||||
"Текст, созданный с помощью системы ZRCola, должен в примечании или другом "
|
||||
"соответствующем месте в публикации сопровождаться следующей записью"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:8 en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: en_US.Win32.Debug.Control-2.idtx:8 en_US.Win32.Release.Control-2.idtx:8
|
||||
#: en_US.x64.Debug.Control-2.idtx:8 en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
@@ -3515,6 +3521,7 @@ msgstr ""
|
||||
"\\'cb\\'fe\\'e1\\'eb\\'ff\\'ed\\'e5 (http://www.zrc-sazu.si) "
|
||||
"\\'cf\\'e5\\'f2\\'f0\\'ee\\'ec \\'c2\\'e5\\'e9\\'f1\\'f1o\\'ec.\\f1\\par}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:9 en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: en_US.Win32.Debug.Control-2.idtx:9 en_US.Win32.Release.Control-2.idtx:9
|
||||
#: en_US.x64.Debug.Control-2.idtx:9 en_US.x64.Release.Control-2.idtx:9
|
||||
msgid ""
|
||||
@@ -3524,11 +3531,14 @@ msgstr ""
|
||||
"Примечание: Ета декларация доступна также в диалоговом окне «О программе» "
|
||||
"либо на вебсайте системы ZRCola."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:10 en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: en_US.Win32.Debug.Control-2.idtx:10 en_US.Win32.Release.Control-2.idtx:10
|
||||
#: en_US.x64.Debug.Control-2.idtx:10 en_US.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr "Согласен."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:11 en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: en_US.ARM64.Release.Control-2.idtx:11 en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: en_US.Win32.Debug.Control-2.idtx:11 en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: en_US.Win32.Release.Control-2.idtx:11 en_US.Win32.Release.Control-2.idtx:16
|
||||
#: en_US.x64.Debug.Control-2.idtx:11 en_US.x64.Debug.Control-2.idtx:16
|
||||
@@ -3536,16 +3546,19 @@ msgstr "Согласен."
|
||||
msgid "&Continue"
|
||||
msgstr "Продолжить"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:13 en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: en_US.Win32.Debug.Control-2.idtx:13 en_US.Win32.Release.Control-2.idtx:13
|
||||
#: en_US.x64.Debug.Control-2.idtx:13 en_US.x64.Release.Control-2.idtx:13
|
||||
msgid "[DlgTitleFont]\"00 ZRCola\" to \"ZRCola\" Font"
|
||||
msgstr "[DlgTitleFont]Шрифт «00 ZRCola» в «ZRCola»"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:14 en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: en_US.Win32.Debug.Control-2.idtx:14 en_US.Win32.Release.Control-2.idtx:14
|
||||
#: en_US.x64.Debug.Control-2.idtx:14 en_US.x64.Release.Control-2.idtx:14
|
||||
msgid "fontsubst.bmp"
|
||||
msgstr "fontsubst.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:15 en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: en_US.Win32.Debug.Control-2.idtx:15 en_US.Win32.Release.Control-2.idtx:15
|
||||
#: en_US.x64.Debug.Control-2.idtx:15 en_US.x64.Release.Control-2.idtx:15
|
||||
msgid ""
|
||||
@@ -3557,86 +3570,103 @@ msgstr ""
|
||||
"предыдущих документов в вашем компьютере проведена субституция шрифтов, "
|
||||
"которая вступит в силу после следующего запуска компьютера."
|
||||
|
||||
#: en_US.ARM64.Debug.Directory-2.idtx:4 en_US.ARM64.Release.Directory-2.idtx:4
|
||||
#: en_US.Win32.Debug.Directory-2.idtx:4 en_US.Win32.Release.Directory-2.idtx:4
|
||||
#: en_US.x64.Debug.Directory-2.idtx:4 en_US.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Шрифты"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr "Шрифты, использованные системой ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr "Шрифт на основе Times New Roman"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Документация"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr "Документация системы ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Сочетание клавиш"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr "Документ PDF со списком сочетаний клавиш системы ZRCola "
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:4 en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: en_US.Win32.Debug.Property-2.idtx:4 en_US.Win32.Release.Property-2.idtx:4
|
||||
#: en_US.x64.Debug.Property-2.idtx:4 en_US.x64.Release.Property-2.idtx:4
|
||||
msgid "Amebis, Slovenia, E.U."
|
||||
msgstr "Amebis, Словения, ЕС"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:5 en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: en_US.Win32.Debug.Property-2.idtx:5 en_US.Win32.Release.Property-2.idtx:5
|
||||
#: en_US.x64.Debug.Property-2.idtx:5 en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "Fran Ramovš Institute of Slovenian Language ZRC SAZU"
|
||||
msgstr "Институт словенского языка им. Франа Рамовша ZRC SAZU"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:6 en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: en_US.Win32.Debug.Property-2.idtx:6 en_US.Win32.Release.Property-2.idtx:6
|
||||
#: en_US.x64.Debug.Property-2.idtx:6 en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "+386 1 470 6170"
|
||||
msgstr "+386 1 470 6170"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:7 en_US.ARM64.Release.Property-2.idtx:7
|
||||
#: en_US.Win32.Debug.Property-2.idtx:7 en_US.Win32.Release.Property-2.idtx:7
|
||||
#: en_US.x64.Debug.Property-2.idtx:7 en_US.x64.Release.Property-2.idtx:7
|
||||
msgid "http://zrcola.zrc-sazu.si/en/contact/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/contact/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:8 en_US.ARM64.Release.Property-2.idtx:8
|
||||
#: en_US.Win32.Debug.Property-2.idtx:8 en_US.Win32.Release.Property-2.idtx:8
|
||||
#: en_US.x64.Debug.Property-2.idtx:8 en_US.x64.Release.Property-2.idtx:8
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/info/instructions/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:9 en_US.ARM64.Release.Property-2.idtx:9
|
||||
#: en_US.Win32.Debug.Property-2.idtx:9 en_US.Win32.Release.Property-2.idtx:9
|
||||
#: en_US.x64.Debug.Property-2.idtx:9 en_US.x64.Release.Property-2.idtx:9
|
||||
msgid "http://zrcola.zrc-sazu.si/en/install/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/install/"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRCOLA~1|Сочетание клавиш системы ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
|
||||
@@ -7,21 +7,22 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola MSI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-19 08:59+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:19+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2022\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://www.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://app.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sl_SI\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ../Main\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:4 en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: en_US.Win32.Debug.Control-2.idtx:4 en_US.Win32.Release.Control-2.idtx:4
|
||||
#: en_US.x64.Debug.Control-2.idtx:4 en_US.x64.Release.Control-2.idtx:4
|
||||
msgid ""
|
||||
@@ -3465,6 +3466,8 @@ msgstr ""
|
||||
"Heading;}}{\\*\\datastore "
|
||||
"0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c0ef044c8850cf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:5 en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: en_US.ARM64.Release.Control-2.idtx:5 en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: en_US.Win32.Debug.Control-2.idtx:5 en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: en_US.Win32.Release.Control-2.idtx:5 en_US.Win32.Release.Control-2.idtx:12
|
||||
#: en_US.x64.Debug.Control-2.idtx:5 en_US.x64.Debug.Control-2.idtx:12
|
||||
@@ -3472,11 +3475,13 @@ msgstr ""
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:6 en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: en_US.Win32.Debug.Control-2.idtx:6 en_US.Win32.Release.Control-2.idtx:6
|
||||
#: en_US.x64.Debug.Control-2.idtx:6 en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "[DlgTitleFont][SimpleProductName] Declaration"
|
||||
msgstr "[DlgTitleFont]Deklaracija [SimpleProductName]"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:7 en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: en_US.Win32.Debug.Control-2.idtx:7 en_US.Win32.Release.Control-2.idtx:7
|
||||
#: en_US.x64.Debug.Control-2.idtx:7 en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
@@ -3487,6 +3492,7 @@ msgstr ""
|
||||
"opombi ali na drugem ustreznem mestu v publikaciji opremljeno z naslednjim "
|
||||
"zapisom:"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:8 en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: en_US.Win32.Debug.Control-2.idtx:8 en_US.Win32.Release.Control-2.idtx:8
|
||||
#: en_US.x64.Debug.Control-2.idtx:8 en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
@@ -3508,6 +3514,7 @@ msgstr ""
|
||||
"(http://zrcola.zrc-sazu.si), ki ga je na Znanstvenoraziskovalnem centru SAZU"
|
||||
" v Ljubljani (http://www.zrc-sazu.si) razvil Peter Weiss.\\i0\\f1\\par}"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:9 en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: en_US.Win32.Debug.Control-2.idtx:9 en_US.Win32.Release.Control-2.idtx:9
|
||||
#: en_US.x64.Debug.Control-2.idtx:9 en_US.x64.Release.Control-2.idtx:9
|
||||
msgid ""
|
||||
@@ -3517,11 +3524,14 @@ msgstr ""
|
||||
"Opomba: Ta deklaracija je na voljo tudi v dialogu vizitke "
|
||||
"[SimpleProductName] ali na spletni strani."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:10 en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: en_US.Win32.Debug.Control-2.idtx:10 en_US.Win32.Release.Control-2.idtx:10
|
||||
#: en_US.x64.Debug.Control-2.idtx:10 en_US.x64.Release.Control-2.idtx:10
|
||||
msgid "I &agree."
|
||||
msgstr "&Strinjam se."
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:11 en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: en_US.ARM64.Release.Control-2.idtx:11 en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: en_US.Win32.Debug.Control-2.idtx:11 en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: en_US.Win32.Release.Control-2.idtx:11 en_US.Win32.Release.Control-2.idtx:16
|
||||
#: en_US.x64.Debug.Control-2.idtx:11 en_US.x64.Debug.Control-2.idtx:16
|
||||
@@ -3529,16 +3539,19 @@ msgstr "&Strinjam se."
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:13 en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: en_US.Win32.Debug.Control-2.idtx:13 en_US.Win32.Release.Control-2.idtx:13
|
||||
#: en_US.x64.Debug.Control-2.idtx:13 en_US.x64.Release.Control-2.idtx:13
|
||||
msgid "[DlgTitleFont]\"00 ZRCola\" to \"ZRCola\" Font"
|
||||
msgstr "[DlgTitleFont]\"00 ZRCola\" v pisavo \"ZRCola\""
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:14 en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: en_US.Win32.Debug.Control-2.idtx:14 en_US.Win32.Release.Control-2.idtx:14
|
||||
#: en_US.x64.Debug.Control-2.idtx:14 en_US.x64.Release.Control-2.idtx:14
|
||||
msgid "fontsubst.bmp"
|
||||
msgstr "fontsubst.bmp"
|
||||
|
||||
#: en_US.ARM64.Debug.Control-2.idtx:15 en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: en_US.Win32.Debug.Control-2.idtx:15 en_US.Win32.Release.Control-2.idtx:15
|
||||
#: en_US.x64.Debug.Control-2.idtx:15 en_US.x64.Release.Control-2.idtx:15
|
||||
msgid ""
|
||||
@@ -3550,86 +3563,103 @@ msgstr ""
|
||||
" dokumenti prikazani pravilno, smo na vašem računalniku uredili nadomeščanje"
|
||||
" pisave, ki bo stopilo v veljavo po naslednjem zagonu."
|
||||
|
||||
#: en_US.ARM64.Debug.Directory-2.idtx:4 en_US.ARM64.Release.Directory-2.idtx:4
|
||||
#: en_US.Win32.Debug.Directory-2.idtx:4 en_US.Win32.Release.Directory-2.idtx:4
|
||||
#: en_US.x64.Debug.Directory-2.idtx:4 en_US.x64.Release.Directory-2.idtx:4
|
||||
msgid "ZRCola:."
|
||||
msgstr "ZRCola:."
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts"
|
||||
msgstr "Pisave"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:4 en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:4 en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: en_US.x64.Debug.Feature-2.idtx:4 en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Fonts used by ZRCola"
|
||||
msgstr "Pisave, ki jih uporablja ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "ZRCola"
|
||||
msgstr "ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:5 en_US.ARM64.Release.Feature-2.idtx:5
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:5 en_US.Win32.Release.Feature-2.idtx:5
|
||||
#: en_US.x64.Debug.Feature-2.idtx:5 en_US.x64.Release.Feature-2.idtx:5
|
||||
msgid "Times New Roman based font"
|
||||
msgstr "Pisava na osnovi Times New Roman"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentacija"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:6 en_US.ARM64.Release.Feature-2.idtx:6
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:6 en_US.Win32.Release.Feature-2.idtx:6
|
||||
#: en_US.x64.Debug.Feature-2.idtx:6 en_US.x64.Release.Feature-2.idtx:6
|
||||
msgid "ZRCola Documentation"
|
||||
msgstr "Dokumentacija ZRCola"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Bližnjice na tipkovnici"
|
||||
|
||||
#: en_US.ARM64.Debug.Feature-2.idtx:7 en_US.ARM64.Release.Feature-2.idtx:7
|
||||
#: en_US.Win32.Debug.Feature-2.idtx:7 en_US.Win32.Release.Feature-2.idtx:7
|
||||
#: en_US.x64.Debug.Feature-2.idtx:7 en_US.x64.Release.Feature-2.idtx:7
|
||||
msgid "PDF document with a list of ZRCola keyboard shortcuts"
|
||||
msgstr "Dokument PDF s seznamom ZRColinih bližnjic na tipkovnici"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:4 en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: en_US.Win32.Debug.Property-2.idtx:4 en_US.Win32.Release.Property-2.idtx:4
|
||||
#: en_US.x64.Debug.Property-2.idtx:4 en_US.x64.Release.Property-2.idtx:4
|
||||
msgid "Amebis, Slovenia, E.U."
|
||||
msgstr "Amebis, d. o. o., Kamnik"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:5 en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: en_US.Win32.Debug.Property-2.idtx:5 en_US.Win32.Release.Property-2.idtx:5
|
||||
#: en_US.x64.Debug.Property-2.idtx:5 en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "Fran Ramovš Institute of Slovenian Language ZRC SAZU"
|
||||
msgstr "Inštitut za slovenski jezik Frana Ramovša ZRC SAZU"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:6 en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: en_US.Win32.Debug.Property-2.idtx:6 en_US.Win32.Release.Property-2.idtx:6
|
||||
#: en_US.x64.Debug.Property-2.idtx:6 en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "+386 1 470 6170"
|
||||
msgstr "01 470 6170"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:7 en_US.ARM64.Release.Property-2.idtx:7
|
||||
#: en_US.Win32.Debug.Property-2.idtx:7 en_US.Win32.Release.Property-2.idtx:7
|
||||
#: en_US.x64.Debug.Property-2.idtx:7 en_US.x64.Release.Property-2.idtx:7
|
||||
msgid "http://zrcola.zrc-sazu.si/en/contact/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/contact/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:8 en_US.ARM64.Release.Property-2.idtx:8
|
||||
#: en_US.Win32.Debug.Property-2.idtx:8 en_US.Win32.Release.Property-2.idtx:8
|
||||
#: en_US.x64.Debug.Property-2.idtx:8 en_US.x64.Release.Property-2.idtx:8
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/info/instructions/"
|
||||
|
||||
#: en_US.ARM64.Debug.Property-2.idtx:9 en_US.ARM64.Release.Property-2.idtx:9
|
||||
#: en_US.Win32.Debug.Property-2.idtx:9 en_US.Win32.Release.Property-2.idtx:9
|
||||
#: en_US.x64.Debug.Property-2.idtx:9 en_US.x64.Release.Property-2.idtx:9
|
||||
msgid "http://zrcola.zrc-sazu.si/en/install/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/install/"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCOLA~1|ZRCola Keyboard Shortcuts"
|
||||
msgstr "ZRCOLA~1|ZRColine bližnjice na tipkovnici"
|
||||
|
||||
#: en_US.ARM64.Debug.Shortcut-2.idtx:4 en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: en_US.Win32.Debug.Shortcut-2.idtx:4 en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: en_US.x64.Debug.Shortcut-2.idtx:4 en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola Keyboard Shortcuts"
|
||||
|
||||
Binary file not shown.
29
README.md
29
README.md
@@ -1,4 +1,4 @@
|
||||
# ZRCola
|
||||
# ZRCola
|
||||
|
||||
A Microsoft Windows application for composing texts using a wide range of Slavic (and general) letters from or beyond Unicode.
|
||||
|
||||
@@ -36,14 +36,25 @@ ZRCola is using wxWidgets static libraries. You have to compile static libraries
|
||||
ZRCola compilation references wxWidgets libraries using `WXWIN` environment variable. Please set it to wxWidgets folder (e.g. `C:\SDK\wxWidgets`).
|
||||
|
||||
### Digital Signing of Build Outputs
|
||||
In order to have the build process digitally sign output files, one should provide the following:
|
||||
In order to have the build process digitally sign output files, one should setup either:
|
||||
|
||||
1. A signing certificate installed in the current user's certificate store.
|
||||
2. The following variables in the environment:
|
||||
- `ManifestCertificateThumbprint` - set the value to certificate's SHA1 thumbprint (hexadecimal, without spaces, e.g. `f61b973226c502a732d24f41aa85e192b009e7c0`).
|
||||
- `ManifestTimestampRFC3161Url` - set the value to URL used to perform RFC3161 timestamp signature (e.g. `http://time.certum.pl`). In order to perform timestamp signing successfully, the computer running the build should be online and able to access this URL.
|
||||
- Local signing:
|
||||
1. A signing certificate installed in the current user's certificate store.
|
||||
2. The following variables in the environment:
|
||||
- `ManifestCertificateThumbprint` - set the value to certificate's SHA1 thumbprint (hexadecimal, without spaces, e.g. `f61b973226c502a732d24f41aa85e192b009e7c0`).
|
||||
- `ManifestTimestampRFC3161Url` - set the value to URL used to perform RFC3161 timestamp signature (e.g. `http://time.certum.pl`). In order to perform timestamp signing successfully, the computer running the build should be online and able to access this URL.
|
||||
|
||||
Please note that only Release builds are configured for timestamp signing. Debug configurations do not attempt to timestamp sign the resulting DLL and EXE files in order to speed up the building process and enable offline building.
|
||||
- Microsoft Trusted Signing:
|
||||
1. Install [Trusted Signing dlib package](https://www.nuget.org/packages/Microsoft.Trusted.Signing.Client):
|
||||
```cmd
|
||||
nuget install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x
|
||||
```
|
||||
2. Provide a [`manifest.json`](https://learn.microsoft.com/en-us/azure/trusted-signing/how-to-signing-integrations#create-a-json-file) file and place it at `%APPDATA%\Microsoft.Trusted.Signing.Client.json`:
|
||||
```cmd
|
||||
notepad "%APPDATA%\Microsoft.Trusted.Signing.Client.json"
|
||||
```
|
||||
|
||||
Please note that only Release builds are configured for signing. Debug configurations do not sign the resulting DLL and EXE files in order to speed up the building process and reduce signing volume.
|
||||
|
||||
### Building
|
||||
Use Microsoft NMAKE to build the project. The resulting files can be found in output subfolder. Open _x64 Native Tools Command Prompt for VS 2017_ for building.
|
||||
@@ -56,6 +67,10 @@ Use Microsoft NMAKE to build the project. The resulting files can be found in ou
|
||||
|
||||
The `/ls` flag can be appended to the commands above to reduce NMAKE's verbosity. You can combine multiple targets (e.g. nmake Unregister Clean). Please, see NMAKE reference for further reading.
|
||||
|
||||
## Building and installing ZRCola webservice
|
||||
|
||||
ZRCola is also available as a Linux web-service. See [ZRColaWS/README.md](ZRColaWS/README.md) for instructions.
|
||||
|
||||
## Translating ZRCola
|
||||
Instructions how to translate ZRCola to your language can be found [here](LOCALIZATION.md).
|
||||
|
||||
|
||||
2
Updater
2
Updater
Submodule Updater updated: 76124075fc...f457f62448
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:32+0100\n"
|
||||
"POT-Creation-Date: 2025-11-14 16:23+0100\n"
|
||||
"PO-Revision-Date: 2019-04-01 19:38+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
@@ -21,7 +21,7 @@ msgstr ""
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:110 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
@@ -45,7 +45,7 @@ msgstr ""
|
||||
msgid "Context"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:382
|
||||
msgid "Request a New Character"
|
||||
msgstr ""
|
||||
|
||||
@@ -62,7 +62,7 @@ msgstr ""
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:870
|
||||
msgid "▸ Search Options"
|
||||
msgstr ""
|
||||
|
||||
@@ -70,35 +70,35 @@ msgstr ""
|
||||
msgid ", "
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:867
|
||||
msgid "▾ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
#: zrcolafrm.cpp:76
|
||||
msgid "No Translation"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
#: zrcolafrm.cpp:89
|
||||
msgid "Custom Translation..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
#: zrcolafrm.cpp:209
|
||||
msgid "ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:209 zrcolafrm.cpp:211
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:211
|
||||
msgid "ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
#: zrcolafrm.cpp:505
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
#: zrcolafrm.cpp:530
|
||||
msgid "http://zrcola.zrc-sazu.si/wp-content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
msgstr ""
|
||||
|
||||
@@ -399,7 +399,7 @@ msgid "Shows/hides additional search options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgid "List of Unicode character blocks to search in"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:524
|
||||
@@ -415,7 +415,7 @@ msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgid "Clear block selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:534
|
||||
@@ -423,7 +423,7 @@ msgid "Invert"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgid "Invert block selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:574
|
||||
@@ -467,7 +467,7 @@ msgid "Character tags"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgid "Unicode character block"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:698
|
||||
@@ -637,23 +637,23 @@ msgstr ""
|
||||
msgid "↓"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:260
|
||||
#: zrcolagui.h:262
|
||||
msgid "Character Search"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:296
|
||||
#: zrcolagui.h:299
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:322
|
||||
#: zrcolagui.h:326
|
||||
msgid "About ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
#: zrcolagui.h:352 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:418
|
||||
#: zrcolagui.h:425
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr ""
|
||||
|
||||
@@ -661,7 +661,7 @@ msgstr ""
|
||||
msgid "INS key is pressed. Type the Unicode code of desired character now (up to four hexadecimal digits: 0-9, A-F), then release INS."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
#: zrcolasettings.cpp:72
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:45+0100\n"
|
||||
"POT-Creation-Date: 2025-11-14 16:23+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2021\n"
|
||||
"Language-Team: German (Germany) (https://www.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"Language-Team: German (Germany) (https://app.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -27,11 +27,17 @@ msgstr ""
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:110 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola"
|
||||
@@ -45,7 +51,7 @@ msgstr ""
|
||||
msgid "Context"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:382
|
||||
msgid "Request a New Character"
|
||||
msgstr ""
|
||||
|
||||
@@ -62,7 +68,7 @@ msgstr "Fehler bei der Validierung"
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:870
|
||||
msgid "▸ Search Options"
|
||||
msgstr ""
|
||||
|
||||
@@ -70,39 +76,39 @@ msgstr ""
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:867
|
||||
msgid "▾ Search Options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
#: zrcolafrm.cpp:76
|
||||
msgid "No Translation"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
#: zrcolafrm.cpp:89
|
||||
msgid "Custom Translation..."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
#: zrcolafrm.cpp:209
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:209 zrcolafrm.cpp:211
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:211
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
#: zrcolafrm.cpp:505
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/de/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
#: zrcolafrm.cpp:530
|
||||
msgid ""
|
||||
"http://zrcola.zrc-sazu.si/wp-"
|
||||
"content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
@@ -409,7 +415,7 @@ msgid "Shows/hides additional search options"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgid "List of Unicode character blocks to search in"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:524
|
||||
@@ -425,7 +431,7 @@ msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgid "Clear block selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:534
|
||||
@@ -433,7 +439,7 @@ msgid "Invert"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgid "Invert block selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:574
|
||||
@@ -477,7 +483,7 @@ msgid "Character tags"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgid "Unicode character block"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:698
|
||||
@@ -654,23 +660,23 @@ msgstr "↑"
|
||||
msgid "↓"
|
||||
msgstr "↓"
|
||||
|
||||
#: zrcolagui.h:260
|
||||
#: zrcolagui.h:262
|
||||
msgid "Character Search"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:296
|
||||
#: zrcolagui.h:299
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:322
|
||||
#: zrcolagui.h:326
|
||||
msgid "About ZRCola"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
#: zrcolagui.h:352 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.h:418
|
||||
#: zrcolagui.h:425
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr ""
|
||||
|
||||
@@ -680,7 +686,7 @@ msgid ""
|
||||
"four hexadecimal digits: 0-9, A-F), then release INS."
|
||||
msgstr ""
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
#: zrcolasettings.cpp:72
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr ""
|
||||
|
||||
@@ -695,40 +701,61 @@ msgid ""
|
||||
"Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "tutorial1.bmp"
|
||||
msgstr "tutorial1.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
"When configured, ZRCola starts at system startup and runs in the background."
|
||||
" If needed, it can be brought up by pressing the combination Win+F5."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
"IMPORTANT: Upon pressing the combination Win+F5 the program memorises the "
|
||||
@@ -737,32 +764,50 @@ msgid ""
|
||||
" where to insert the special characters!"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
msgid "&Continue"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "tutorial2.bmp"
|
||||
msgstr "tutorial2.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:13
|
||||
msgid ""
|
||||
"The string of basic and substitute characters is entered into the upper "
|
||||
@@ -770,30 +815,45 @@ msgid ""
|
||||
"characters are displayed. To insert them in the text, the F5 key is used."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
msgid "tutorial3.bmp"
|
||||
msgstr "tutorial3.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:18
|
||||
msgid ""
|
||||
"Characters can be entered using keyboard shortcuts, the character catalogue "
|
||||
"(F4) or the character finding tool (F8)."
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:45+0100\n"
|
||||
"POT-Creation-Date: 2025-11-14 16:23+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2021\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"Language-Team: Russian (Russia) (https://app.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -28,11 +28,17 @@ msgstr ""
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr "© 2004–%s ZRC SAZU"
|
||||
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:110 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola"
|
||||
@@ -46,7 +52,7 @@ msgstr "Знак"
|
||||
msgid "Context"
|
||||
msgstr "Контекст"
|
||||
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:382
|
||||
msgid "Request a New Character"
|
||||
msgstr "Запрос нового знака"
|
||||
|
||||
@@ -63,7 +69,7 @@ msgstr "Конфликт проверки"
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr "Недействительный знак в записи Unicode: %c"
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:870
|
||||
msgid "▸ Search Options"
|
||||
msgstr "▸ Опции поиска"
|
||||
|
||||
@@ -71,19 +77,19 @@ msgstr "▸ Опции поиска"
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:867
|
||||
msgid "▾ Search Options"
|
||||
msgstr "▾ Опции поиска"
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
#: zrcolafrm.cpp:76
|
||||
msgid "No Translation"
|
||||
msgstr "Без транслитерации"
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
#: zrcolafrm.cpp:89
|
||||
msgid "Custom Translation..."
|
||||
msgstr "Настраиваемое преобразование ..."
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
#: zrcolafrm.cpp:209
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
@@ -91,11 +97,11 @@ msgstr ""
|
||||
"Сочетание клавиш Win+F5 регистрировать. Некоторые функциональности не будут "
|
||||
"доступны."
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:209 zrcolafrm.cpp:211
|
||||
msgid "Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:211
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
@@ -103,11 +109,11 @@ msgstr ""
|
||||
"Сочетание клавиш Win+F6 невозможно регистрировать. Некоторые "
|
||||
"функциональности не будут доступны."
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
#: zrcolafrm.cpp:505
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/ru/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
#: zrcolafrm.cpp:530
|
||||
msgid ""
|
||||
"http://zrcola.zrc-sazu.si/wp-"
|
||||
"content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
@@ -419,8 +425,8 @@ msgid "Shows/hides additional search options"
|
||||
msgstr "Показать/скрыть дополнительные опции поиска"
|
||||
|
||||
#: zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr "Список категории Юникод для проведения поиска"
|
||||
msgid "List of Unicode character blocks to search in"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:524
|
||||
msgid "All"
|
||||
@@ -435,16 +441,16 @@ msgid "None"
|
||||
msgstr "Ничего"
|
||||
|
||||
#: zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgstr "Очистить выбор категории"
|
||||
msgid "Clear block selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:534
|
||||
msgid "Invert"
|
||||
msgstr "Обратить"
|
||||
|
||||
#: zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgstr "Обратить выбор категории"
|
||||
msgid "Invert block selection"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:574
|
||||
msgid "Character search results"
|
||||
@@ -487,8 +493,8 @@ msgid "Character tags"
|
||||
msgstr "Ключевые слова"
|
||||
|
||||
#: zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgstr "Категория знака Юникод"
|
||||
msgid "Unicode character block"
|
||||
msgstr ""
|
||||
|
||||
#: zrcolagui.cpp:698
|
||||
msgid "« Back"
|
||||
@@ -686,23 +692,23 @@ msgstr "↑"
|
||||
msgid "↓"
|
||||
msgstr "↓"
|
||||
|
||||
#: zrcolagui.h:260
|
||||
#: zrcolagui.h:262
|
||||
msgid "Character Search"
|
||||
msgstr "Поиск знака"
|
||||
|
||||
#: zrcolagui.h:296
|
||||
#: zrcolagui.h:299
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: zrcolagui.h:322
|
||||
#: zrcolagui.h:326
|
||||
msgid "About ZRCola"
|
||||
msgstr "О системе ZRCola"
|
||||
|
||||
#: zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
#: zrcolagui.h:352 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr "Обновление продукта"
|
||||
|
||||
#: zrcolagui.h:418
|
||||
#: zrcolagui.h:425
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr "Настраиваемая последовательность преобразований"
|
||||
|
||||
@@ -714,7 +720,7 @@ msgstr ""
|
||||
"Нажата клавиша INS. Введите код Юникод желаемого знака (максимум четыре "
|
||||
"шестнадцатеричныe цифры: 0-9, A-F), затем отпустите клавишу INS."
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
#: zrcolasettings.cpp:72
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr "Автоматически запустить систему ZRCola при запуске компьютера"
|
||||
|
||||
@@ -731,32 +737,50 @@ msgstr ""
|
||||
"Программа будет закрыта и обновлена.\n"
|
||||
"Вы уверены?"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Руководство по запуску системы"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "tutorial1.bmp"
|
||||
msgstr "tutorial1.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
"When configured, ZRCola starts at system startup and runs in the background."
|
||||
@@ -766,8 +790,11 @@ msgstr ""
|
||||
"работает в фоновом режиме. Если потребуется, пользователь может вывести "
|
||||
"программу на экран, нажав на сочетание клавиш Win+F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
"IMPORTANT: Upon pressing the combination Win+F5 the program memorises the "
|
||||
@@ -780,32 +807,50 @@ msgstr ""
|
||||
"использования упомянутого сочетания клавиш, программа не знает, куда ввести "
|
||||
"желаемые знаки!"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
msgid "&Continue"
|
||||
msgstr "&Продолжить"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Руководство по составлению"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "tutorial2.bmp"
|
||||
msgstr "tutorial2.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:13
|
||||
msgid ""
|
||||
"The string of basic and substitute characters is entered into the upper "
|
||||
@@ -816,20 +861,29 @@ msgstr ""
|
||||
" того, в нижнем окне появляются соответствующие специальные знаки. Для их "
|
||||
"ввода в текст нужно нажать клавишу F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr "[DlgTitleFont][SimpleProductName] Руководство по вводу знаков"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
msgid "tutorial3.bmp"
|
||||
msgstr "tutorial3.bmp"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:18
|
||||
msgid ""
|
||||
"Characters can be entered using keyboard shortcuts, the character catalogue "
|
||||
@@ -838,10 +892,16 @@ msgstr ""
|
||||
"Знак можно ввести, употребляя сочетания клавиш на клавиатуре, список знаков "
|
||||
"(F4) или функцию \"Поиск знака\" (F8)."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2021
|
||||
# Simon Rozman <simon@rozman.si>, 2025
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola\n"
|
||||
"POT-Creation-Date: 2021-12-21 14:45+0100\n"
|
||||
"POT-Creation-Date: 2025-11-14 16:23+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2021\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://www.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2025\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://app.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -27,11 +27,17 @@ msgstr ""
|
||||
msgid "© 2004-%s ZRC SAZU"
|
||||
msgstr "© 2004-%s ZRC SAZU"
|
||||
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:118 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: zrcolaapp.cpp:60 zrcolafrm.cpp:110 zrcolagui.cpp:232 zrcolagui.cpp:943
|
||||
#: zrcolagui.h:119 MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "ZRCola"
|
||||
@@ -45,7 +51,7 @@ msgstr "Znak"
|
||||
msgid "Context"
|
||||
msgstr "Kontekst"
|
||||
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:376
|
||||
#: zrcolachrreq.cpp:50 zrcolagui.h:382
|
||||
msgid "Request a New Character"
|
||||
msgstr "Zahtevaj nov znak"
|
||||
|
||||
@@ -62,7 +68,7 @@ msgstr "Nesoglasje pri preverjanju"
|
||||
msgid "Invalid character in Unicode found: %c"
|
||||
msgstr "Napačen znak v zapisu Unicode: %c"
|
||||
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:874
|
||||
#: zrcolachrslct.cpp:201 zrcolachrslct.cpp:377 zrcolachrslct.cpp:870
|
||||
msgid "▸ Search Options"
|
||||
msgstr "▸ Možnosti iskanja"
|
||||
|
||||
@@ -70,19 +76,19 @@ msgstr "▸ Možnosti iskanja"
|
||||
msgid ", "
|
||||
msgstr ", "
|
||||
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:871
|
||||
#: zrcolachrslct.cpp:380 zrcolachrslct.cpp:867
|
||||
msgid "▾ Search Options"
|
||||
msgstr "▾ Možnosti iskanja"
|
||||
|
||||
#: zrcolafrm.cpp:84
|
||||
#: zrcolafrm.cpp:76
|
||||
msgid "No Translation"
|
||||
msgstr "Brez transliteracije"
|
||||
|
||||
#: zrcolafrm.cpp:97
|
||||
#: zrcolafrm.cpp:89
|
||||
msgid "Custom Translation..."
|
||||
msgstr "Pretvorba po meri ..."
|
||||
|
||||
#: zrcolafrm.cpp:217
|
||||
#: zrcolafrm.cpp:209
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
@@ -90,11 +96,11 @@ msgstr ""
|
||||
"ZRColine bližnjice na tipkovnici Win+F5 ni mogoče registrirati. Nekaj "
|
||||
"funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:217 zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:209 zrcolafrm.cpp:211
|
||||
msgid "Warning"
|
||||
msgstr "Opozorilo"
|
||||
|
||||
#: zrcolafrm.cpp:219
|
||||
#: zrcolafrm.cpp:211
|
||||
msgid ""
|
||||
"ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality "
|
||||
"will not be available."
|
||||
@@ -102,11 +108,11 @@ msgstr ""
|
||||
"ZRColine bližnjice na tipkovnici Win+F6 ni mogoče registrirati. Nekaj "
|
||||
"funkcionalnosti ne bo na voljo."
|
||||
|
||||
#: zrcolafrm.cpp:513
|
||||
#: zrcolafrm.cpp:505
|
||||
msgid "http://zrcola.zrc-sazu.si/en/info/instructions/"
|
||||
msgstr "http://zrcola.zrc-sazu.si/info/instructions/"
|
||||
|
||||
#: zrcolafrm.cpp:538
|
||||
#: zrcolafrm.cpp:530
|
||||
msgid ""
|
||||
"http://zrcola.zrc-sazu.si/wp-"
|
||||
"content/uploads/2016/06/ZRCola_tipkovnica_Jun2016.pdf"
|
||||
@@ -418,8 +424,8 @@ msgid "Shows/hides additional search options"
|
||||
msgstr "Prikaže/skrije dodatne možnosti iskanja"
|
||||
|
||||
#: zrcolagui.cpp:517
|
||||
msgid "List of Unicode character categories to search in"
|
||||
msgstr "Seznam kategorij znaka Unicode za iskanje"
|
||||
msgid "List of Unicode character blocks to search in"
|
||||
msgstr "Seznam znakovnih blokov Unicode za iskanje"
|
||||
|
||||
#: zrcolagui.cpp:524
|
||||
msgid "All"
|
||||
@@ -434,16 +440,16 @@ msgid "None"
|
||||
msgstr "Nič"
|
||||
|
||||
#: zrcolagui.cpp:530
|
||||
msgid "Clear category selection"
|
||||
msgstr "Počisti izbor kategorij"
|
||||
msgid "Clear block selection"
|
||||
msgstr "Počisti izbor blokov"
|
||||
|
||||
#: zrcolagui.cpp:534
|
||||
msgid "Invert"
|
||||
msgstr "Obrni"
|
||||
|
||||
#: zrcolagui.cpp:535
|
||||
msgid "Invert category selection"
|
||||
msgstr "Obrni izbor kategorij"
|
||||
msgid "Invert block selection"
|
||||
msgstr "Obrni izbor blokov"
|
||||
|
||||
#: zrcolagui.cpp:574
|
||||
msgid "Character search results"
|
||||
@@ -486,8 +492,8 @@ msgid "Character tags"
|
||||
msgstr "Oznake znaka"
|
||||
|
||||
#: zrcolagui.cpp:691
|
||||
msgid "Unicode character category"
|
||||
msgstr "Kategorija znaka Unicode"
|
||||
msgid "Unicode character block"
|
||||
msgstr "Znakovni blok Unicode"
|
||||
|
||||
#: zrcolagui.cpp:698
|
||||
msgid "« Back"
|
||||
@@ -683,23 +689,23 @@ msgstr "↑"
|
||||
msgid "↓"
|
||||
msgstr "↓"
|
||||
|
||||
#: zrcolagui.h:260
|
||||
#: zrcolagui.h:262
|
||||
msgid "Character Search"
|
||||
msgstr "Poišči znak"
|
||||
|
||||
#: zrcolagui.h:296
|
||||
#: zrcolagui.h:299
|
||||
msgid "Settings"
|
||||
msgstr "Nastavitve"
|
||||
|
||||
#: zrcolagui.h:322
|
||||
#: zrcolagui.h:326
|
||||
msgid "About ZRCola"
|
||||
msgstr "O ZRColi"
|
||||
|
||||
#: zrcolagui.h:347 zrcolaupdater.cpp:81
|
||||
#: zrcolagui.h:352 zrcolaupdater.cpp:81
|
||||
msgid "Product Update"
|
||||
msgstr "Posodabljanje izdelka"
|
||||
|
||||
#: zrcolagui.h:418
|
||||
#: zrcolagui.h:425
|
||||
msgid "Custom Translation Sequence"
|
||||
msgstr "Zaporedje pretvorb po meri"
|
||||
|
||||
@@ -711,7 +717,7 @@ msgstr ""
|
||||
"Pritisnili ste tipko INS. Vtipkajte kodo Unicode želenega znaka (do štiri "
|
||||
"šestnajstiške števke: 0–9, A–F), nato izpustite INS."
|
||||
|
||||
#: zrcolasettings.cpp:73
|
||||
#: zrcolasettings.cpp:72
|
||||
msgid "Start ZRCola automatically on logon"
|
||||
msgstr "Samodejno zaženi ZRColo ob prijavi"
|
||||
|
||||
@@ -728,32 +734,50 @@ msgstr ""
|
||||
"Program se bo zdaj zaprl in zagnala se bo posodobitev.\n"
|
||||
"Ali ste prepričani, da želite nadaljevati?"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:15
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:10
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:15
|
||||
msgid "UIHeader.bmp"
|
||||
msgstr "UIHeader.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:5
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:5
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Starting"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Zagon"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:6
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:6
|
||||
msgid "tutorial1.bmp"
|
||||
msgstr "tutorial1.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:7
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:7
|
||||
msgid ""
|
||||
"When configured, ZRCola starts at system startup and runs in the background."
|
||||
@@ -762,8 +786,11 @@ msgstr ""
|
||||
"Če jo tako nastavimo, se ZRCola zažene samodejno in teče v ozadju. V "
|
||||
"ospredje jo prikličemo s pritiskom na bližnjico Win+F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:8
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:8
|
||||
msgid ""
|
||||
"IMPORTANT: Upon pressing the combination Win+F5 the program memorises the "
|
||||
@@ -775,32 +802,50 @@ msgstr ""
|
||||
"besedilu. Če ZRColo povečamo brez pritiska na ti dve tipki, program ne bo "
|
||||
"vedel, kam vstaviti želene znake!"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:19
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:9
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:14
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:19
|
||||
msgid "&Continue"
|
||||
msgstr "&Nadaljuj"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:11
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:11
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Composition"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Sestavljanje"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:12
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:12
|
||||
msgid "tutorial2.bmp"
|
||||
msgstr "tutorial2.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:13
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:13
|
||||
msgid ""
|
||||
"The string of basic and substitute characters is entered into the upper "
|
||||
@@ -811,20 +856,29 @@ msgstr ""
|
||||
"programu. V spodnji vrstici se prikažejo sestavljeni znaki. V besedilo jih "
|
||||
"vnesemo s pritiskom na tipko F5."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:16
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:16
|
||||
msgid "[DlgTitleFont][SimpleProductName] Tutorial : Entering Characters"
|
||||
msgstr "[DlgTitleFont]Vadnica [SimpleProductName] : Vnos znakov"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:17
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:17
|
||||
msgid "tutorial3.bmp"
|
||||
msgstr "tutorial3.bmp"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.ARM64.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.Win32.Release.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Debug.Control-2.idtx:18
|
||||
#: MSIBuild/en_US.x64.Release.Control-2.idtx:18
|
||||
msgid ""
|
||||
"Characters can be entered using keyboard shortcuts, the character catalogue "
|
||||
@@ -833,10 +887,16 @@ msgstr ""
|
||||
"Znake lahko v vnosno vrstico vstavljamo s pomočjo bližnjic na tipkovnici, iz"
|
||||
" kataloga znakov (F4) ali z iskalnikom znakov (F8)."
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Input system for linguistic use"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <Updater/chkthread.h>
|
||||
|
||||
#include <wxex/common.h>
|
||||
#include <wxex/icon.h>
|
||||
#include <wxex/url.h>
|
||||
#include <wxex/persist/auimanager.h>
|
||||
#include <wxex/persist/toplevel.h>
|
||||
@@ -46,7 +47,7 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <stdex/idrec>
|
||||
#include <zrcola/idrec.h>
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
#include <Msi.h>
|
||||
|
||||
12410
ZRCola/res/ZRCola.fbp
12410
ZRCola/res/ZRCola.fbp
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -218,9 +218,9 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolEditPaste = m_toolbarEdit->AddTool( wxID_PASTE, _("Paste"), wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_NORMAL, _("Paste"), _("Paste selection"), NULL );
|
||||
|
||||
m_toolbarEdit->Realize();
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo().Name( wxT("toolbarEdit") ).Top().Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo() .Name( wxT("toolbarEdit") ).Top() .Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORIZONTAL|wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolCharSelect = m_toolbarTranslate->AddTool( wxID_CHARACTER_SELECTOR, _("Find Character"), wxIcon( wxT("char_select.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_CHECK, _("Find Character"), _("Toggle character search to select character to insert into text"), NULL );
|
||||
|
||||
m_toolSendDestination = m_toolbarTranslate->AddTool( wxID_SEND_DESTINATION, _("Send Composed"), wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_NORMAL, _("Send Composed"), _("Send composed text to source window"), NULL );
|
||||
@@ -235,7 +235,7 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolComposition->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolComposition );
|
||||
wxArrayString m_toolTranslationSeqChoices;
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, wxSize( 180,-1 ), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, wxSize( 200,-1 ), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolTranslationSeq );
|
||||
m_toolbarTranslate->AddSeparator();
|
||||
@@ -243,7 +243,7 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolWarnPUA = m_toolbarTranslate->AddTool( wxID_WARN_PUA, _("PUA Warning"), wxIcon( wxT("warn_pua.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_CHECK, _("Highlight Private Use Area Characters"), _("Highlight Private Use Area Characters"), NULL );
|
||||
|
||||
m_toolbarTranslate->Realize();
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo().Name( wxT("toolbarCompose") ).Top().Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo() .Name( wxT("toolbarCompose") ).Top() .Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_panelChrCat = new wxZRColaCharacterCatalogPanel( this );
|
||||
|
||||
@@ -382,7 +382,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
this->SetSizer( bSizerMain );
|
||||
this->Layout();
|
||||
bSizerMain->Fit( this );
|
||||
m_timerSave.SetOwner( this, wxID_TIMER_SAVE );
|
||||
m_timerSave.SetOwner( this, m_timerSave.GetId() );
|
||||
|
||||
// Connect Events
|
||||
m_source->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnSourcePaint ), NULL, this );
|
||||
@@ -391,7 +391,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
m_destination->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Connect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Connect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
}
|
||||
|
||||
wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
@@ -403,7 +403,7 @@ wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
m_destination->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Disconnect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Disconnect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
|
||||
}
|
||||
|
||||
@@ -512,32 +512,32 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
wxBoxSizer* sbSizerSearch;
|
||||
sbSizerSearch = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxArrayString m_categoriesChoices;
|
||||
m_categories = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,60 ), m_categoriesChoices, 0 );
|
||||
m_categories->SetToolTip( _("List of Unicode character categories to search in") );
|
||||
wxArrayString m_blocksChoices;
|
||||
m_blocks = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,60 ), m_blocksChoices, 0 );
|
||||
m_blocks->SetToolTip( _("List of Unicode character blocks to search in") );
|
||||
|
||||
sbSizerSearch->Add( m_categories, 0, wxALL|wxEXPAND, 5 );
|
||||
sbSizerSearch->Add( m_blocks, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizerCategoriesCtrl;
|
||||
bSizerCategoriesCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
wxBoxSizer* bSizerBlocksCtrl;
|
||||
bSizerBlocksCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_categoriesAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesAll->SetToolTip( _("Select all categories") );
|
||||
m_blocksAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksAll->SetToolTip( _("Select all categories") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesAll, 0, wxALL, 5 );
|
||||
bSizerBlocksCtrl->Add( m_blocksAll, 0, wxALL, 5 );
|
||||
|
||||
m_categoriesNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesNone->SetToolTip( _("Clear category selection") );
|
||||
m_blocksNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksNone->SetToolTip( _("Clear block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesNone, 0, wxALL, 5 );
|
||||
bSizerBlocksCtrl->Add( m_blocksNone, 0, wxALL, 5 );
|
||||
|
||||
m_categoriesInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesInvert->SetToolTip( _("Invert category selection") );
|
||||
m_blocksInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksInvert->SetToolTip( _("Invert block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesInvert, 0, wxALL, 5 );
|
||||
bSizerBlocksCtrl->Add( m_blocksInvert, 0, wxALL, 5 );
|
||||
|
||||
|
||||
sbSizerSearch->Add( bSizerCategoriesCtrl, 0, wxALIGN_RIGHT, 5 );
|
||||
sbSizerSearch->Add( bSizerBlocksCtrl, 0, wxALIGN_RIGHT, 5 );
|
||||
|
||||
|
||||
m_search_panel->SetSizer( sbSizerSearch );
|
||||
@@ -687,10 +687,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
|
||||
sbSizerPreview->Add( m_tags, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_category = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_category->SetToolTip( _("Unicode character category") );
|
||||
m_block = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_block->SetToolTip( _("Unicode character block") );
|
||||
|
||||
sbSizerPreview->Add( m_category, 0, wxALL|wxEXPAND, 5 );
|
||||
sbSizerPreview->Add( m_block, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizerNavigateButtons;
|
||||
bSizerNavigateButtons = new wxBoxSizer( wxHORIZONTAL );
|
||||
@@ -780,10 +780,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
this->Connect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
@@ -805,10 +805,10 @@ wxZRColaCharSelectBase::~wxZRColaCharSelectBase()
|
||||
this->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -61,7 +61,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_CHARACTER_SELECTOR = 6000,
|
||||
wxID_SEND_DESTINATION,
|
||||
wxID_COPY_DESTINATION_AND_RETURN,
|
||||
wxID_SEND_SOURCE,
|
||||
@@ -78,7 +78,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
wxID_HELP_UPDATE,
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
@@ -105,7 +105,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxZRColaCharacterCatalogPanel* m_panelChrCat;
|
||||
wxStatusBar* m_statusBar;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
|
||||
virtual void OnIconize( wxIconizeEvent& event ) { event.Skip(); }
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
@@ -116,7 +116,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
public:
|
||||
wxZRColaComposerPanel* m_panel;
|
||||
|
||||
wxZRColaFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 600,400 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("ZRCola") );
|
||||
wxZRColaFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 640,480 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("ZRCola") );
|
||||
wxAuiManager m_mgr;
|
||||
|
||||
~wxZRColaFrameBase();
|
||||
@@ -133,7 +133,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
wxID_TIMER_SAVE = 6000,
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterSource;
|
||||
@@ -146,7 +146,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destinationHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnSourcePaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
@@ -161,6 +161,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destination;
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaComposerPanel") );
|
||||
|
||||
~wxZRColaComposerPanelBase();
|
||||
|
||||
void m_splitterSourceOnIdle( wxIdleEvent& )
|
||||
@@ -189,7 +190,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
wxZRColaCharGrid* m_grid;
|
||||
wxCheckBox* m_show_all;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -199,6 +200,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
public:
|
||||
|
||||
wxZRColaCharacterCatalogPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaCharacterCatalog") );
|
||||
|
||||
~wxZRColaCharacterCatalogPanelBase();
|
||||
|
||||
};
|
||||
@@ -214,10 +216,10 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxSearchCtrl* m_search;
|
||||
wxHyperlinkCtrl* m_search_more;
|
||||
wxPanel* m_search_panel;
|
||||
wxCheckListBox* m_categories;
|
||||
wxHyperlinkCtrl* m_categoriesAll;
|
||||
wxHyperlinkCtrl* m_categoriesNone;
|
||||
wxHyperlinkCtrl* m_categoriesInvert;
|
||||
wxCheckListBox* m_blocks;
|
||||
wxHyperlinkCtrl* m_blocksAll;
|
||||
wxHyperlinkCtrl* m_blocksNone;
|
||||
wxHyperlinkCtrl* m_blocksInvert;
|
||||
wxZRColaCharGrid* m_gridResults;
|
||||
wxZRColaCharGrid* m_gridRecent;
|
||||
wxStaticText* m_labelUnicode;
|
||||
@@ -226,20 +228,20 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxGrid* m_gridPreview;
|
||||
wxTextCtrl* m_description;
|
||||
wxTextCtrl* m_tags;
|
||||
wxTextCtrl* m_category;
|
||||
wxTextCtrl* m_block;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxButton* m_buttonInsert;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchMore( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultCellDClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultsKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -258,6 +260,7 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Character Search"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharSelect") );
|
||||
|
||||
~wxZRColaCharSelectBase();
|
||||
|
||||
};
|
||||
@@ -284,7 +287,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsApply;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnLanguageUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnApplyButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -294,6 +297,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaSettingsBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaSettings") );
|
||||
|
||||
~wxZRColaSettingsBase();
|
||||
|
||||
};
|
||||
@@ -320,6 +324,7 @@ class wxZRColaAboutBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaAboutBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaAbout") );
|
||||
|
||||
~wxZRColaAboutBase();
|
||||
|
||||
};
|
||||
@@ -336,7 +341,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
wxButton* m_buttonUpdate;
|
||||
wxButton* m_buttonClose;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnClose( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -345,6 +350,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaUpdaterBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Product Update"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaUpdater") );
|
||||
|
||||
~wxZRColaUpdaterBase();
|
||||
|
||||
};
|
||||
@@ -367,13 +373,14 @@ class wxZRColaCharRequestBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaCharRequestBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Request a New Character"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharRequest") );
|
||||
|
||||
~wxZRColaCharRequestBase();
|
||||
|
||||
};
|
||||
@@ -399,7 +406,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -416,6 +423,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaTranslationSeqBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Custom Translation Sequence"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaTranslationSeq") );
|
||||
|
||||
~wxZRColaTranslationSeqBase();
|
||||
|
||||
};
|
||||
|
||||
@@ -82,7 +82,7 @@ bool ZRColaApp::OnInit()
|
||||
ZRCola::recordid_t id;
|
||||
if (!stdex::idrec::read_id(dat, id, size)) break;
|
||||
|
||||
if (id == ZRCola::translation_rec::id) {
|
||||
if (id == ZRCola::translation_rec::id()) {
|
||||
dat >> ZRCola::translation_rec(m_t_db);
|
||||
if (dat.good()) {
|
||||
has_translation_data = true;
|
||||
@@ -90,61 +90,61 @@ bool ZRColaApp::OnInit()
|
||||
wxFAIL_MSG(wxT("Error reading translation data from ZRCola.zrcdb."));
|
||||
m_t_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::transet_rec::id) {
|
||||
} else if (id == ZRCola::transet_rec::id()) {
|
||||
dat >> ZRCola::transet_rec(m_ts_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation set data from ZRCola.zrcdb."));
|
||||
m_ts_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::transeq_rec::id) {
|
||||
} else if (id == ZRCola::transeq_rec::id()) {
|
||||
dat >> ZRCola::transeq_rec(m_tsq_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading translation sequence data from ZRCola.zrcdb."));
|
||||
m_tsq_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::langchar_rec::id) {
|
||||
} else if (id == ZRCola::langchar_rec::id()) {
|
||||
dat >> ZRCola::langchar_rec(m_lc_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
|
||||
m_lc_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::language_rec::id) {
|
||||
} else if (id == ZRCola::language_rec::id()) {
|
||||
dat >> ZRCola::language_rec(m_lang_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
|
||||
m_lang_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::keyseq_rec::id) {
|
||||
} else if (id == ZRCola::keyseq_rec::id()) {
|
||||
dat >> ZRCola::keyseq_rec(m_ks_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading key sequences data from ZRCola.zrcdb."));
|
||||
m_ks_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::character_rec::id) {
|
||||
} else if (id == ZRCola::character_rec::id()) {
|
||||
dat >> ZRCola::character_rec(m_chr_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character data from ZRCola.zrcdb."));
|
||||
m_chr_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrcat_rec::id) {
|
||||
dat >> ZRCola::chrcat_rec(m_cc_db);
|
||||
} else if (id == ZRCola::chrblk_rec::id()) {
|
||||
dat >> ZRCola::chrblk_rec(m_cb_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character category data from ZRCola.zrcdb."));
|
||||
m_cc_db.clear();
|
||||
wxFAIL_MSG(wxT("Error reading character block data from ZRCola.zrcdb."));
|
||||
m_cb_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::chrtag_rec::id) {
|
||||
} else if (id == ZRCola::chrtag_rec::id()) {
|
||||
dat >> ZRCola::chrtag_rec(m_ct_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading character tag data from ZRCola.zrcdb."));
|
||||
m_ct_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::tagname_rec::id) {
|
||||
} else if (id == ZRCola::tagname_rec::id()) {
|
||||
dat >> ZRCola::tagname_rec(m_tn_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading tag name data from ZRCola.zrcdb."));
|
||||
m_tn_db.clear();
|
||||
}
|
||||
} else if (id == ZRCola::highlight_rec::id) {
|
||||
} else if (id == ZRCola::highlight_rec::id()) {
|
||||
dat >> ZRCola::highlight_rec(m_h_db);
|
||||
if (!dat.good()) {
|
||||
wxFAIL_MSG(wxT("Error reading highlight data from ZRCola.zrcdb."));
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
ZRCola::language_db m_lang_db; ///< Language database
|
||||
ZRCola::keyseq_db m_ks_db; ///< Key sequence database
|
||||
ZRCola::character_db m_chr_db; ///< Character database
|
||||
ZRCola::chrcat_db m_cc_db; ///< Characted category database
|
||||
ZRCola::chrblk_db m_cb_db; ///< Character block database
|
||||
ZRCola::chrtag_db m_ct_db; ///< Character tag database
|
||||
ZRCola::tagname_db m_tn_db; ///< Tag name database
|
||||
ZRCola::highlight_db m_h_db; ///< Highlight database
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
|
||||
protected:
|
||||
#ifdef __WXMSW__
|
||||
winstd::win_handle<NULL> m_running; ///< Global Win32 event to determine if another instance of ZRCola is already running
|
||||
winstd::event m_running; ///< Global Win32 event to determine if another instance of ZRCola is already running
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -148,11 +148,11 @@ void wxZRColaCharacterCatalogPanel::Update()
|
||||
wxArrayShort(reinterpret_cast<const short*>(cg.chrshow()), reinterpret_cast<const short*>(cg.chrshow_end())));
|
||||
} else {
|
||||
// Select frequently used characters only.
|
||||
const wchar_t *src = cg.chrlst();
|
||||
const unsigned __int16 *shown = cg.chrshow();
|
||||
const auto *src = cg.chrlst();
|
||||
const uint16_t *shown = cg.chrshow();
|
||||
wxArrayString chars;
|
||||
for (size_t i = 0, i_end = cg.chrlst_len(), j = 0; i < i_end; j++) {
|
||||
for (unsigned __int16 k = 0, mask = shown[j]; k < 16 && i < i_end; k++, mask >>= 1) {
|
||||
for (uint16_t k = 0, mask = shown[j]; k < 16 && i < i_end; k++, mask >>= 1) {
|
||||
size_t len = wcsnlen(src + i, i_end - i);
|
||||
if (mask & 1)
|
||||
chars.Add(wxString(src + i, len));
|
||||
|
||||
@@ -110,7 +110,7 @@ wxString wxZRColaCharGrid::GetToolTipText(int idx)
|
||||
const auto &chr = m_chars[idx];
|
||||
|
||||
// See if this character has a key sequence registered.
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(wchar_t)*chr.length()]);
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(ZRCola::char_t)*chr.length()]);
|
||||
ks->ZRCola::keyseq_db::keyseq::keyseq(NULL, 0, chr.data(), chr.length());
|
||||
ZRCola::keyseq_db::indexKey::size_type start;
|
||||
if (app->m_ks_db.idxChr.find(*ks, start)) {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
wxIMPLEMENT_DYNAMIC_CLASS(wxZRColaUTF16CharValidator, wxValidator);
|
||||
|
||||
|
||||
wxZRColaUTF16CharValidator::wxZRColaUTF16CharValidator(wchar_t *val) :
|
||||
wxZRColaUTF16CharValidator::wxZRColaUTF16CharValidator(ZRCola::char_t *val) :
|
||||
m_val(val),
|
||||
wxValidator()
|
||||
{
|
||||
@@ -58,11 +58,11 @@ bool wxZRColaUTF16CharValidator::TransferFromWindow()
|
||||
}
|
||||
|
||||
|
||||
bool wxZRColaUTF16CharValidator::Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, wchar_t *val_out)
|
||||
bool wxZRColaUTF16CharValidator::Parse(const wxString &val_in, size_t i_start, size_t i_end, wxTextCtrl *ctrl, wxWindow *parent, ZRCola::char_t *val_out)
|
||||
{
|
||||
const wxStringCharType *buf = val_in;
|
||||
|
||||
wchar_t chr = 0;
|
||||
ZRCola::char_t chr = 0;
|
||||
for (size_t i = i_start;;) {
|
||||
if (i >= i_end) {
|
||||
// End of Unicode found.
|
||||
@@ -156,7 +156,7 @@ bool wxZRColaUnicodeDumpValidator::Parse(const wxString &val_in, size_t i_start,
|
||||
wxString str;
|
||||
for (size_t i = i_start;;) {
|
||||
const wxStringCharType *buf_next;
|
||||
wchar_t chr;
|
||||
ZRCola::char_t chr;
|
||||
if ((buf_next = wmemchr(buf + i, L'+', i_end - i)) != NULL) {
|
||||
// Unicode dump separator found.
|
||||
if (!wxZRColaUTF16CharValidator::Parse(val_in, i, buf_next - buf, ctrl, parent, &chr))
|
||||
@@ -202,13 +202,13 @@ wxZRColaCharSelect::wxZRColaCharSelect(wxWindow* parent) :
|
||||
|
||||
m_unicode->SetValidator(wxZRColaUnicodeDumpValidator(&m_char));
|
||||
|
||||
// Fill categories.
|
||||
// Fill blocks.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
int idx = m_categories->Insert(wxGetTranslation(wxString(cc.name(), cc.name_len()), wxT("ZRCola-zrcdb")), (unsigned int)i);
|
||||
m_categories->Check(idx);
|
||||
m_ccOrder.insert(std::make_pair(cc.cat, idx));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
int idx = m_blocks->Insert(wxGetTranslation(wxString(cb.name(), cb.name_len()), wxT("ZRCola-zrcdb")), (unsigned int)i);
|
||||
m_blocks->Check(idx);
|
||||
m_cbOrder.insert(std::make_pair(cb.id, idx));
|
||||
}
|
||||
|
||||
ResetResults();
|
||||
@@ -242,7 +242,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
|
||||
m_gridPreview->SetCellValue(0, 0, m_char);
|
||||
|
||||
std::unique_ptr<ZRCola::character_db::character> ch((ZRCola::character_db::character*)new char[sizeof(ZRCola::character_db::character) + sizeof(wchar_t)*m_char.length()]);
|
||||
std::unique_ptr<ZRCola::character_db::character> ch((ZRCola::character_db::character*)new char[sizeof(ZRCola::character_db::character) + sizeof(ZRCola::char_t)*m_char.length()]);
|
||||
ch->ZRCola::character_db::character::character(m_char.data(), m_char.length());
|
||||
ZRCola::character_db::indexChr::size_type ch_start;
|
||||
if (app->m_chr_db.idxChr.find(*ch, ch_start)) {
|
||||
@@ -251,7 +251,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
m_description->SetValue(wxString(chr.desc(), chr.desc_len()));
|
||||
{
|
||||
// See if this character has a key sequence registered.
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(wchar_t)*m_char.length()]);
|
||||
std::unique_ptr<ZRCola::keyseq_db::keyseq> ks((ZRCola::keyseq_db::keyseq*)new char[sizeof(ZRCola::keyseq_db::keyseq) + sizeof(ZRCola::char_t)*m_char.length()]);
|
||||
ks->ZRCola::keyseq_db::keyseq::keyseq(NULL, 0, m_char.data(), m_char.length());
|
||||
ZRCola::keyseq_db::indexKey::size_type ks_start;
|
||||
if (app->m_ks_db.idxChr.find(*ks, ks_start)) {
|
||||
@@ -265,26 +265,26 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
}
|
||||
{
|
||||
// Update character category.
|
||||
ZRCola::chrcat_db::indexChrCat::size_type cc_start;
|
||||
if (app->m_cc_db.idxChrCat.find(ZRCola::chrcat_db::chrcat(chr.cat), cc_start)) {
|
||||
const auto &cat = app->m_cc_db.idxChrCat[cc_start];
|
||||
m_category->SetValue(wxGetTranslation(wxString(cat.name(), cat.name_len()), wxT("ZRCola-zrcdb")));
|
||||
// Update character block.
|
||||
ZRCola::chrblk_db::indexChrId::size_type cb_start;
|
||||
if (app->m_cb_db.idxChrId.find(ZRCola::chrblk_db::chrcls(chr.blk), cb_start)) {
|
||||
const auto &blk = app->m_cb_db.idxChrId[cb_start];
|
||||
m_block->SetValue(wxGetTranslation(wxString(blk.name(), blk.name_len()), wxT("ZRCola-zrcdb")));
|
||||
} else
|
||||
m_category->SetValue(wxEmptyString);
|
||||
m_block->SetValue(wxEmptyString);
|
||||
}
|
||||
// Update related characters.
|
||||
m_gridRelated->SetCharacters(wxString(chr.rel(), chr.rel_end()));
|
||||
} else {
|
||||
m_description->SetValue(wxEmptyString);
|
||||
m_shortcut->SetValue(wxEmptyString);
|
||||
m_category->SetValue(wxEmptyString);
|
||||
m_block->SetValue(wxEmptyString);
|
||||
m_gridRelated->ClearGrid();
|
||||
}
|
||||
|
||||
// Find character tags.
|
||||
std::list<std::wstring> tag_names;
|
||||
std::unique_ptr<ZRCola::chrtag_db::chrtag> ct((ZRCola::chrtag_db::chrtag*)new char[sizeof(ZRCola::chrtag_db::chrtag) + sizeof(wchar_t)*m_char.length()]);
|
||||
std::unique_ptr<ZRCola::chrtag_db::chrtag> ct((ZRCola::chrtag_db::chrtag*)new char[sizeof(ZRCola::chrtag_db::chrtag) + sizeof(ZRCola::char_t)*m_char.length()]);
|
||||
ct->ZRCola::chrtag_db::chrtag::chrtag(m_char.data(), m_char.length());
|
||||
ZRCola::chrtag_db::indexChr::size_type ct_start, ct_end;
|
||||
if (app->m_ct_db.idxChr.find(*ct, ct_start, ct_end)) {
|
||||
@@ -301,7 +301,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
// Add name to the list.
|
||||
tag_names.push_back(std::wstring(tn.name(), tn.name_end()));
|
||||
break;
|
||||
} else if (ZRCola::tagname_db::tagname::CompareName(m_locale, name->data(), (unsigned __int16)name->length(), tn.name(), tn.name_len()) == 0)
|
||||
} else if (ZRCola::tagname_db::tagname::CompareName(m_locale, name->data(), (uint16_t)name->length(), tn.name(), tn.name_len()) == 0)
|
||||
// Name is already on the list.
|
||||
break;
|
||||
}
|
||||
@@ -340,11 +340,11 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
|
||||
|
||||
m_searchThread->m_search.assign(val.c_str(), val.Length());
|
||||
|
||||
// Select categories.
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
if (m_categories->IsChecked((unsigned int)i))
|
||||
m_searchThread->m_cats.insert(cc.cat);
|
||||
// Select blocks.
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
if (m_blocks->IsChecked((unsigned int)i))
|
||||
m_searchThread->m_blks.insert(cb.id);
|
||||
}
|
||||
|
||||
if (m_searchThread->Run() != wxTHREAD_NO_ERROR) {
|
||||
@@ -384,43 +384,43 @@ void wxZRColaCharSelect::OnSearchMore(wxHyperlinkEvent& event)
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesAll(wxHyperlinkEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksAll(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, true);
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
|
||||
m_blocks->Check((unsigned int)i, true);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesNone(wxHyperlinkEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksNone(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, false);
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
|
||||
m_blocks->Check((unsigned int)i, false);
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesInvert(wxHyperlinkEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksInvert(wxHyperlinkEvent& event)
|
||||
{
|
||||
event.StopPropagation();
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++)
|
||||
m_categories->Check((unsigned int)i, !m_categories->IsChecked((unsigned int)i));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
|
||||
m_blocks->Check((unsigned int)i, !m_blocks->IsChecked((unsigned int)i));
|
||||
|
||||
m_searchChanged = true;
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaCharSelect::OnCategoriesToggle(wxCommandEvent& event)
|
||||
void wxZRColaCharSelect::OnBlocksToggle(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
@@ -625,8 +625,8 @@ void wxZRColaCharSelect::ResetResults()
|
||||
val.reserve(n);
|
||||
for (i = 0; i < n; i++) {
|
||||
const auto &chr = app->m_chr_db.idxChr[i];
|
||||
auto idx = m_ccOrder.find(chr.cat);
|
||||
if (idx == m_ccOrder.end() || m_categories->IsChecked(idx->second))
|
||||
auto idx = m_cbOrder.find(chr.blk);
|
||||
if (idx == m_cbOrder.end() || m_blocks->IsChecked(idx->second))
|
||||
val.Add(wxString(chr.chr(), chr.chr_len()));
|
||||
}
|
||||
m_gridResults->SetCharacters(val);
|
||||
@@ -718,15 +718,15 @@ wxThread::ExitCode wxZRColaCharSelect::SearchThread::Entry()
|
||||
|
||||
{
|
||||
// Search by tags: Get tags with given names. Then, get characters of found tags.
|
||||
std::map<ZRCola::tagid_t, unsigned __int16> hits_tag;
|
||||
std::map<ZRCola::tagid_t, uint16_t> hits_tag;
|
||||
if (!app->m_tn_db.Search(m_search.c_str(), m_parent->m_locale, hits_tag, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_ct_db.Search(hits_tag, app->m_chr_db, m_cats, hits, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_ct_db.Search(hits_tag, app->m_chr_db, m_blks, hits, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
}
|
||||
|
||||
{
|
||||
// Search by description and merge results.
|
||||
std::map<std::wstring, ZRCola::charrank_t> hits_sub;
|
||||
if (!app->m_chr_db.Search(m_search.c_str(), m_cats, hits, hits_sub, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
if (!app->m_chr_db.Search(m_search.c_str(), m_blks, hits, hits_sub, TestDestroyS, this)) return (wxThread::ExitCode)1;
|
||||
for (auto i = hits_sub.cbegin(), i_end = hits_sub.cend(); i != i_end; ++i) {
|
||||
if (TestDestroy()) return (wxThread::ExitCode)1;
|
||||
auto idx = hits.find(i->first);
|
||||
@@ -766,14 +766,14 @@ wxThread::ExitCode wxZRColaCharSelect::SearchThread::Entry()
|
||||
|
||||
int __cdecl wxZRColaCharSelect::SearchThread::CompareHits(const void *a, const void *b)
|
||||
{
|
||||
const std::pair<ZRCola::charrank_t, wchar_t> *_a = (const std::pair<ZRCola::charrank_t, wchar_t>*)a;
|
||||
const std::pair<ZRCola::charrank_t, wchar_t> *_b = (const std::pair<ZRCola::charrank_t, wchar_t>*)b;
|
||||
const std::pair<ZRCola::charrank_t, ZRCola::char_t> *_a = (const std::pair<ZRCola::charrank_t, ZRCola::char_t>*)a;
|
||||
const std::pair<ZRCola::charrank_t, ZRCola::char_t> *_b = (const std::pair<ZRCola::charrank_t, ZRCola::char_t>*)b;
|
||||
|
||||
if (_a->first > _b->first) return -1;
|
||||
else if (_a->first < _b->first) return 1;
|
||||
if (_a->first > _b->first) return -1;
|
||||
if (_a->first < _b->first) return 1;
|
||||
|
||||
if (_a->second < _b->second) return -1;
|
||||
else if (_a->second > _b->second) return 1;
|
||||
if (_a->second < _b->second) return -1;
|
||||
if (_a->second > _b->second) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -820,11 +820,9 @@ void wxPersistentZRColaCharSelect::Save() const
|
||||
SaveValue(wxT("recentChars" ), str ); // Save in legacy format for backward compatibility.
|
||||
SaveValue(wxT("recentChars2"), str2); // Save in native format
|
||||
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.cat.data, _countof(cc.cat.data));
|
||||
SaveValue(name, wnd->m_categories->IsChecked((unsigned int)i));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
SaveValue(wxString::Format(wxT("block%u"), cb.id), wnd->m_blocks->IsChecked((unsigned int)i));
|
||||
}
|
||||
|
||||
SaveValue(wxT("searchPanel"), wnd->m_search_panel->IsShown());
|
||||
@@ -843,7 +841,7 @@ bool wxPersistentZRColaCharSelect::Restore()
|
||||
for (wxStringTokenizer tok(str, wxT("|")); tok.HasMoreTokens(); ) {
|
||||
wxString chr;
|
||||
for (wxStringTokenizer tok_chr(tok.GetNextToken(), wxT("+")); tok_chr.HasMoreTokens(); )
|
||||
chr += (wchar_t)_tcstoul(tok_chr.GetNextToken().c_str(), NULL, 16);
|
||||
chr += (ZRCola::char_t)_tcstoul(tok_chr.GetNextToken().c_str(), NULL, 16);
|
||||
val.Add(chr);
|
||||
}
|
||||
wnd->m_gridRecent->SetCharacters(val);
|
||||
@@ -855,13 +853,11 @@ bool wxPersistentZRColaCharSelect::Restore()
|
||||
wnd->m_gridRecent->SetCharacters(val);
|
||||
}
|
||||
|
||||
for (size_t i = 0, n = app->m_cc_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cc = app->m_cc_db.idxRank[i];
|
||||
wxString name(wxT("category"));
|
||||
name.Append(cc.cat.data, _countof(cc.cat.data));
|
||||
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
|
||||
const auto &cb = app->m_cb_db.idxRank[i];
|
||||
bool val;
|
||||
if (RestoreValue(name, &val))
|
||||
wnd->m_categories->Check((unsigned int)i, val);
|
||||
if (RestoreValue(wxString::Format(wxT("block%u"), cb.id), &val))
|
||||
wnd->m_blocks->Check((unsigned int)i, val);
|
||||
}
|
||||
|
||||
bool search_panel;
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
///
|
||||
/// Construct the validator with a value to store data
|
||||
///
|
||||
wxZRColaUTF16CharValidator(wchar_t *val = NULL);
|
||||
wxZRColaUTF16CharValidator(ZRCola::char_t *val = NULL);
|
||||
|
||||
///
|
||||
/// Copies this validator
|
||||
@@ -140,10 +140,10 @@ protected:
|
||||
virtual void OnIdle(wxIdleEvent& event);
|
||||
virtual void OnSearchText(wxCommandEvent& event);
|
||||
virtual void OnSearchMore(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesAll(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesNone(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesInvert(wxHyperlinkEvent& event);
|
||||
virtual void OnCategoriesToggle(wxCommandEvent& event);
|
||||
virtual void OnBlocksAll(wxHyperlinkEvent& event);
|
||||
virtual void OnBlocksNone(wxHyperlinkEvent& event);
|
||||
virtual void OnBlocksInvert(wxHyperlinkEvent& event);
|
||||
virtual void OnBlocksToggle(wxCommandEvent& event);
|
||||
void OnSearchComplete(wxThreadEvent& event);
|
||||
virtual void OnResultSelectCell(wxGridEvent& event);
|
||||
virtual void OnResultCellDClick(wxGridEvent& event);
|
||||
@@ -168,8 +168,8 @@ public:
|
||||
|
||||
protected:
|
||||
LCID m_locale; ///< Locale for tag lookup
|
||||
bool m_searchChanged; ///< Did Search field or category selection change?
|
||||
std::map<ZRCola::chrcatid_t, int> m_ccOrder; ///< Character category order
|
||||
bool m_searchChanged; ///< Did Search field or block selection change?
|
||||
std::map<ZRCola::chrblkid_t, int> m_cbOrder; ///< Character block order
|
||||
bool m_unicodeChanged; ///< Did Unicode field change?
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ protected:
|
||||
|
||||
public:
|
||||
std::wstring m_search; ///< Search phrase
|
||||
std::set<ZRCola::chrcatid_t> m_cats; ///< Search categories
|
||||
std::set<ZRCola::chrblkid_t> m_blks; ///< Search blocks
|
||||
std::vector<std::pair<ZRCola::charrank_t, std::wstring> > m_hits; ///< Search results
|
||||
|
||||
protected:
|
||||
|
||||
@@ -49,7 +49,7 @@ void wxZRColaComposerPanel::RestoreFromStateFile()
|
||||
wxFFile file(fileName, wxT("rb"));
|
||||
if (file.IsOpened()) {
|
||||
// Load source text.
|
||||
unsigned __int64 n;
|
||||
uint64_t n;
|
||||
file.Read(&n, sizeof(n));
|
||||
if (!file.Error()) {
|
||||
wxString source;
|
||||
@@ -98,9 +98,11 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
||||
// ZRCola decompose first, then re-compose.
|
||||
app->m_t_db.TranslateInv(app->m_mainWnd->m_composition_id, dst.data(), dst.size(), dst2, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
|
||||
app->m_t_db.Translate(app->m_mainWnd->m_composition_id, dst2.data(), dst2.size(), dst, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
|
||||
// Other translations
|
||||
@@ -109,7 +111,9 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
||||
for (auto s = sets_begin; s != sets_end; ++s) {
|
||||
app->m_t_db.Translate(*s, dst.data(), dst.size(), dst2, &map);
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
}
|
||||
|
||||
m_source->GetSelection(&m_selSource.first, &m_selSource.second);
|
||||
@@ -144,18 +148,24 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
||||
for (auto s = sets_end; (s--) != sets_begin;) {
|
||||
app->m_t_db.TranslateInv(*s, dst.data(), dst.size(), dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
|
||||
map.invert();
|
||||
for (auto& m : map)
|
||||
m.invert();
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
|
||||
if (app->m_mainWnd->m_composition) {
|
||||
// ZRCola decompose.
|
||||
app->m_t_db.TranslateInv(app->m_mainWnd->m_composition_id, dst.data(), dst.size(), &app->m_lc_db, app->m_mainWnd->m_settings->m_lang, dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
|
||||
map.invert();
|
||||
for (auto& m : map)
|
||||
m.invert();
|
||||
m_mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
|
||||
m_destination->GetSelection(&m_selDestination.first, &m_selDestination.second);
|
||||
@@ -195,16 +205,16 @@ void wxZRColaComposerPanel::OnSourcePaint(wxPaintEvent& event)
|
||||
m_selSource.second = to;
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(from),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(to ));
|
||||
m_selSourceHex.first = (long)stdex::src2dst<size_t>(m_mappingSourceHex, from),
|
||||
m_selSourceHex.second = (long)stdex::src2dst<size_t>(m_mappingSourceHex, to ));
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(from),
|
||||
m_selDestination.second = (long)MapToDestination(to ));
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(m_selDestination.second));
|
||||
m_selDestinationHex.first = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,16 +232,16 @@ void wxZRColaComposerPanel::OnSourceHexPaint(wxPaintEvent& event)
|
||||
m_selSourceHex.second = to;
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)m_mappingSourceHex.to_src(from),
|
||||
m_selSource.second = (long)m_mappingSourceHex.to_src(to ));
|
||||
m_selSource.first = (long)stdex::dst2src<size_t>(m_mappingSourceHex, from),
|
||||
m_selSource.second = (long)stdex::dst2src<size_t>(m_mappingSourceHex, to ));
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)MapToDestination(m_selSource.first ),
|
||||
m_selDestination.second = (long)MapToDestination(m_selSource.second));
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(m_selDestination.second));
|
||||
m_selDestinationHex.first = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.first ),
|
||||
m_selDestinationHex.second = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, m_selDestination.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,16 +278,16 @@ void wxZRColaComposerPanel::OnDestinationPaint(wxPaintEvent& event)
|
||||
m_selDestination.second = to;
|
||||
|
||||
m_destinationHex->SetSelection(
|
||||
m_selDestinationHex.first = (long)m_mappingDestinationHex.to_dst(from),
|
||||
m_selDestinationHex.second = (long)m_mappingDestinationHex.to_dst(to ));
|
||||
m_selDestinationHex.first = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, from),
|
||||
m_selDestinationHex.second = (long)stdex::src2dst<size_t>(m_mappingDestinationHex, to ));
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(from),
|
||||
m_selSource.second = (long)MapToSource(to ));
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(m_selSource.first ),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(m_selSource.second));
|
||||
m_selSourceHex.first = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.first ),
|
||||
m_selSourceHex.second = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,16 +305,16 @@ void wxZRColaComposerPanel::OnDestinationHexPaint(wxPaintEvent& event)
|
||||
m_selDestinationHex.second = to;
|
||||
|
||||
m_destination->SetSelection(
|
||||
m_selDestination.first = (long)m_mappingDestinationHex.to_src(from),
|
||||
m_selDestination.second = (long)m_mappingDestinationHex.to_src(to ));
|
||||
m_selDestination.first = (long)stdex::dst2src<size_t>(m_mappingDestinationHex, from),
|
||||
m_selDestination.second = (long)stdex::dst2src<size_t>(m_mappingDestinationHex, to ));
|
||||
|
||||
m_source->SetSelection(
|
||||
m_selSource.first = (long)MapToSource(m_selDestination.first ),
|
||||
m_selSource.second = (long)MapToSource(m_selDestination.second));
|
||||
|
||||
m_sourceHex->SetSelection(
|
||||
m_selSourceHex.first = (long)m_mappingSourceHex.to_dst(m_selSource.first ),
|
||||
m_selSourceHex.second = (long)m_mappingSourceHex.to_dst(m_selSource.second));
|
||||
m_selSourceHex.first = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.first ),
|
||||
m_selSourceHex.second = (long)stdex::src2dst<size_t>(m_mappingSourceHex, m_selSource.second));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,8 +418,8 @@ void wxZRColaComposerPanel::SetHexValue(wxTextCtrl *wnd, std::pair<long, long> &
|
||||
|
||||
wnd->SetValue(hex);
|
||||
wnd->SetSelection(
|
||||
range.first = (long)mapping.to_dst(from),
|
||||
range.second = (long)mapping.to_dst(to ));
|
||||
range.first = (long)stdex::src2dst<size_t>(mapping, from),
|
||||
range.second = (long)stdex::src2dst<size_t>(mapping, to ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ protected:
|
||||
inline size_t wxZRColaComposerPanel::MapToDestination(_In_ size_t src) const
|
||||
{
|
||||
for (auto m = m_mapping.cbegin(), m_end = m_mapping.cend(); m != m_end; ++m)
|
||||
src = m->to_dst(src);
|
||||
src = stdex::src2dst(*m, src);
|
||||
|
||||
return src;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ inline size_t wxZRColaComposerPanel::MapToDestination(_In_ size_t src) const
|
||||
inline size_t wxZRColaComposerPanel::MapToSource(_In_ size_t dst) const
|
||||
{
|
||||
for (auto m = m_mapping.crbegin(), m_end = m_mapping.crend(); m != m_end; ++m)
|
||||
dst = m->to_src(dst);
|
||||
dst = stdex::dst2src(*m, dst);
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
@@ -69,14 +69,6 @@ wxZRColaFrame::wxZRColaFrame() :
|
||||
m_transeq(NULL),
|
||||
wxZRColaFrameBase(NULL)
|
||||
{
|
||||
{
|
||||
// wxFrameBuilder 3.5 does not support wxAUI_TB_HORIZONTAL flag. Add it manually.
|
||||
wxAuiPaneInfo &paneInfo = m_mgr.GetPane(m_toolbarTranslate);
|
||||
paneInfo.LeftDockable(false);
|
||||
paneInfo.RightDockable(false);
|
||||
m_toolbarTranslate->SetWindowStyleFlag(m_toolbarTranslate->GetWindowStyleFlag() | wxAUI_TB_HORIZONTAL);
|
||||
}
|
||||
|
||||
// Populate list of translation sequences.
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_toolTranslationSeq->Clear();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -30,7 +30,7 @@ delete old;
|
||||
static wxFBContextSensitiveHelpSetter s_wxFBSetTheHelpProvider;
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, long style, const wxString& name ) : wxFrame( parent, id, title, pos, parent->FromDIP(wxSize(600, 400)), style, name )
|
||||
wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, long style, const wxString& name ) : wxFrame( parent, id, title, pos, parent->FromDIP(wxSize(640, 480)), style, name )
|
||||
{
|
||||
this->SetSizeHints( FromDIP(wxSize( 150,150 )), wxDefaultSize );
|
||||
m_mgr.SetManagedWindow(this);
|
||||
@@ -48,27 +48,27 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxMenuItem* m_menuItemEditCut;
|
||||
m_menuItemEditCut = new wxMenuItem( m_menuEdit, wxID_CUT, wxString( wxEmptyString ) , wxEmptyString, wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemEditCut->SetBitmaps( wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCut->SetBitmaps( wxIconEx( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemEditCut->SetBitmap( wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCut->SetBitmap( wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemEditCut );
|
||||
|
||||
wxMenuItem* m_menuItemEditCopy;
|
||||
m_menuItemEditCopy = new wxMenuItem( m_menuEdit, wxID_COPY, wxString( wxEmptyString ) , wxEmptyString, wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemEditCopy->SetBitmaps( wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCopy->SetBitmaps( wxIconEx( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemEditCopy->SetBitmap( wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditCopy->SetBitmap( wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemEditCopy );
|
||||
|
||||
wxMenuItem* m_menuItemEditPaste;
|
||||
m_menuItemEditPaste = new wxMenuItem( m_menuEdit, wxID_PASTE, wxString( wxEmptyString ) , wxEmptyString, wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemEditPaste->SetBitmaps( wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditPaste->SetBitmaps( wxIconEx( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemEditPaste->SetBitmap( wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemEditPaste->SetBitmap( wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemEditPaste );
|
||||
|
||||
@@ -89,45 +89,45 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxMenuItem* m_menuItemSendDestination;
|
||||
m_menuItemSendDestination = new wxMenuItem( m_menuEdit, wxID_SEND_DESTINATION, wxString( _("&Send Composed") ) + wxT('\t') + wxT("F5"), _("Send composed text to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemSendDestination->SetBitmaps( wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendDestination->SetBitmaps( wxIconEx( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemSendDestination->SetBitmap( wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendDestination->SetBitmap( wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemSendDestination );
|
||||
|
||||
wxMenuItem* m_menuItemCopyDestinationAndReturn;
|
||||
m_menuItemCopyDestinationAndReturn = new wxMenuItem( m_menuEdit, wxID_COPY_DESTINATION_AND_RETURN, wxString( _("Copy Composed and &Return") ) + wxT('\t') + wxT("Ctrl+F5"), _("Copy composed text to clipboard and return focus to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmaps( wxIcon( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmaps( wxIconEx( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmap( wxIcon( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopyDestinationAndReturn->SetBitmap( wxIcon( wxT("copy_destination_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemCopyDestinationAndReturn );
|
||||
|
||||
wxMenuItem* m_menuItemSendSource;
|
||||
m_menuItemSendSource = new wxMenuItem( m_menuEdit, wxID_SEND_SOURCE, wxString( _("Send &Decomposed") ) + wxT('\t') + wxT("F6"), _("Send decomposed text to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemSendSource->SetBitmaps( wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendSource->SetBitmaps( wxIconEx( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemSendSource->SetBitmap( wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendSource->SetBitmap( wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemSendSource );
|
||||
|
||||
wxMenuItem* m_menuItemCopySourceAndReturn;
|
||||
m_menuItemCopySourceAndReturn = new wxMenuItem( m_menuEdit, wxID_COPY_SOURCE_AND_RETURN, wxString( _("Copy Decomposed and Re&turn") ) + wxT('\t') + wxT("Ctrl+F6"), _("Copy decomposed text to clipboard and return focus to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemCopySourceAndReturn->SetBitmaps( wxIcon( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopySourceAndReturn->SetBitmaps( wxIconEx( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemCopySourceAndReturn->SetBitmap( wxIcon( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemCopySourceAndReturn->SetBitmap( wxIcon( wxT("copy_source_and_return.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16 ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemCopySourceAndReturn );
|
||||
|
||||
wxMenuItem* m_menuItemSendAbort;
|
||||
m_menuItemSendAbort = new wxMenuItem( m_menuEdit, wxID_SEND_ABORT, wxString( _("Abort (De)composition") ) + wxT('\t') + wxT("Esc"), _("Abort composition and return focus to source window"), wxITEM_NORMAL );
|
||||
#ifdef __WXMSW__
|
||||
m_menuItemSendAbort->SetBitmaps( wxIcon( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendAbort->SetBitmaps( wxIconEx( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#elif (defined( __WXGTK__ ) || defined( __WXOSX__ ))
|
||||
m_menuItemSendAbort->SetBitmap( wxIcon( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(16), FromDIP(16) ) );
|
||||
m_menuItemSendAbort->SetBitmap( wxIconEx( wxT("send_abort.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 16, 16, this ) );
|
||||
#endif
|
||||
m_menuEdit->Append( m_menuItemSendAbort );
|
||||
|
||||
@@ -211,21 +211,21 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
this->SetMenuBar( m_menubar );
|
||||
|
||||
m_toolbarEdit = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolEditCut = m_toolbarEdit->AddTool( wxID_CUT, _("Cut"), wxIcon( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Cut"), _("Cut selection"), NULL );
|
||||
m_toolEditCut = m_toolbarEdit->AddTool( wxID_CUT, _("Cut"), wxIconEx( wxT("edit_cut.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Cut"), _("Cut selection"), NULL );
|
||||
|
||||
m_toolEditCopy = m_toolbarEdit->AddTool( wxID_COPY, _("Copy"), wxIcon( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Copy"), _("Copy selection"), NULL );
|
||||
m_toolEditCopy = m_toolbarEdit->AddTool( wxID_COPY, _("Copy"), wxIconEx( wxT("edit_copy.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Copy"), _("Copy selection"), NULL );
|
||||
|
||||
m_toolEditPaste = m_toolbarEdit->AddTool( wxID_PASTE, _("Paste"), wxIcon( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Paste"), _("Paste selection"), NULL );
|
||||
m_toolEditPaste = m_toolbarEdit->AddTool( wxID_PASTE, _("Paste"), wxIconEx( wxT("edit_paste.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Paste"), _("Paste selection"), NULL );
|
||||
|
||||
m_toolbarEdit->Realize();
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo().Name( wxT("toolbarEdit") ).Top().Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarEdit, wxAuiPaneInfo() .Name( wxT("toolbarEdit") ).Top() .Caption( _("Edit") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolCharSelect = m_toolbarTranslate->AddTool( wxID_CHARACTER_SELECTOR, _("Find Character"), wxIcon( wxT("char_select.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_CHECK, _("Find Character"), _("Toggle character search to select character to insert into text"), NULL );
|
||||
m_toolbarTranslate = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORIZONTAL|wxAUI_TB_HORZ_LAYOUT );
|
||||
m_toolCharSelect = m_toolbarTranslate->AddTool( wxID_CHARACTER_SELECTOR, _("Find Character"), wxIconEx( wxT("char_select.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_CHECK, _("Find Character"), _("Toggle character search to select character to insert into text"), NULL );
|
||||
|
||||
m_toolSendDestination = m_toolbarTranslate->AddTool( wxID_SEND_DESTINATION, _("Send Composed"), wxIcon( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Send Composed"), _("Send composed text to source window"), NULL );
|
||||
m_toolSendDestination = m_toolbarTranslate->AddTool( wxID_SEND_DESTINATION, _("Send Composed"), wxIconEx( wxT("send_destination.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Send Composed"), _("Send composed text to source window"), NULL );
|
||||
|
||||
m_toolSendSource = m_toolbarTranslate->AddTool( wxID_SEND_SOURCE, _("Send Decomposed"), wxIcon( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_NORMAL, _("Send Decomposed"), _("Send decomposed text to source window"), NULL );
|
||||
m_toolSendSource = m_toolbarTranslate->AddTool( wxID_SEND_SOURCE, _("Send Decomposed"), wxIconEx( wxT("send_source.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_NORMAL, _("Send Decomposed"), _("Send decomposed text to source window"), NULL );
|
||||
|
||||
m_toolbarTranslate->AddSeparator();
|
||||
|
||||
@@ -235,15 +235,15 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
m_toolComposition->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolComposition );
|
||||
wxArrayString m_toolTranslationSeqChoices;
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( 180,-1 )), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq = new wxChoice( m_toolbarTranslate, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( 200,-1 )), m_toolTranslationSeqChoices, 0 );
|
||||
m_toolTranslationSeq->SetSelection( 0 );
|
||||
m_toolbarTranslate->AddControl( m_toolTranslationSeq );
|
||||
m_toolbarTranslate->AddSeparator();
|
||||
|
||||
m_toolWarnPUA = m_toolbarTranslate->AddTool( wxID_WARN_PUA, _("PUA Warning"), wxIcon( wxT("warn_pua.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(24), FromDIP(24) ), wxNullBitmap, wxITEM_CHECK, _("Highlight Private Use Area Characters"), _("Highlight Private Use Area Characters"), NULL );
|
||||
m_toolWarnPUA = m_toolbarTranslate->AddTool( wxID_WARN_PUA, _("PUA Warning"), wxIconEx( wxT("warn_pua.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24, this ), wxNullBitmap, wxITEM_CHECK, _("Highlight Private Use Area Characters"), _("Highlight Private Use Area Characters"), NULL );
|
||||
|
||||
m_toolbarTranslate->Realize();
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo().Name( wxT("toolbarCompose") ).Top().Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Row( 0 ).Layer( 1 ).ToolbarPane() );
|
||||
m_mgr.AddPane( m_toolbarTranslate, wxAuiPaneInfo() .Name( wxT("toolbarCompose") ).Top() .Caption( _("Compose") ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).LeftDockable( false ).RightDockable( false ).Layer( 1 ).ToolbarPane() );
|
||||
|
||||
m_panelChrCat = new wxZRColaCharacterCatalogPanel( this );
|
||||
|
||||
@@ -382,7 +382,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
this->SetSizer( bSizerMain );
|
||||
this->Layout();
|
||||
bSizerMain->Fit( this );
|
||||
m_timerSave.SetOwner( this, wxID_TIMER_SAVE );
|
||||
m_timerSave.SetOwner( this, m_timerSave.GetId() );
|
||||
|
||||
// Connect Events
|
||||
m_source->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnSourcePaint ), NULL, this );
|
||||
@@ -391,7 +391,7 @@ wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindow
|
||||
m_destination->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Connect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Connect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Connect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
}
|
||||
|
||||
wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
@@ -403,7 +403,7 @@ wxZRColaComposerPanelBase::~wxZRColaComposerPanelBase()
|
||||
m_destination->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationPaint ), NULL, this );
|
||||
m_destination->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaComposerPanelBase::OnDestinationText ), NULL, this );
|
||||
m_destinationHex->Disconnect( wxEVT_PAINT, wxPaintEventHandler( wxZRColaComposerPanelBase::OnDestinationHexPaint ), NULL, this );
|
||||
this->Disconnect( wxID_TIMER_SAVE, wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
this->Disconnect( m_timerSave.GetId(), wxEVT_TIMER, wxTimerEventHandler( wxZRColaComposerPanelBase::OnSaveTimer ) );
|
||||
|
||||
}
|
||||
|
||||
@@ -512,32 +512,32 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
wxBoxSizer* sbSizerSearch;
|
||||
sbSizerSearch = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxArrayString m_categoriesChoices;
|
||||
m_categories = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( -1,60 )), m_categoriesChoices, 0 );
|
||||
m_categories->SetToolTip( _("List of Unicode character categories to search in") );
|
||||
wxArrayString m_blocksChoices;
|
||||
m_blocks = new wxCheckListBox( m_search_panel, wxID_ANY, wxDefaultPosition, FromDIP(wxSize( -1,60 )), m_blocksChoices, 0 );
|
||||
m_blocks->SetToolTip( _("List of Unicode character blocks to search in") );
|
||||
|
||||
sbSizerSearch->Add( m_categories, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
sbSizerSearch->Add( m_blocks, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
wxBoxSizer* bSizerCategoriesCtrl;
|
||||
bSizerCategoriesCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
wxBoxSizer* bSizerBlocksCtrl;
|
||||
bSizerBlocksCtrl = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_categoriesAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesAll->SetToolTip( _("Select all categories") );
|
||||
m_blocksAll = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("All"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksAll->SetToolTip( _("Select all categories") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesAll, 0, wxALL, FromDIP(5) );
|
||||
bSizerBlocksCtrl->Add( m_blocksAll, 0, wxALL, FromDIP(5) );
|
||||
|
||||
m_categoriesNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesNone->SetToolTip( _("Clear category selection") );
|
||||
m_blocksNone = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("None"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksNone->SetToolTip( _("Clear block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesNone, 0, wxALL, FromDIP(5) );
|
||||
bSizerBlocksCtrl->Add( m_blocksNone, 0, wxALL, FromDIP(5) );
|
||||
|
||||
m_categoriesInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_categoriesInvert->SetToolTip( _("Invert category selection") );
|
||||
m_blocksInvert = new wxHyperlinkCtrl( m_search_panel, wxID_ANY, _("Invert"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
|
||||
m_blocksInvert->SetToolTip( _("Invert block selection") );
|
||||
|
||||
bSizerCategoriesCtrl->Add( m_categoriesInvert, 0, wxALL, FromDIP(5) );
|
||||
bSizerBlocksCtrl->Add( m_blocksInvert, 0, wxALL, FromDIP(5) );
|
||||
|
||||
|
||||
sbSizerSearch->Add( bSizerCategoriesCtrl, 0, wxALIGN_RIGHT, FromDIP(5) );
|
||||
sbSizerSearch->Add( bSizerBlocksCtrl, 0, wxALIGN_RIGHT, FromDIP(5) );
|
||||
|
||||
|
||||
m_search_panel->SetSizer( sbSizerSearch );
|
||||
@@ -687,10 +687,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
|
||||
sbSizerPreview->Add( m_tags, 1, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
m_category = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_category->SetToolTip( _("Unicode character category") );
|
||||
m_block = new wxTextCtrl( sbSizerPreview->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTER );
|
||||
m_block->SetToolTip( _("Unicode character block") );
|
||||
|
||||
sbSizerPreview->Add( m_category, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
sbSizerPreview->Add( m_block, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
wxBoxSizer* bSizerNavigateButtons;
|
||||
bSizerNavigateButtons = new wxBoxSizer( wxHORIZONTAL );
|
||||
@@ -780,10 +780,10 @@ wxZRColaCharSelectBase::wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id,
|
||||
this->Connect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
@@ -805,10 +805,10 @@ wxZRColaCharSelectBase::~wxZRColaCharSelectBase()
|
||||
this->Disconnect( wxEVT_IDLE, wxIdleEventHandler( wxZRColaCharSelectBase::OnIdle ) );
|
||||
m_search->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( wxZRColaCharSelectBase::OnSearchText ), NULL, this );
|
||||
m_search_more->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnSearchMore ), NULL, this );
|
||||
m_categories->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnCategoriesToggle ), NULL, this );
|
||||
m_categoriesAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesAll ), NULL, this );
|
||||
m_categoriesNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesNone ), NULL, this );
|
||||
m_categoriesInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnCategoriesInvert ), NULL, this );
|
||||
m_blocks->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( wxZRColaCharSelectBase::OnBlocksToggle ), NULL, this );
|
||||
m_blocksAll->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksAll ), NULL, this );
|
||||
m_blocksNone->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksNone ), NULL, this );
|
||||
m_blocksInvert->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( wxZRColaCharSelectBase::OnBlocksInvert ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( wxZRColaCharSelectBase::OnResultCellDClick ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( wxZRColaCharSelectBase::OnResultSelectCell ), NULL, this );
|
||||
m_gridResults->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( wxZRColaCharSelectBase::OnResultsKeyDown ), NULL, this );
|
||||
@@ -934,7 +934,7 @@ wxZRColaAboutBase::wxZRColaAboutBase( wxWindow* parent, wxWindowID id, const wxS
|
||||
wxBoxSizer* bSizerColumns;
|
||||
bSizerColumns = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_bitmapIcon = new wxStaticBitmap( this, wxID_ANY, wxIcon( wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, FromDIP(32), FromDIP(32) ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_bitmapIcon = new wxStaticBitmap( this, wxID_ANY, wxIconEx( wxT("00_zrcola.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 32, 32, this ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerColumns->Add( m_bitmapIcon, 0, wxALL, FromDIP(5) );
|
||||
|
||||
wxBoxSizer* bSizerText;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@@ -61,7 +61,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_CHARACTER_SELECTOR = 1000,
|
||||
wxID_CHARACTER_SELECTOR = 6000,
|
||||
wxID_SEND_DESTINATION,
|
||||
wxID_COPY_DESTINATION_AND_RETURN,
|
||||
wxID_SEND_SOURCE,
|
||||
@@ -78,7 +78,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxID_HELP_INSTRUCTIONS,
|
||||
wxID_HELP_SHORTCUTS,
|
||||
wxID_HELP_REQCHAR,
|
||||
wxID_HELP_UPDATE
|
||||
wxID_HELP_UPDATE,
|
||||
};
|
||||
|
||||
wxMenuBar* m_menubar;
|
||||
@@ -105,7 +105,7 @@ class wxZRColaFrameBase : public wxFrame
|
||||
wxZRColaCharacterCatalogPanel* m_panelChrCat;
|
||||
wxStatusBar* m_statusBar;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
|
||||
virtual void OnIconize( wxIconizeEvent& event ) { event.Skip(); }
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
@@ -133,7 +133,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
wxID_TIMER_SAVE = 1000
|
||||
wxID_TIMER_SAVE = 6000,
|
||||
};
|
||||
|
||||
wxSplitterWindow* m_splitterSource;
|
||||
@@ -146,7 +146,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destinationHex;
|
||||
wxTimer m_timerSave;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnSourcePaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSourceHexPaint( wxPaintEvent& event ) { event.Skip(); }
|
||||
@@ -161,6 +161,7 @@ class wxZRColaComposerPanelBase : public wxPanel
|
||||
wxTextCtrl* m_destination;
|
||||
|
||||
wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaComposerPanel") );
|
||||
|
||||
~wxZRColaComposerPanelBase();
|
||||
|
||||
void m_splitterSourceOnIdle( wxIdleEvent& )
|
||||
@@ -189,7 +190,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
wxZRColaCharGrid* m_grid;
|
||||
wxCheckBox* m_show_all;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnChoice( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnGridKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -199,6 +200,7 @@ class wxZRColaCharacterCatalogPanelBase : public wxPanel
|
||||
public:
|
||||
|
||||
wxZRColaCharacterCatalogPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxT("ZRColaCharacterCatalog") );
|
||||
|
||||
~wxZRColaCharacterCatalogPanelBase();
|
||||
|
||||
};
|
||||
@@ -214,10 +216,10 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxSearchCtrl* m_search;
|
||||
wxHyperlinkCtrl* m_search_more;
|
||||
wxPanel* m_search_panel;
|
||||
wxCheckListBox* m_categories;
|
||||
wxHyperlinkCtrl* m_categoriesAll;
|
||||
wxHyperlinkCtrl* m_categoriesNone;
|
||||
wxHyperlinkCtrl* m_categoriesInvert;
|
||||
wxCheckListBox* m_blocks;
|
||||
wxHyperlinkCtrl* m_blocksAll;
|
||||
wxHyperlinkCtrl* m_blocksNone;
|
||||
wxHyperlinkCtrl* m_blocksInvert;
|
||||
wxZRColaCharGrid* m_gridResults;
|
||||
wxZRColaCharGrid* m_gridRecent;
|
||||
wxStaticText* m_labelUnicode;
|
||||
@@ -226,20 +228,20 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
wxGrid* m_gridPreview;
|
||||
wxTextCtrl* m_description;
|
||||
wxTextCtrl* m_tags;
|
||||
wxTextCtrl* m_category;
|
||||
wxTextCtrl* m_block;
|
||||
wxHyperlinkCtrl* m_navigateBack;
|
||||
wxHyperlinkCtrl* m_navigateForward;
|
||||
wxZRColaCharGrid* m_gridRelated;
|
||||
wxButton* m_buttonInsert;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchText( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnSearchMore( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnCategoriesInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksToggle( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksAll( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksNone( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnBlocksInvert( wxHyperlinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultCellDClick( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultSelectCell( wxGridEvent& event ) { event.Skip(); }
|
||||
virtual void OnResultsKeyDown( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -258,6 +260,7 @@ class wxZRColaCharSelectBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaCharSelectBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Character Search"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharSelect") );
|
||||
|
||||
~wxZRColaCharSelectBase();
|
||||
|
||||
};
|
||||
@@ -284,7 +287,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsApply;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnLanguageUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnApplyButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -294,6 +297,7 @@ class wxZRColaSettingsBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaSettingsBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaSettings") );
|
||||
|
||||
~wxZRColaSettingsBase();
|
||||
|
||||
};
|
||||
@@ -320,6 +324,7 @@ class wxZRColaAboutBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaAboutBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaAbout") );
|
||||
|
||||
~wxZRColaAboutBase();
|
||||
|
||||
};
|
||||
@@ -336,7 +341,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
wxButton* m_buttonUpdate;
|
||||
wxButton* m_buttonClose;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnIdle( wxIdleEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnClose( wxCommandEvent& event ) { event.Skip(); }
|
||||
@@ -345,6 +350,7 @@ class wxZRColaUpdaterBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaUpdaterBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Product Update"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaUpdater") );
|
||||
|
||||
~wxZRColaUpdaterBase();
|
||||
|
||||
};
|
||||
@@ -367,13 +373,14 @@ class wxZRColaCharRequestBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
wxZRColaCharRequestBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Request a New Character"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaCharRequest") );
|
||||
|
||||
~wxZRColaCharRequestBase();
|
||||
|
||||
};
|
||||
@@ -399,7 +406,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnAvailableChar( wxKeyEvent& event ) { event.Skip(); }
|
||||
@@ -416,6 +423,7 @@ class wxZRColaTranslationSeqBase : public wxDialog
|
||||
public:
|
||||
|
||||
wxZRColaTranslationSeqBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Custom Translation Sequence"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxT("ZRColaTranslationSeq") );
|
||||
|
||||
~wxZRColaTranslationSeqBase();
|
||||
|
||||
};
|
||||
|
||||
@@ -1,172 +1,171 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaSettings::wxZRColaSettings(wxWindow* parent) :
|
||||
m_lang_auto(true),
|
||||
m_lang(ZRCola::langid_t::blank),
|
||||
wxZRColaSettingsBase(parent)
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_languages->Clear();
|
||||
for (size_t i = 0, n = app->m_lang_db.idxLang.size(); i < n; i++) {
|
||||
const auto &lang = app->m_lang_db.idxLang[i];
|
||||
wxString
|
||||
label(lang.name(), lang.name_len()),
|
||||
label_tran(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_languages->Insert(label_tran, (unsigned int)i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnInitDialog(wxInitDialogEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
// Set state of auto-start according to Startup folder shortcut presence.
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
m_autoStart->SetValue(wxFileExists(linkName));
|
||||
#else
|
||||
m_autoStart->SetValue(false);
|
||||
m_panelAutoStart->Enable(false);
|
||||
#endif
|
||||
|
||||
m_languages->Enable(!m_lang_auto);
|
||||
(m_lang_auto ? m_langAuto : m_langManual)->SetValue(true);
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
ZRCola::language_db::indexLang::size_type start;
|
||||
m_languages->Select(app->m_lang_db.idxLang.find(ZRCola::language_db::language(m_lang), start) ? (int)start : -1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnLanguageUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
m_languages->Enable(m_langManual->GetValue());
|
||||
|
||||
wxZRColaSettingsBase::OnLanguageUpdate(event);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnApplyButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
if (m_autoStart->IsChecked()) {
|
||||
// Create the shortcut.
|
||||
IShellLink *sl;
|
||||
HRESULT hr = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&sl);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Setup ZRCola shortcut.
|
||||
sl->SetPath(wxTheApp->argv[0]);
|
||||
sl->SetDescription(_("Start ZRCola automatically on logon"));
|
||||
sl->SetShowCmd(SW_SHOWMINNOACTIVE);
|
||||
|
||||
// Query IShellLink for the IPersistFile interface, used for saving the
|
||||
// shortcut in persistent storage.
|
||||
IPersistFile *pf;
|
||||
hr = sl->QueryInterface(IID_IPersistFile, (LPVOID*)&pf);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Save the link by calling IPersistFile::Save.
|
||||
hr = pf->Save(linkName, TRUE);
|
||||
pf->Release();
|
||||
}
|
||||
|
||||
sl->Release();
|
||||
}
|
||||
} else if (wxFileExists(linkName)) {
|
||||
// The shortcut already exists. Remove it.
|
||||
wxRemoveFile(linkName);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_langAuto->GetValue()) {
|
||||
m_lang_auto = true;
|
||||
#if defined(__WXMSW__)
|
||||
// Set update keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), m_lang);
|
||||
#endif
|
||||
} else {
|
||||
m_lang_auto = false;
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
const auto &lang = app->m_lang_db.idxLang[m_languages->GetSelection()];
|
||||
|
||||
if (m_lang != lang.lang) {
|
||||
m_lang = lang.lang;
|
||||
|
||||
// Notify destination text something changed and should re-inverse translate.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
app->m_mainWnd->m_panel->m_destination->ProcessWindowEvent(event2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaSettings::OnApplyButtonClick(event);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaSettings::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaSettings::wxPersistentZRColaSettings(wxZRColaSettings *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaSettings::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaSettings*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("langAuto"), wnd->m_lang_auto);
|
||||
SaveValue(wxT("lang" ), wxString::FromAscii(wnd->m_lang.data, _countof(wnd->m_lang.data)));
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaSettings::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaSettings*>(GetWindow());
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
wxString lang;
|
||||
|
||||
// Restore automatic language detection setting first.
|
||||
RestoreValue(wxT("langAuto"), &(wnd->m_lang_auto));
|
||||
if (wnd->m_lang_auto) {
|
||||
#if defined(__WXMSW__)
|
||||
// Set keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), wnd->m_lang);
|
||||
#endif
|
||||
} else if (RestoreValue(wxT("lang"), &lang) && lang.Length() == 3) {
|
||||
// The language was read from configuration.
|
||||
wnd->m_lang = lang.c_str();
|
||||
} else if (!app->m_lang_db.idxLang.empty()) {
|
||||
wnd->m_lang = app->m_lang_db.idxLang[0].lang;
|
||||
} else
|
||||
wnd->m_lang = ZRCola::langid_t::blank;
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
wxZRColaSettings::wxZRColaSettings(wxWindow* parent) :
|
||||
m_lang_auto(true),
|
||||
wxZRColaSettingsBase(parent)
|
||||
{
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
m_languages->Clear();
|
||||
for (size_t i = 0, n = app->m_lang_db.idxLang.size(); i < n; i++) {
|
||||
const auto &lang = app->m_lang_db.idxLang[i];
|
||||
wxString
|
||||
label(lang.name(), lang.name_len()),
|
||||
label_tran(wxGetTranslation(label, wxT("ZRCola-zrcdb")));
|
||||
m_languages->Insert(label_tran, (unsigned int)i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnInitDialog(wxInitDialogEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
// Set state of auto-start according to Startup folder shortcut presence.
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
m_autoStart->SetValue(wxFileExists(linkName));
|
||||
#else
|
||||
m_autoStart->SetValue(false);
|
||||
m_panelAutoStart->Enable(false);
|
||||
#endif
|
||||
|
||||
m_languages->Enable(!m_lang_auto);
|
||||
(m_lang_auto ? m_langAuto : m_langManual)->SetValue(true);
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
ZRCola::language_db::indexLang::size_type start;
|
||||
m_languages->Select(app->m_lang_db.idxLang.find(ZRCola::language_db::language(m_lang), start) ? (int)start : -1);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnLanguageUpdate(wxUpdateUIEvent& event)
|
||||
{
|
||||
m_languages->Enable(m_langManual->GetValue());
|
||||
|
||||
wxZRColaSettingsBase::OnLanguageUpdate(event);
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnApplyButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
event.Skip();
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
wxString linkName(wxExpandEnvVars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ZRCola.lnk"));
|
||||
if (m_autoStart->IsChecked()) {
|
||||
// Create the shortcut.
|
||||
IShellLink *sl;
|
||||
HRESULT hr = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&sl);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Setup ZRCola shortcut.
|
||||
sl->SetPath(wxTheApp->argv[0]);
|
||||
sl->SetDescription(_("Start ZRCola automatically on logon"));
|
||||
sl->SetShowCmd(SW_SHOWMINNOACTIVE);
|
||||
|
||||
// Query IShellLink for the IPersistFile interface, used for saving the
|
||||
// shortcut in persistent storage.
|
||||
IPersistFile *pf;
|
||||
hr = sl->QueryInterface(IID_IPersistFile, (LPVOID*)&pf);
|
||||
if (SUCCEEDED(hr)) {
|
||||
// Save the link by calling IPersistFile::Save.
|
||||
hr = pf->Save(linkName, TRUE);
|
||||
pf->Release();
|
||||
}
|
||||
|
||||
sl->Release();
|
||||
}
|
||||
} else if (wxFileExists(linkName)) {
|
||||
// The shortcut already exists. Remove it.
|
||||
wxRemoveFile(linkName);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_langAuto->GetValue()) {
|
||||
m_lang_auto = true;
|
||||
#if defined(__WXMSW__)
|
||||
// Set update keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), m_lang);
|
||||
#endif
|
||||
} else {
|
||||
m_lang_auto = false;
|
||||
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
const auto &lang = app->m_lang_db.idxLang[m_languages->GetSelection()];
|
||||
|
||||
if (m_lang != lang.lang) {
|
||||
m_lang = lang.lang;
|
||||
|
||||
// Notify destination text something changed and should re-inverse translate.
|
||||
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
|
||||
app->m_mainWnd->m_panel->m_destination->ProcessWindowEvent(event2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxZRColaSettings::OnOKButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
wxZRColaSettings::OnApplyButtonClick(event);
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// wxPersistentZRColaSettings
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const int wxPersistentZRColaSettings::s_guiLevel = 1;
|
||||
|
||||
|
||||
wxPersistentZRColaSettings::wxPersistentZRColaSettings(wxZRColaSettings *wnd) : wxPersistentTLWEx(wnd)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void wxPersistentZRColaSettings::Save() const
|
||||
{
|
||||
SaveValue(wxT("guiLevel"), s_guiLevel);
|
||||
wxPersistentTLWEx::Save();
|
||||
|
||||
auto wnd = static_cast<const wxZRColaSettings*>(GetWindow()); // dynamic_cast is not reliable as we are typically called late in the wxTopLevelWindowMSW destructor.
|
||||
|
||||
SaveValue(wxT("langAuto"), wnd->m_lang_auto);
|
||||
SaveValue(wxT("lang" ), wxString::FromAscii(wnd->m_lang.data, _countof(wnd->m_lang.data)));
|
||||
}
|
||||
|
||||
|
||||
bool wxPersistentZRColaSettings::Restore()
|
||||
{
|
||||
auto wnd = dynamic_cast<wxZRColaSettings*>(GetWindow());
|
||||
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
|
||||
wxString lang;
|
||||
|
||||
// Restore automatic language detection setting first.
|
||||
RestoreValue(wxT("langAuto"), &(wnd->m_lang_auto));
|
||||
if (wnd->m_lang_auto) {
|
||||
#if defined(__WXMSW__)
|
||||
// Set keyboard language.
|
||||
HKL hkl = ::GetKeyboardLayout(0);
|
||||
ZRCola::LangConvert(LOWORD(hkl), wnd->m_lang);
|
||||
#endif
|
||||
} else if (RestoreValue(wxT("lang"), &lang) && lang.Length() == 3) {
|
||||
// The language was read from configuration.
|
||||
wnd->m_lang = lang.c_str();
|
||||
} else if (!app->m_lang_db.idxLang.empty()) {
|
||||
wnd->m_lang = app->m_lang_db.idxLang[0].lang;
|
||||
} else
|
||||
wnd->m_lang = ZRCola::langid_t();
|
||||
|
||||
int guiLevel;
|
||||
return RestoreValue(wxT("guiLevel"), &guiLevel) && guiLevel == s_guiLevel ? wxPersistentTLWEx::Restore() : true;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -745,8 +745,6 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
set<ZRCola::chrcatid_t> categories_used;
|
||||
|
||||
{
|
||||
// Get characters.
|
||||
com_obj<ADORecordset> rs;
|
||||
@@ -756,7 +754,32 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
ZRCola::DBSource::character_desc_idx idxChrDsc, idxChrDscSub;
|
||||
ZRCola::DBSource::character_bank chrs;
|
||||
|
||||
// Phase 1: Parse characters and build indexes.
|
||||
// Phase 1: Get character blocks.
|
||||
com_obj<ADORecordset> rs2;
|
||||
if (src.SelectCharacterBlocks(rs2)) {
|
||||
size_t count2 = src.GetRecordsetCount(rs2);
|
||||
if (count2 < 0xffffffff) { // 4G check (-1 is reserved for error condition)
|
||||
// Parse character blocks and build index and data.
|
||||
for (; !ZRCola::DBSource::IsEOF(rs2); rs2->MoveNext()) {
|
||||
// Read character block from the database.
|
||||
ZRCola::DBSource::chrblk cb;
|
||||
if (src.GetCharacterBlock(rs2, cb))
|
||||
chrs.idxChrBlk[cb.first] = std::move(cb.second);
|
||||
else
|
||||
has_errors = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0029: Error getting character block count from database or too many character blocks.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0028: Error getting character blocks from database. Please make sure the file is ZRCola.zrc compatible.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
// Phase 2: Parse characters and build indexes.
|
||||
for (; !ZRCola::DBSource::IsEOF(rs); rs->MoveNext()) {
|
||||
// Read character from the database.
|
||||
ZRCola::DBSource::character chr;
|
||||
@@ -766,33 +789,61 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
// Phase 2: Build related character lists.
|
||||
// Phase 3: Build related character lists.
|
||||
chrs.build_related();
|
||||
|
||||
ZRCola::character_db db;
|
||||
{
|
||||
ZRCola::character_db db;
|
||||
|
||||
// Preallocate memory.
|
||||
db.idxChr.reserve(count);
|
||||
db.data .reserve(count*4);
|
||||
// Preallocate memory.
|
||||
db.idxChr.reserve(count);
|
||||
db.data.reserve(count * 4);
|
||||
|
||||
// Phase 3: Parse characters and build index and data.
|
||||
for (auto chr = chrs.cbegin(), chr_end = chrs.cend(); chr != chr_end; ++chr) {
|
||||
// Add character to index and data.
|
||||
db << *chr;
|
||||
// Phase 4: Parse characters and build index and data.
|
||||
for (auto chr = chrs.cbegin(), chr_end = chrs.cend(); chr != chr_end; ++chr) {
|
||||
// Add character to index and data.
|
||||
db << *chr;
|
||||
|
||||
// Add description (and keywords) to index.
|
||||
idxChrDsc .add_keywords(chr->second.terms, chr->first, 0);
|
||||
idxChrDscSub.add_keywords(chr->second.terms, chr->first, 3);
|
||||
// Add description (and keywords) to index.
|
||||
idxChrDsc.add_keywords(chr->second.terms, chr->first, 0);
|
||||
idxChrDscSub.add_keywords(chr->second.terms, chr->first, 3);
|
||||
}
|
||||
|
||||
// Mark category used.
|
||||
categories_used.insert(chr->second.cat);
|
||||
// Write characters to file.
|
||||
db.idxChr.sort();
|
||||
idxChrDsc.save(db.idxDsc);
|
||||
idxChrDscSub.save(db.idxDscSub);
|
||||
dst << ZRCola::character_rec(db);
|
||||
}
|
||||
|
||||
// Write characters to file.
|
||||
db.idxChr.sort();
|
||||
idxChrDsc .save(db.idxDsc );
|
||||
idxChrDscSub.save(db.idxDscSub);
|
||||
dst << ZRCola::character_rec(db);
|
||||
{
|
||||
ZRCola::chrblk_db db;
|
||||
|
||||
// Preallocate memory.
|
||||
db.idxChrId.reserve(chrs.idxChrBlk.size());
|
||||
db.idxRank.reserve(chrs.idxChrBlk.size());
|
||||
db.data.reserve(chrs.idxChrBlk.size() * 16);
|
||||
|
||||
// Phase 5: Parse character blocks and build index and data.
|
||||
for (auto& cb : chrs.idxChrBlk)
|
||||
{
|
||||
if (!cb.second.used) {
|
||||
// Skip unused character blocks.
|
||||
continue;
|
||||
}
|
||||
|
||||
if (build_pot)
|
||||
pot.insert(cb.second.name);
|
||||
|
||||
// Add character block to index and data.
|
||||
db << cb;
|
||||
}
|
||||
|
||||
// Write character blocks to file.
|
||||
db.idxChrId.sort();
|
||||
db.idxRank.sort();
|
||||
dst << ZRCola::chrblk_rec(db);
|
||||
}
|
||||
} else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0017: Error getting character count from database or too many characters.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
@@ -803,52 +854,6 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// Get character categories.
|
||||
com_obj<ADORecordset> rs;
|
||||
if (src.SelectCharacterCategories(rs)) {
|
||||
size_t count = src.GetRecordsetCount(rs);
|
||||
if (count < 0xffffffff) { // 4G check (-1 is reserved for error condition)
|
||||
ZRCola::DBSource::chrcat cc;
|
||||
ZRCola::chrcat_db db;
|
||||
|
||||
// Preallocate memory.
|
||||
db.idxChrCat.reserve(count);
|
||||
db.idxRank .reserve(count);
|
||||
db.data .reserve(count*4);
|
||||
|
||||
// Parse character categories and build index and data.
|
||||
for (; !ZRCola::DBSource::IsEOF(rs); rs->MoveNext()) {
|
||||
// Read character category from the database.
|
||||
if (src.GetCharacterCategory(rs, cc)) {
|
||||
if (build_pot)
|
||||
pot.insert(cc.name);
|
||||
|
||||
if (categories_used.find(cc.cat) == categories_used.end()) {
|
||||
// Skip empty character categories.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Add character category to index and data.
|
||||
db << cc;
|
||||
} else
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
// Write character categories to file.
|
||||
db.idxChrCat.sort();
|
||||
db.idxRank .sort();
|
||||
dst << ZRCola::chrcat_rec(db);
|
||||
} else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0019: Error getting character category count from database or too many character categories.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
} else {
|
||||
_ftprintf(stderr, wxT("%s: error ZCC0018: Error getting character categories from database. Please make sure the file is ZRCola.zrc compatible.\n"), (LPCTSTR)filenameIn.c_str());
|
||||
has_errors = true;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// Get characters tags.
|
||||
com_obj<ADORecordset> rs;
|
||||
@@ -981,10 +986,10 @@ int _tmain(int argc, _TCHAR *argv[])
|
||||
<< "\"Content-Transfer-Encoding: 8bit\\n\"" << endl
|
||||
<< "\"X-Generator: ZRColaCompile\\n\"" << endl;
|
||||
|
||||
wstring_convert<codecvt_utf8<wchar_t>> conv;
|
||||
charset_encoder<wchar_t, char> conv(stdex::wchar_t_charset, charset_id::utf8);
|
||||
for (auto p = pot.cbegin(); p != pot.cend(); ++p) {
|
||||
// Convert UTF-16 to UTF-8 and escape.
|
||||
string t(conv.to_bytes(*p)), u;
|
||||
string t(conv.convert(*p)), u;
|
||||
for (size_t i = 0, n = t.size(); i < n; i++) {
|
||||
char c = t[i];
|
||||
switch (c) {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <wx/intl.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <stdex/idrec>
|
||||
#include <zrcola/idrec.h>
|
||||
|
||||
#include <WinStd/Common.h>
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<IntDir>temp\$(ProjectName).$(Platform).$(Configuration).$(PlatformToolset)\</IntDir>
|
||||
<IntDir>temp\$(ProjectName).$(Platform).$(Configuration)\</IntDir>
|
||||
<OutDir>..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
|
||||
3
ZRColaWS/.gitignore
vendored
Normal file
3
ZRColaWS/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/*.d
|
||||
/*.o
|
||||
/zrcolaws
|
||||
91
ZRColaWS/Makefile
Normal file
91
ZRColaWS/Makefile
Normal file
@@ -0,0 +1,91 @@
|
||||
CPPFLAGS := $(CPPFLAGS) -I../lib/libZRCola/include -I../lib/stdex/include -I../lib/oatpp-swagger/src -I../lib/oatpp/src
|
||||
LDFLAGS := $(LDFLAGS) -L../lib/libZRCola/lib -L../lib/oatpp-swagger/build/src -L../lib/oatpp/build/src
|
||||
LDLIBS := $(LDLIBS) -lZRCola -loatpp-swagger -loatpp -lstdc++
|
||||
SRCS := zrcolaws.cpp
|
||||
|
||||
include ../include/props.mak
|
||||
|
||||
.PHONY: all
|
||||
all: zrcolaws
|
||||
|
||||
zrcolaws: \
|
||||
../lib/oatpp/build/src/liboatpp.a \
|
||||
../lib/oatpp-swagger/build/src/liboatpp-swagger.a \
|
||||
../lib/libZRCola/lib/libZRCola.a \
|
||||
$(OBJS)
|
||||
$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)
|
||||
|
||||
../lib/oatpp/build/src/liboatpp.a: ../lib/oatpp/build/Makefile
|
||||
$(MAKE) $(MFLAGS) -C ../lib/oatpp/build
|
||||
|
||||
../lib/oatpp/build/Makefile: ../lib/oatpp/CMakeLists.txt
|
||||
cmake -D OATPP_INSTALL=OFF -D OATPP_BUILD_TESTS=OFF -D OATPP_LINK_TEST_LIBRARY=OFF -S ../lib/oatpp -B ../lib/oatpp/build
|
||||
|
||||
../lib/oatpp-swagger/build/src/liboatpp-swagger.a: ../lib/oatpp-swagger/build/Makefile
|
||||
$(MAKE) $(MFLAGS) -C ../lib/oatpp-swagger/build
|
||||
|
||||
../lib/oatpp-swagger/build/Makefile: ../lib/oatpp-swagger/CMakeLists.txt
|
||||
cmake -D OATPP_INSTALL=OFF -D OATPP_BUILD_TESTS=OFF -D OATPP_MODULES_LOCATION=CUSTOM -D OATPP_DIR_SRC=${CURDIR}/../lib/oatpp/src -D OATPP_DIR_LIB=${CURDIR}/../lib/oatpp/build/src -S ../lib/oatpp-swagger -B ../lib/oatpp-swagger/build
|
||||
|
||||
../lib/libZRCola/lib/libZRCola.a:
|
||||
$(MAKE) $(MFLAGS) -C ../lib/libZRCola/build
|
||||
|
||||
.PHONY: install
|
||||
install: zrcolaws ../output/data/ZRCola.zrcdb
|
||||
install -d $(PREFIX)/bin/
|
||||
install -m 755 zrcolaws $(PREFIX)/bin/
|
||||
install -d $(PREFIX)/share/zrcola/
|
||||
install -m 644 ../output/data/ZRCola.zrcdb $(PREFIX)/share/zrcola/
|
||||
install -d $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/favicon-16x16.png $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/favicon-32x32.png $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/index.html $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/oauth2-redirect.html $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-bundle.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-bundle.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle-core.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle-core.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-es-bundle.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-standalone-preset.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui-standalone-preset.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.css $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.css.map $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.js $(PREFIX)/share/zrcola/res/
|
||||
install -m 644 ../lib/oatpp-swagger/res/swagger-ui.js.map $(PREFIX)/share/zrcola/res/
|
||||
install -d $(PREFIX)/etc/sysconfig/
|
||||
{ echo '#!/bin/sh'; \
|
||||
echo ''; \
|
||||
echo '# Interface to listen on. Default: localhost'; \
|
||||
echo '#HOST=0.0.0.0'; \
|
||||
echo ''; \
|
||||
echo '# Port to listen on. Default: 54591'; \
|
||||
echo '#PORT=54591'; \
|
||||
echo ''; \
|
||||
echo '# Additional zrcolaws command line options'; \
|
||||
echo '#OPTIONS=-4'; \
|
||||
} > $(PREFIX)/etc/sysconfig/zrcolaws
|
||||
install -d $(PREFIX)/lib/systemd/system/
|
||||
{ echo '[Unit]'; \
|
||||
echo 'Description=ZRCola Web Service'; \
|
||||
echo 'After=network.target'; \
|
||||
echo ''; \
|
||||
echo '[Service]'; \
|
||||
echo 'Environment="HOST=localhost" "PORT=54591"'; \
|
||||
echo 'EnvironmentFile=-$(PREFIX)/etc/sysconfig/zrcolaws'; \
|
||||
echo 'DynamicUser=yes'; \
|
||||
echo 'ExecStart=/usr/local/bin/zrcolaws --host $$HOST --port $$PORT $$OPTIONS'; \
|
||||
echo 'Type=exec'; \
|
||||
echo 'Restart=always'; \
|
||||
echo ''; \
|
||||
echo '[Install]'; \
|
||||
echo 'WantedBy=multi-user.target'; \
|
||||
echo 'RequiredBy=network.target'; \
|
||||
} > $(PREFIX)/lib/systemd/system/zrcolaws.service
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-rm -r *.{d,o} zrcolaws
|
||||
|
||||
include ../include/targets.mak
|
||||
-include $(DEPS)
|
||||
23
ZRColaWS/README.md
Normal file
23
ZRColaWS/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# ZRCola Web Service
|
||||
|
||||
## Building and Installation
|
||||
|
||||
1. Install prerequisites: `sudo dnf install git cmake gcc gcc-c++ make libatomic`
|
||||
|
||||
2. Clone this Git repository: `git clone --recursive https://git.amebis.si/Amebis/ZRCola.git`
|
||||
|
||||
3. Build ZRColaWS: `make -C ZRCola/ZRColaWS`
|
||||
|
||||
4. Install ZRColaWS: `sudo make -C ZRCola/ZRColaWS install`
|
||||
|
||||
5. Configure ZRColaWS by editing _/usr/local/etc/sysconfig/zrcolaws_
|
||||
|
||||
6. Start ZRColaWS: `sudo systemctl start zrcolaws.service`
|
||||
|
||||
7. Configure ZRColaWS for auto-start: `sudo systemctl enable zrcolaws.service`
|
||||
|
||||
8. Remember to open webservice port in firewall, should the service require external access.
|
||||
|
||||
## Usage
|
||||
|
||||
Web service API documentation is available at _http://host:port/swagger/ui_.
|
||||
73
ZRColaWS/appcomponent.hpp
Normal file
73
ZRColaWS/appcomponent.hpp
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.h"
|
||||
#include "controller.hpp"
|
||||
#include <oatpp-swagger/Model.hpp>
|
||||
#include <oatpp-swagger/Resources.hpp>
|
||||
#include <oatpp/core/base/CommandLineArguments.hpp>
|
||||
#include <oatpp/core/macro/component.hpp>
|
||||
#include <oatpp/network/Server.hpp>
|
||||
#include <oatpp/network/tcp/server/ConnectionProvider.hpp>
|
||||
#include <oatpp/parser/json/mapping/ObjectMapper.hpp>
|
||||
#include <oatpp/web/server/HttpConnectionHandler.hpp>
|
||||
|
||||
class AppComponent
|
||||
{
|
||||
protected:
|
||||
oatpp::network::Address m_address;
|
||||
|
||||
public:
|
||||
AppComponent(const oatpp::network::Address& address) : m_address(address) {}
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([this] {
|
||||
return oatpp::network::tcp::server::ConnectionProvider::createShared({m_address.host, m_address.port, m_address.family});
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, httpRouter)([] {
|
||||
return oatpp::web::server::HttpRouter::createShared();
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router);
|
||||
return oatpp::web::server::HttpConnectionHandler::createShared(router);
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, apiObjectMapper)([] {
|
||||
auto serializerConfig = oatpp::parser::json::mapping::Serializer::Config::createShared();
|
||||
serializerConfig->escapeFlags &= ~oatpp::parser::json::Utils::FLAG_ESCAPE_UTF8CHAR;
|
||||
return oatpp::parser::json::mapping::ObjectMapper::createShared(
|
||||
serializerConfig,
|
||||
oatpp::parser::json::mapping::Deserializer::Config::createShared());
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::network::Server>, server)([] {
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, connectionProvider);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::ConnectionHandler>, connectionHandler);
|
||||
return oatpp::network::Server::createShared(connectionProvider, connectionHandler);
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::swagger::DocumentInfo>, swaggerDocumentInfo)([] {
|
||||
oatpp::swagger::DocumentInfo::Builder builder;
|
||||
builder
|
||||
.setTitle("ZRCola Web Service")
|
||||
.setDescription(
|
||||
"ZRCola is an input system designed mainly, although not exclusively, for linguistic use. "
|
||||
"It allows the user to combine basic letters with any diacritic marks and insert the resulting complex characters into the texts with ease.")
|
||||
.setVersion(PRODUCT_VERSION_STR)
|
||||
.setContactName("ZRCola")
|
||||
.setContactUrl("https://zrcola.zrc-sazu.si/en/")
|
||||
|
||||
.setLicenseName("GNU General Public License, Version 3")
|
||||
.setLicenseUrl("https://www.gnu.org/licenses/gpl-3.0.en.html");
|
||||
return builder.build();
|
||||
}());
|
||||
|
||||
OATPP_CREATE_COMPONENT(std::shared_ptr<oatpp::swagger::Resources>, swaggerResources)([] {
|
||||
return oatpp::swagger::Resources::loadResources(PREFIX "/share/zrcola/res");
|
||||
}());
|
||||
};
|
||||
243
ZRColaWS/controller.hpp
Normal file
243
ZRColaWS/controller.hpp
Normal file
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.h"
|
||||
#include "dto.hpp"
|
||||
#include "iconverter.hpp"
|
||||
#include "zrcolaws.hpp"
|
||||
#include <zrcola/translate.h>
|
||||
#include <oatpp/core/macro/codegen.hpp>
|
||||
#include <oatpp/core/macro/component.hpp>
|
||||
#include <oatpp/web/server/api/ApiController.hpp>
|
||||
|
||||
#include OATPP_CODEGEN_BEGIN(ApiController)
|
||||
|
||||
class Controller : public oatpp::web::server::api::ApiController
|
||||
{
|
||||
public:
|
||||
Controller(const std::shared_ptr<oatpp::data::mapping::ObjectMapper>& defaultObjectMapper, const oatpp::String &routerPrefix = nullptr) :
|
||||
oatpp::web::server::api::ApiController(defaultObjectMapper, routerPrefix)
|
||||
{}
|
||||
|
||||
ADD_CORS(getAbout)
|
||||
ENDPOINT_INFO(getAbout) {
|
||||
info->summary = "Returns service information";
|
||||
info->addResponse<Object<dto::About>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("GET", "/about", getAbout)
|
||||
{
|
||||
auto dto = dto::About::createShared();
|
||||
dto->vendor = PRODUCT_CFG_VENDOR;
|
||||
dto->application = PRODUCT_CFG_APPLICATION;
|
||||
dto->version = PRODUCT_VERSION_STR;
|
||||
return createDtoResponse(Status::CODE_200, dto);
|
||||
}
|
||||
|
||||
ADD_CORS(getTranset)
|
||||
ENDPOINT_INFO(getTranset) {
|
||||
info->summary = "Lists supported translation sets";
|
||||
info->description = "Each translation set describes a set of replacements that are performed to translate text from one script or encoding to another. ";
|
||||
info->addResponse<oatpp::Vector<oatpp::Object<dto::TranSet>>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("GET", "/transet", getTranset)
|
||||
{
|
||||
try {
|
||||
utf16toutf8 c;
|
||||
auto result = oatpp::Vector<oatpp::Object<dto::TranSet>>::createShared();
|
||||
auto dto = dto::TranSet::createShared();
|
||||
dto->set = ZRCOLA_TRANSETID_DEFAULT;
|
||||
dto->src = "ZRCola Decomposed";
|
||||
dto->dst = "ZRCola Composed";
|
||||
result->push_back(dto);
|
||||
for (size_t i = 0, n = ts_db.idxTranSet.size(); i < n; i++) {
|
||||
const auto &ts = ts_db.idxTranSet[i];
|
||||
dto = dto::TranSet::createShared();
|
||||
dto->set = ts.set;
|
||||
dto->src = c.convert(ts.src(), ts.src_len());
|
||||
dto->dst = c.convert(ts.dst(), ts.dst_len());
|
||||
result->push_back(dto);
|
||||
}
|
||||
dto = dto::TranSet::createShared();
|
||||
dto->set = ZRCOLA_TRANSETID_UNICODE;
|
||||
dto->src = "ZRCola Decomposed";
|
||||
dto->dst = "Unicode";
|
||||
result->push_back(dto);
|
||||
return createDtoResponse(Status::CODE_200, result);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
ADD_CORS(getLanguage)
|
||||
ENDPOINT_INFO(getLanguage) {
|
||||
info->summary = "Lists supported languages";
|
||||
info->description = "Each language describes a set of special characters that are specific to that language (e.g. č, š, ž in Slovenian, or ä, ö, ü in German).";
|
||||
info->addResponse<oatpp::Vector<oatpp::Object<dto::Language>>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("GET", "/language", getLanguage)
|
||||
{
|
||||
try {
|
||||
utf16toutf8 c;
|
||||
auto result = oatpp::Vector<oatpp::Object<dto::Language>>::createShared();
|
||||
for (size_t i = 0, n = lang_db.idxLang.size(); i < n; i++) {
|
||||
const auto &lang = lang_db.idxLang[i];
|
||||
auto dto = dto::Language::createShared();
|
||||
dto->lang = std::string(&lang.lang.data[0], strnlen(lang.lang.data, std::size(lang.lang.data)));
|
||||
dto->name = c.convert(lang.name(), lang.name_len());
|
||||
result->push_back(dto);
|
||||
}
|
||||
return createDtoResponse(Status::CODE_200, result);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
ADD_CORS(postTranslate)
|
||||
ENDPOINT_INFO(postTranslate) {
|
||||
info->summary = "Translate text";
|
||||
info->description =
|
||||
"Performs any number of supported translations (see /transet) on a given input text in a sequence. "
|
||||
"Together with the output text, it also returns character index mapping between input and output texts.";
|
||||
auto transet = oatpp::Vector<UInt16>::createShared();
|
||||
transet->push_back(ZRCOLA_TRANSETID_DEFAULT);
|
||||
auto dto = dto::TranslateIn::createShared();
|
||||
dto->transet = transet;
|
||||
dto->text = "To je test.";
|
||||
info->addConsumes<Object<dto::TranslateIn>>("application/json")
|
||||
.addExample("Perform ZRCola composition", dto);
|
||||
info->addResponse<Object<dto::TranslateOut>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("POST", "/translate", postTranslate, BODY_DTO(Object<dto::TranslateIn>, input))
|
||||
{
|
||||
try {
|
||||
utf8toutf16 cIn;
|
||||
std::u16string dst, dst2;
|
||||
if (input->text)
|
||||
dst = cIn.convert(*input->text);
|
||||
size_t src_len = dst.size();
|
||||
std::vector<ZRCola::mapping_vector> mapping;
|
||||
if (input->transet) {
|
||||
ZRCola::mapping_vector map;
|
||||
const auto ts_end = input->transet->cend();
|
||||
for (auto ts = input->transet->cbegin(); ts != ts_end; ++ts) {
|
||||
switch (*ts) {
|
||||
case ZRCOLA_TRANSETID_DEFAULT:
|
||||
case ZRCOLA_TRANSETID_UNICODE:
|
||||
// Decompose first, then re-compose.
|
||||
t_db.TranslateInv(*ts, dst.data(), dst.size(), dst2, &map);
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
t_db.Translate(*ts, dst2.data(), dst2.size(), dst, &map);
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
break;
|
||||
|
||||
default:
|
||||
t_db.Translate(*ts, dst.data(), dst.size(), dst2, &map);
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
utf16toutf8 cOut;
|
||||
auto dto = dto::TranslateOut::createShared();
|
||||
dto->text = cOut.convert(dst);
|
||||
auto map = oatpp::Vector<oatpp::UInt32>::createShared();
|
||||
auto m_end = mapping.cend();
|
||||
for (size_t i = 0; i < src_len; ++i) {
|
||||
auto j = i;
|
||||
for (auto m = mapping.cbegin(); m != m_end; ++m)
|
||||
j = m->to_dst(j);
|
||||
map->push_back(j);
|
||||
}
|
||||
dto->map = map;
|
||||
return createDtoResponse(Status::CODE_200, dto);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
ADD_CORS(postTranslateInv)
|
||||
ENDPOINT_INFO(postTranslateInv) {
|
||||
info->summary = "Inverse translate text";
|
||||
info->description =
|
||||
"Performs any number of supported translations (see /transet) on a given input text in a sequence in reverse. "
|
||||
"Together with the output text, it also returns character index mapping between input and output texts.";
|
||||
auto transet = oatpp::Vector<UInt16>::createShared();
|
||||
transet->push_back(ZRCOLA_TRANSETID_DEFAULT);
|
||||
auto dto = dto::TranslateIn::createShared();
|
||||
dto->transet = transet;
|
||||
dto->text = "T ťᵉⓢṭ.";
|
||||
dto->lang = "slv";
|
||||
info->addConsumes<Object<dto::TranslateIn>>("application/json")
|
||||
.addExample("Perform ZRCola decomposition", dto);
|
||||
info->addResponse<Object<dto::TranslateOut>>(Status::CODE_200, "application/json");
|
||||
}
|
||||
ENDPOINT("POST", "/translateInv", postTranslateInv, BODY_DTO(Object<dto::TranslateIn>, input))
|
||||
{
|
||||
try {
|
||||
utf8toutf16 cIn;
|
||||
std::u16string dst, dst2;
|
||||
ZRCola::langid_t lang;
|
||||
if (input->text)
|
||||
dst = cIn.convert(*input->text);
|
||||
lang = input->lang->c_str();
|
||||
size_t src_len = dst.size();
|
||||
std::vector<ZRCola::mapping_vector> mapping;
|
||||
if (input->transet) {
|
||||
ZRCola::mapping_vector map;
|
||||
const auto ts_begin = input->transet->cbegin();
|
||||
for (auto ts = input->transet->cend(); (ts--) != ts_begin; ) {
|
||||
switch (*ts) {
|
||||
case ZRCOLA_TRANSETID_DEFAULT:
|
||||
case ZRCOLA_TRANSETID_UNICODE:
|
||||
t_db.TranslateInv(*ts, dst.data(), dst.size(), &lc_db, lang, dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
map.invert();
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
break;
|
||||
|
||||
default:
|
||||
t_db.TranslateInv(*ts, dst.data(), dst.size(), dst2, &map);
|
||||
dst = std::move(dst2);
|
||||
dst2.clear();
|
||||
map.invert();
|
||||
mapping.push_back(std::move(map));
|
||||
map.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
utf16toutf8 cOut;
|
||||
auto dto = dto::TranslateOut::createShared();
|
||||
dto->text = cOut.convert(dst);
|
||||
auto map = oatpp::Vector<oatpp::UInt32>::createShared();
|
||||
auto m_end = mapping.crend();
|
||||
for (size_t i = 0; i < src_len; ++i) {
|
||||
auto j = i;
|
||||
for (auto m = mapping.crbegin(); m != m_end; ++m)
|
||||
j = m->to_src(j);
|
||||
map->push_back(j);
|
||||
}
|
||||
dto->map = map;
|
||||
return createDtoResponse(Status::CODE_200, dto);
|
||||
} catch (std::exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return ResponseFactory::createResponse(Status::CODE_500, ex.what());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#include OATPP_CODEGEN_END(ApiController)
|
||||
90
ZRColaWS/dto.hpp
Normal file
90
ZRColaWS/dto.hpp
Normal file
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <oatpp/core/data/mapping/type/Object.hpp>
|
||||
#include <oatpp/core/macro/codegen.hpp>
|
||||
#include <oatpp/core/Types.hpp>
|
||||
|
||||
#include OATPP_CODEGEN_BEGIN(DTO)
|
||||
|
||||
namespace dto {
|
||||
|
||||
class About : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(About, DTO)
|
||||
|
||||
DTO_FIELD_INFO(vendor) { info->description = "Application vendor"; }
|
||||
DTO_FIELD(String, vendor);
|
||||
|
||||
DTO_FIELD_INFO(application) { info->description = "Application name"; }
|
||||
DTO_FIELD(String, application);
|
||||
|
||||
DTO_FIELD_INFO(version) { info->description = "Application version"; }
|
||||
DTO_FIELD(String, version);
|
||||
};
|
||||
|
||||
class TranSet : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(TranSet, DTO)
|
||||
|
||||
DTO_FIELD_INFO(set) { info->description = "Translation set ID"; }
|
||||
DTO_FIELD(UInt16, set);
|
||||
|
||||
DTO_FIELD_INFO(src) { info->description = "Input transcript name in English"; }
|
||||
DTO_FIELD(String, src);
|
||||
|
||||
DTO_FIELD_INFO(dst) { info->description = "Output transcript name in English"; }
|
||||
DTO_FIELD(String, dst);
|
||||
};
|
||||
|
||||
class Language : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(Language, DTO)
|
||||
|
||||
DTO_FIELD_INFO(lang) { info->description = "Language ID"; }
|
||||
DTO_FIELD(String, lang);
|
||||
|
||||
DTO_FIELD_INFO(name) { info->description = "Language name in English"; }
|
||||
DTO_FIELD(String, name);
|
||||
};
|
||||
|
||||
class TranslateIn : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(TranslateIn, DTO)
|
||||
|
||||
DTO_FIELD_INFO(transet) {
|
||||
info->description = "Array of one or multiple translation set IDs to perform translation on the text. When inverse translating, the translation sets are read in reverse order listed in this array. Use /transet to get IDs of all supported translation sets.";
|
||||
info->required = true;
|
||||
}
|
||||
DTO_FIELD(Vector<UInt16>, transet);
|
||||
|
||||
DTO_FIELD_INFO(text) {
|
||||
info->description = "Text to be translated";
|
||||
info->required = true;
|
||||
}
|
||||
DTO_FIELD(String, text);
|
||||
|
||||
DTO_FIELD_INFO(lang) {
|
||||
info->description = "Language ID of the text to be translated. This is used on inverse translating to skip decomposing language-specific common characters (e.g. č, š, ž in Slovenian, or ä, ö, ü in German). Use /language to get IDs of all supported languages.";
|
||||
}
|
||||
DTO_FIELD(String, lang) = "slv";
|
||||
};
|
||||
|
||||
class TranslateOut : public oatpp::DTO
|
||||
{
|
||||
DTO_INIT(TranslateOut, DTO)
|
||||
|
||||
DTO_FIELD_INFO(text) { info->description = "Translated text"; }
|
||||
DTO_FIELD(String, text);
|
||||
|
||||
DTO_FIELD_INFO(map) { info->description = "Character index mapping between input and translated text. The map[i] value represents the index of the beginning of a character (in translated text) that translated from the character (in the input text) beginning at index i. All input indexes are measured in characters after input string is translated to UTF-16, and all output indexes are measured in characters before output string is translated from UTF-16."; }
|
||||
DTO_FIELD(Vector<UInt32>, map);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#include OATPP_CODEGEN_END(DTO)
|
||||
75
ZRColaWS/iconverter.hpp
Normal file
75
ZRColaWS/iconverter.hpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdex/compat.hpp>
|
||||
#include <iconv.h>
|
||||
#include <cstring>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
inline static std::runtime_error errno_error(_In_z_ const char *file, _In_ int line, _In_z_ const char *func)
|
||||
{
|
||||
int _errno = errno;
|
||||
return std::runtime_error(
|
||||
std::string(file) + ":" + std::to_string(line) +
|
||||
std::string(func) + " error " + std::to_string(_errno) + ": " +
|
||||
std::strerror(_errno));
|
||||
}
|
||||
|
||||
template <typename T_from, typename T_to>
|
||||
class iconverter
|
||||
{
|
||||
public:
|
||||
iconverter(_In_z_ const char* from, _In_z_ const char* to)
|
||||
{
|
||||
m_handle = iconv_open(to, from);
|
||||
if (m_handle == (iconv_t)-1)
|
||||
throw errno_error(__FILE__, __LINE__, __FUNCTION__);
|
||||
}
|
||||
|
||||
~iconverter()
|
||||
{
|
||||
iconv_close(m_handle);
|
||||
}
|
||||
|
||||
std::basic_string<T_to> convert(_In_z_count_(count) const T_from* input, _In_ size_t count) const
|
||||
{
|
||||
T_to buf[0x100];
|
||||
std::basic_string<T_to> result;
|
||||
size_t inSize = sizeof(T_from) * count;
|
||||
do {
|
||||
T_to* output = &buf[0];
|
||||
size_t outSize = sizeof(buf);
|
||||
errno = 0;
|
||||
iconv(m_handle, (char**)&input, &inSize, (char**)&output, &outSize);
|
||||
if (errno)
|
||||
throw errno_error(__FILE__, __LINE__, __FUNCTION__);
|
||||
result.insert(result.end(), buf, (T_to*)((char*)buf + sizeof(buf) - outSize));
|
||||
} while (inSize);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::basic_string<T_to> convert(_In_ const std::basic_string<T_from>& input)
|
||||
{
|
||||
return convert(input.c_str(), input.length());
|
||||
}
|
||||
|
||||
protected:
|
||||
iconv_t m_handle;
|
||||
};
|
||||
|
||||
class utf16toutf8 : public iconverter<char16_t, char>
|
||||
{
|
||||
public:
|
||||
utf16toutf8() : iconverter("UTF-16LE", "UTF-8") {}
|
||||
};
|
||||
|
||||
class utf8toutf16 : public iconverter<char, char16_t>
|
||||
{
|
||||
public:
|
||||
utf8toutf16() : iconverter("UTF-8", "UTF-16LE") {}
|
||||
};
|
||||
27
ZRColaWS/stdlogger.hpp
Normal file
27
ZRColaWS/stdlogger.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <oatpp/core/base/Environment.hpp>
|
||||
#include <iostream>
|
||||
#include <mutex>
|
||||
|
||||
class StdLogger : public oatpp::base::Logger
|
||||
{
|
||||
private:
|
||||
std::mutex m_lock;
|
||||
|
||||
public:
|
||||
StdLogger() {}
|
||||
|
||||
void log(v_uint32 priority, const std::string& tag, const std::string& message) override
|
||||
{
|
||||
if (!isLogPriorityEnabled(priority))
|
||||
return;
|
||||
std::lock_guard<std::mutex> guard(m_lock);
|
||||
(priority < oatpp::base::Logger::PRIORITY_W ? std::cout : std::cerr) << tag << ": " << message << std::endl;
|
||||
}
|
||||
};
|
||||
176
ZRColaWS/zrcolaws.cpp
Normal file
176
ZRColaWS/zrcolaws.cpp
Normal file
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#include "appcomponent.hpp"
|
||||
#include "controller.hpp"
|
||||
#include "stdlogger.hpp"
|
||||
#include "zrcolaws.hpp"
|
||||
#include <oatpp-swagger/Controller.hpp>
|
||||
#include <oatpp/core/base/CommandLineArguments.hpp>
|
||||
#include <oatpp/network/Server.hpp>
|
||||
#include <signal.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
using namespace ZRCola;
|
||||
|
||||
translation_db t_db;
|
||||
transet_db ts_db;
|
||||
// transeq_db tsq_db;
|
||||
langchar_db lc_db;
|
||||
language_db lang_db;
|
||||
// character_db chr_db;
|
||||
// chrblk_db cb_db;
|
||||
// chrtag_db ct_db;
|
||||
// tagname_db tn_db;
|
||||
// highlight_db h_db;
|
||||
|
||||
static void load_database()
|
||||
{
|
||||
fstream dat(PREFIX "/share/zrcola/ZRCola.zrcdb", ios_base::in | ios_base::binary);
|
||||
if (!dat.good())
|
||||
throw runtime_error(PREFIX "/share/zrcola/ZRCola.zrcdb not found or cannot be opened.");
|
||||
|
||||
if (!stdex::idrec::find<recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(recordid_t)))
|
||||
throw runtime_error(PREFIX "/share/zrcola/ZRCola.zrcdb is not a valid ZRCola database.");
|
||||
|
||||
recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(recordsize_t));
|
||||
if (dat.good()) {
|
||||
bool has_translation_data = false;
|
||||
|
||||
for (;;) {
|
||||
recordid_t id;
|
||||
if (!stdex::idrec::read_id(dat, id, size)) break;
|
||||
|
||||
if (id == translation_rec::id()) {
|
||||
dat >> translation_rec(t_db);
|
||||
if (dat.good()) {
|
||||
has_translation_data = true;
|
||||
} else {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading translation data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
t_db.clear();
|
||||
}
|
||||
} else if (id == transet_rec::id()) {
|
||||
dat >> transet_rec(ts_db);
|
||||
if (!dat.good()) {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading translation set data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
ts_db.clear();
|
||||
}
|
||||
// } else if (id == transeq_rec::id()) {
|
||||
// dat >> transeq_rec(tsq_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading translation sequence data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// tsq_db.clear();
|
||||
// }
|
||||
} else if (id == langchar_rec::id()) {
|
||||
dat >> langchar_rec(lc_db);
|
||||
if (!dat.good()) {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading language character data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
lc_db.clear();
|
||||
}
|
||||
} else if (id == language_rec::id()) {
|
||||
dat >> language_rec(lang_db);
|
||||
if (!dat.good()) {
|
||||
OATPP_LOGE(__FUNCTION__, "Error reading language character data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
lang_db.clear();
|
||||
}
|
||||
// } else if (id == character_rec::id()) {
|
||||
// dat >> character_rec(chr_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading character data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// chr_db.clear();
|
||||
// }
|
||||
// } else if (id == chrblk_rec::id()) {
|
||||
// dat >> chrblk_rec(cb_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading character block data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// cb_db.clear();
|
||||
// }
|
||||
// } else if (id == chrtag_rec::id()) {
|
||||
// dat >> chrtag_rec(ct_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading character tag data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// ct_db.clear();
|
||||
// }
|
||||
// } else if (id == tagname_rec::id()) {
|
||||
// dat >> tagname_rec(tn_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading tag name data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// tn_db.clear();
|
||||
// }
|
||||
// } else if (id == highlight_rec::id()) {
|
||||
// dat >> highlight_rec(h_db);
|
||||
// if (!dat.good()) {
|
||||
// OATPP_LOGE(__FUNCTION__, "Error reading highlight data from " PREFIX "/share/zrcola/ZRCola.zrcdb.");
|
||||
// h_db.clear();
|
||||
// }
|
||||
} else
|
||||
stdex::idrec::ignore<recordsize_t, ZRCOLA_RECORD_ALIGN>(dat);
|
||||
}
|
||||
|
||||
if (!has_translation_data)
|
||||
throw runtime_error(PREFIX "/share/zrcola/ZRCola.zrcdb has no translation data.");
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_handler(int s)
|
||||
{
|
||||
OATPP_LOGD(__FUNCTION__, "Caught signal %d", s);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::Server>, server);
|
||||
server->stop();
|
||||
}
|
||||
|
||||
int main(int argc, const char* argv[])
|
||||
{
|
||||
auto logger = std::make_shared<StdLogger>();
|
||||
oatpp::base::Environment::init(logger);
|
||||
try {
|
||||
{
|
||||
oatpp::base::CommandLineArguments cmdArgs(argc, argv);
|
||||
if (cmdArgs.hasArgument("-?") || cmdArgs.hasArgument("--help")) {
|
||||
cerr << "ZRColaWS " << PRODUCT_VERSION_STR << " Copyright © 2022 Amebis" << endl;
|
||||
cerr << endl;
|
||||
cerr << argv[0] << " [--host <interface name>] [--port <port number>] [-4|-6]" << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
load_database();
|
||||
|
||||
struct sigaction sigIntHandler;
|
||||
sigIntHandler.sa_handler = sig_handler;
|
||||
sigemptyset(&sigIntHandler.sa_mask);
|
||||
sigIntHandler.sa_flags = 0;
|
||||
sigaction(SIGINT, &sigIntHandler, NULL);
|
||||
|
||||
oatpp::String host = cmdArgs.getNamedArgumentValue("--host", "localhost");
|
||||
v_uint16 port = oatpp::utils::conversion::strToInt32(cmdArgs.getNamedArgumentValue("--port", "54591"));
|
||||
oatpp::network::Address::Family family = oatpp::network::Address::UNSPEC;
|
||||
if (cmdArgs.hasArgument("-4"))
|
||||
family = oatpp::network::Address::IP_4;
|
||||
else if (cmdArgs.hasArgument("-6"))
|
||||
family = oatpp::network::Address::IP_6;
|
||||
AppComponent components({host, port, family});
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::web::server::HttpRouter>, router);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::data::mapping::ObjectMapper>, objectMapper);
|
||||
auto controller = std::make_shared<Controller>(objectMapper);
|
||||
router->addController(controller);
|
||||
auto swaggerController = oatpp::swagger::Controller::createShared(controller->getEndpoints());
|
||||
router->addController(swaggerController);
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::ServerConnectionProvider>, connectionProvider);
|
||||
OATPP_LOGI(__FUNCTION__, "Server " PRODUCT_VERSION_STR " starting on %s:%s",
|
||||
connectionProvider->getProperty("host").getData(), connectionProvider->getProperty("port").getData());
|
||||
OATPP_COMPONENT(std::shared_ptr<oatpp::network::Server>, server);
|
||||
server->run();
|
||||
OATPP_LOGI(__FUNCTION__, "Server stopped");
|
||||
}
|
||||
oatpp::base::Environment::destroy();
|
||||
} catch (exception &ex) {
|
||||
OATPP_LOGE(__FUNCTION__, "%s: %s", typeid(ex).name(), ex.what());
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
24
ZRColaWS/zrcolaws.hpp
Normal file
24
ZRColaWS/zrcolaws.hpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../include/version.h"
|
||||
#include <zrcola/idrec.h>
|
||||
|
||||
#ifndef PREFIX
|
||||
#define PREFIX "/usr/local"
|
||||
#endif
|
||||
|
||||
extern ZRCola::translation_db t_db;
|
||||
extern ZRCola::transet_db ts_db;
|
||||
// extern ZRCola::transeq_db tsq_db;
|
||||
extern ZRCola::langchar_db lc_db;
|
||||
extern ZRCola::language_db lang_db;
|
||||
// extern ZRCola::character_db chr_db;
|
||||
// extern ZRCola::chrblk_db cb_db;
|
||||
// extern ZRCola::chrtag_db ct_db;
|
||||
// extern ZRCola::tagname_db tn_db;
|
||||
// extern ZRCola::highlight_db h_db;
|
||||
1
include/.gitignore
vendored
1
include/.gitignore
vendored
@@ -1,2 +1 @@
|
||||
/UpdaterKeypair.txt
|
||||
/UpdaterKeyPrivate.bin
|
||||
|
||||
@@ -20,11 +20,7 @@
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||
<SetChecksum>true</SetChecksum>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Target Name="Sign" Condition="'$(ManifestCertificateThumbprint)' != '' and ('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary')" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Message Text="Signing output file..." />
|
||||
<Exec Command="signtool.exe sign /du "https://www.amebis.si" /sha1 "%ManifestCertificateThumbprint%" /fd sha256 /q "$(TargetPath)"" />
|
||||
<Touch Files="$(IntDir)$(TargetName).sign" AlwaysCreate="true" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -24,9 +24,12 @@
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<Target Name="Sign" Condition="'$(ManifestCertificateThumbprint)' != '' and ('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary')" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Message Text="Signing output file..." />
|
||||
<Exec Command="signtool.exe sign /sha1 "%ManifestCertificateThumbprint%" /fd sha256 /tr "%ManifestTimestampRFC3161Url%" /td sha256 /q "$(TargetPath)"" />
|
||||
<Target Name="SignLocal" Condition="('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary') and '$(ManifestCertificateThumbprint)' != ''" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Exec Command="signtool.exe sign /sha1 "$(ManifestCertificateThumbprint)" /fd SHA256 /tr "$(ManifestTimestampRFC3161Url)" /td SHA256 /q "$(TargetPath)"" />
|
||||
<Touch Files="$(IntDir)$(TargetName).sign" AlwaysCreate="true" />
|
||||
</Target>
|
||||
<Target Name="SignAzure" Condition="('$(ConfigurationType)' == 'Application' or '$(ConfigurationType)' == 'DynamicLibrary') and exists('$(APPDATA)\Microsoft.Trusted.Signing.Client.json')" AfterTargets="_Manifest" BeforeTargets="RegisterOutput" Inputs="$(OutDir)$(TargetName)$(TargetExt)" Outputs="$(IntDir)$(TargetName).sign">
|
||||
<Exec Command="signtool.exe sign /dlib "$(USERPROFILE)\.nuget\packages\microsoft.trusted.signing.client\1.0.53\bin\$(PreferredToolArchitecture)\Azure.CodeSigning.Dlib.dll" /dmdf "$(APPDATA)\Microsoft.Trusted.Signing.Client.json" /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /q "$(TargetPath)"" />
|
||||
<Touch Files="$(IntDir)$(TargetName).sign" AlwaysCreate="true" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -12,8 +12,8 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<_PropertySheetDisplayName>ZRCola Common</_PropertySheetDisplayName>
|
||||
<IntDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration).$(PlatformToolset)\</IntDir>
|
||||
<OutDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration).$(PlatformToolset)\</OutDir>
|
||||
<IntDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration)\</IntDir>
|
||||
<OutDir>temp\$(MSBuildProjectName).$(Platform).$(Configuration)\</OutDir>
|
||||
<IncludePath>$(WXWIN)\include\msvc;$(WXWIN)\include;$(IncludePath)</IncludePath>
|
||||
<SourcePath>$(WXWIN)\src\aui;$(WXWIN)\src\cocoa;$(WXWIN)\src\common;$(WXWIN)\src\dfb;$(WXWIN)\src\expat;$(WXWIN)\src\generic;$(WXWIN)\src\gtk;$(WXWIN)\src\gtk1;$(WXWIN)\src\html;$(WXWIN)\src\jpeg;$(WXWIN)\src\motif;$(WXWIN)\src\msdos;$(WXWIN)\src\msw;$(WXWIN)\src\os2;$(WXWIN)\src\osx;$(WXWIN)\src\png;$(WXWIN)\src\propgrid;$(WXWIN)\src\regex;$(WXWIN)\src\ribbon;$(WXWIN)\src\richtext;$(WXWIN)\src\stc;$(WXWIN)\src\tiff;$(WXWIN)\src\univ;$(WXWIN)\src\unix;$(WXWIN)\src\x11;$(WXWIN)\src\xml;$(WXWIN)\src\xrc;$(WXWIN)\src\zlib;$(SourcePath)</SourcePath>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
@@ -31,6 +31,7 @@
|
||||
<DisableSpecificWarnings>4100;4505</DisableSpecificWarnings>
|
||||
<SupportJustMyCode>false</SupportJustMyCode>
|
||||
<EnablePREfast>true</EnablePREfast>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
|
||||
17
include/props.mak
Normal file
17
include/props.mak
Normal file
@@ -0,0 +1,17 @@
|
||||
ifeq ($(PREFIX),)
|
||||
PREFIX := /usr/local
|
||||
endif
|
||||
CPPFLAGS := $(CPPFLAGS) -MMD -MP -DPREFIX='"$(PREFIX)"'
|
||||
ifeq ($(CFG),Debug)
|
||||
CPPFLAGS := $(CPPFLAGS) -D_DEBUG
|
||||
CFLAGS := $(CFLAGS) -Og -g
|
||||
CXXFLAGS := $(CXXFLAGS) -Og -g
|
||||
else
|
||||
CPPFLAGS := $(CPPFLAGS) -DNDEBUG
|
||||
CFLAGS := $(CFLAGS) -O3 -fdata-sections -ffunction-sections
|
||||
CXXFLAGS := $(CXXFLAGS) -O3 -fdata-sections -ffunction-sections
|
||||
LDFLAGS := $(LDFLAGS) -Wl,--gc-sections
|
||||
endif
|
||||
|
||||
OBJS := $(SRCS:%=%.o)
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
5
include/targets.mak
Normal file
5
include/targets.mak
Normal file
@@ -0,0 +1,5 @@
|
||||
%.h.gch: %.h
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -x c++-header -o $@ -c $<
|
||||
|
||||
%.cpp.o: %.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $<
|
||||
@@ -9,7 +9,7 @@
|
||||
// Product version as a single DWORD
|
||||
// Note: Used for version comparison within C/C++ code.
|
||||
//
|
||||
#define PRODUCT_VERSION 0x02060000
|
||||
#define PRODUCT_VERSION 0x02070100
|
||||
|
||||
//
|
||||
// Product version by components
|
||||
@@ -18,27 +18,27 @@
|
||||
// separately.
|
||||
//
|
||||
#define PRODUCT_VERSION_MAJ 2
|
||||
#define PRODUCT_VERSION_MIN 6
|
||||
#define PRODUCT_VERSION_REV 0
|
||||
#define PRODUCT_VERSION_MIN 7
|
||||
#define PRODUCT_VERSION_REV 1
|
||||
#define PRODUCT_VERSION_BUILD 0
|
||||
|
||||
//
|
||||
// Human readable product version and build year for UI
|
||||
//
|
||||
#define PRODUCT_VERSION_STR "2.6"
|
||||
#define PRODUCT_BUILD_YEAR_STR "2022"
|
||||
#define PRODUCT_VERSION_STR "2.7.1"
|
||||
#define PRODUCT_BUILD_YEAR_STR "2025"
|
||||
|
||||
//
|
||||
// Numerical version presentation for ProductVersion propery in
|
||||
// Numerical version presentation for ProductVersion property in
|
||||
// MSI packages (syntax: N.N[.N[.N]])
|
||||
//
|
||||
#define PRODUCT_VERSION_INST "2.6"
|
||||
#define PRODUCT_VERSION_INST "2.7.1"
|
||||
|
||||
//
|
||||
// The product code for ProductCode property in MSI packages
|
||||
// Replace with new on every version change, regardless how minor it is.
|
||||
//
|
||||
#define PRODUCT_VERSION_GUID "{B7743708-2694-4BA7-8FC4-0797C071C4F8}"
|
||||
#define PRODUCT_VERSION_GUID "{9423BEC3-3159-4130-8C3E-48D5DE24D48A}"
|
||||
|
||||
//
|
||||
// The product vendor and application name for configuration keeping.
|
||||
|
||||
Submodule lib/WinStd updated: 328646b2d9...acf2419ef0
33
lib/libZRCola/build/Makefile
Normal file
33
lib/libZRCola/build/Makefile
Normal file
@@ -0,0 +1,33 @@
|
||||
CPPFLAGS := $(CPPFLAGS) -I../../stdex/include
|
||||
SRCS := \
|
||||
../src/character.cpp \
|
||||
../src/common.cpp \
|
||||
../src/highlight.cpp \
|
||||
../src/language.cpp \
|
||||
../src/mapping.cpp \
|
||||
../src/pch.cpp \
|
||||
../src/tag.cpp \
|
||||
../src/translate.cpp
|
||||
|
||||
include ../../../include/props.mak
|
||||
|
||||
.PHONY: all
|
||||
all: ../lib/libZRCola.a
|
||||
|
||||
../lib/libZRCola.a: ../src/pch.h.gch $(OBJS)
|
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
.PHONY: test
|
||||
test: ../test/test
|
||||
../test/test
|
||||
|
||||
../test/test: ../lib/libZRCola.a
|
||||
$(CXX) $(CPPFLAGS) -I../../stdex/include -I../include $(CXXFLAGS) -L../lib -o $@ ../test/test.cpp -lstdc++ -lZRCola
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-rm -r ../src/*.{d,gch,o} ../lib/libZRCola.a ../test/*.d ../test/test
|
||||
|
||||
include ../../../include/targets.mak
|
||||
-include $(DEPS)
|
||||
-include ../test/test.d
|
||||
@@ -66,7 +66,6 @@
|
||||
<ClCompile Include="..\src\common.cpp" />
|
||||
<ClCompile Include="..\src\highlight.cpp" />
|
||||
<ClCompile Include="..\src\language.cpp" />
|
||||
<ClCompile Include="..\src\mapping.cpp" />
|
||||
<ClCompile Include="..\src\pch.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
|
||||
@@ -14,9 +14,6 @@
|
||||
<ClCompile Include="..\src\pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\mapping.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\translate.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -7,8 +7,6 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <stdex/idrec>
|
||||
|
||||
#include <functional>
|
||||
|
||||
#pragma warning(push)
|
||||
@@ -29,7 +27,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Highlight set ID
|
||||
///
|
||||
typedef unsigned __int16 hlghtsetid_t;
|
||||
typedef uint16_t hlghtsetid_t;
|
||||
|
||||
///
|
||||
/// Highlight database
|
||||
@@ -43,15 +41,15 @@ namespace ZRCola {
|
||||
///
|
||||
struct highlight {
|
||||
public:
|
||||
hlghtsetid_t set; ///< Highlight set ID
|
||||
hlghtsetid_t set; ///< Highlight set ID
|
||||
|
||||
protected:
|
||||
unsigned __int16 chr_to; ///< Character end in \c data
|
||||
wchar_t data[]; ///< Character
|
||||
uint16_t chr_to; ///< Character end in \c data
|
||||
char_t data[]; ///< Character
|
||||
|
||||
private:
|
||||
inline highlight(_In_ const highlight &other);
|
||||
inline highlight& operator=(_In_ const highlight &other);
|
||||
highlight(_In_ const highlight &other);
|
||||
highlight& operator=(_In_ const highlight &other);
|
||||
|
||||
public:
|
||||
///
|
||||
@@ -61,23 +59,23 @@ namespace ZRCola {
|
||||
/// \param[in] chr Character
|
||||
/// \param[in] chr_len Number of UTF-16 characters in \p chr
|
||||
///
|
||||
inline highlight(
|
||||
highlight(
|
||||
_In_opt_ hlghtsetid_t set = 0,
|
||||
_In_opt_z_count_(chr_len) const wchar_t *chr = NULL,
|
||||
_In_opt_z_count_(chr_len) const char_t *chr = NULL,
|
||||
_In_opt_ size_t chr_len = 0)
|
||||
{
|
||||
this->set = set;
|
||||
this->chr_to = static_cast<unsigned __int16>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(wchar_t)*chr_len);
|
||||
this->chr_to = static_cast<uint16_t>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(char_t)*chr_len);
|
||||
}
|
||||
|
||||
inline const wchar_t* chr () const { return data; };
|
||||
inline wchar_t* chr () { return data; };
|
||||
inline const wchar_t* chr_end() const { return data + chr_to; };
|
||||
inline wchar_t* chr_end() { return data + chr_to; };
|
||||
inline unsigned __int16 chr_len() const { return chr_to; };
|
||||
const char_t* chr () const { return data; };
|
||||
char_t* chr () { return data; };
|
||||
const char_t* chr_end() const { return data + chr_to; };
|
||||
char_t* chr_end() { return data + chr_to; };
|
||||
uint16_t chr_len() const { return chr_to; };
|
||||
|
||||
inline wchar_t chr_at(_In_ size_t i) const
|
||||
char_t chr_at(_In_ size_t i) const
|
||||
{
|
||||
return i < chr_to ? data[i] : 0;
|
||||
}
|
||||
@@ -87,7 +85,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Highlight index
|
||||
///
|
||||
class indexChr : public index<unsigned __int16, unsigned __int32, highlight>
|
||||
class indexChr : public index<uint16_t, uint32_t, highlight>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -95,7 +93,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexChr(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, highlight>(h) {}
|
||||
indexChr(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, highlight>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two highlights by string (for searching)
|
||||
@@ -113,8 +111,8 @@ namespace ZRCola {
|
||||
int r = ZRCola::CompareString(a.chr(), a.chr_len(), b.chr(), b.chr_len());
|
||||
if (r != 0) return r;
|
||||
|
||||
if (a.set < b.set) return -1;
|
||||
else if (a.set > b.set) return +1;
|
||||
if (a.set < b.set) return -1;
|
||||
if (a.set > b.set) return +1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -138,18 +136,18 @@ namespace ZRCola {
|
||||
} idxChr; ///< Highlight index
|
||||
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Highlight data
|
||||
std::vector<uint16_t> data; ///< Highlight data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline highlight_db() : idxChr(data) {}
|
||||
highlight_db() : idxChr(data) {}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
inline void clear()
|
||||
void clear()
|
||||
{
|
||||
idxChr.clear();
|
||||
data .clear();
|
||||
@@ -162,79 +160,73 @@ namespace ZRCola {
|
||||
/// \param[in] inputMax Length of the input string in characters. Can be (size_t)-1 if \p input is zero terminated.
|
||||
/// \param[in] callback Function to be called on highlight switch
|
||||
///
|
||||
void Highlight(_In_z_count_(inputMax) const wchar_t* input, _In_ size_t inputMax, _In_ std::function<void (hlghtsetid_t set, size_t start, size_t end)> callback) const;
|
||||
void Highlight(_In_z_count_(inputMax) const char_t* input, _In_ size_t inputMax, _In_ std::function<void (hlghtsetid_t set, size_t start, size_t end)> callback) const;
|
||||
|
||||
///
|
||||
/// Writes highlight database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Highlight database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const highlight_db& db)
|
||||
{
|
||||
// Write highlight index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads highlight database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Highlight database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ highlight_db& db)
|
||||
{
|
||||
// Read highlight index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<highlight_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> highlight_rec;
|
||||
};
|
||||
|
||||
|
||||
const ZRCola::recordid_t ZRCola::highlight_rec::id = *(ZRCola::recordid_t*)"HGH";
|
||||
|
||||
|
||||
///
|
||||
/// Writes highlight database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Highlight database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::highlight_db &db)
|
||||
{
|
||||
// Write highlight index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads highlight database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Highlight database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::highlight_db &db)
|
||||
{
|
||||
// Read highlight index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
27
lib/libZRCola/include/zrcola/idrec.h
Normal file
27
lib/libZRCola/include/zrcola/idrec.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "character.h"
|
||||
#include "highlight.h"
|
||||
#include "language.h"
|
||||
#include "tag.h"
|
||||
#include "translate.h"
|
||||
|
||||
#include <stdex/idrec.hpp>
|
||||
|
||||
namespace ZRCola {
|
||||
typedef stdex::idrec::record<character_db, recordid_t, 0x524843 /*"CHR"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> character_rec;
|
||||
typedef stdex::idrec::record<chrblk_db, recordid_t, 0x4c4243 /*"CBL"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> chrblk_rec;
|
||||
typedef stdex::idrec::record<highlight_db, recordid_t, 0x484748 /*"HGH"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> highlight_rec;
|
||||
typedef stdex::idrec::record<langchar_db, recordid_t, 0x432d4c /*"L-C"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> langchar_rec;
|
||||
typedef stdex::idrec::record<language_db, recordid_t, 0x474e4c /*"LNG"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> language_rec;
|
||||
typedef stdex::idrec::record<chrtag_db, recordid_t, 0x542d43 /*"C-T"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> chrtag_rec;
|
||||
typedef stdex::idrec::record<tagname_db, recordid_t, 0x4e4754 /*"TGN"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> tagname_rec;
|
||||
typedef stdex::idrec::record<translation_db, recordid_t, 0x4e5254 /*"TRN"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> translation_rec;
|
||||
typedef stdex::idrec::record<transet_db, recordid_t, 0x455354 /*"TSE"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> transet_rec;
|
||||
typedef stdex::idrec::record<transeq_db, recordid_t, 0x515354 /*"TSQ"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> transeq_rec;
|
||||
}
|
||||
@@ -1,436 +1,427 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <stdex/idrec>
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4200)
|
||||
#pragma warning(disable: 4251)
|
||||
#pragma warning(disable: 4512)
|
||||
|
||||
|
||||
namespace ZRCola {
|
||||
///
|
||||
/// Language Character Database
|
||||
///
|
||||
class langchar_db {
|
||||
public:
|
||||
#pragma pack(push)
|
||||
#pragma pack(2)
|
||||
///
|
||||
/// Character data
|
||||
///
|
||||
struct langchar {
|
||||
public:
|
||||
langid_t lang; ///< Language ID
|
||||
|
||||
protected:
|
||||
unsigned __int16 chr_to; ///< Character end in \c data
|
||||
wchar_t data[]; ///< Character
|
||||
|
||||
private:
|
||||
inline langchar(_In_ const langchar &other);
|
||||
inline langchar& operator=(_In_ const langchar &other);
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the language character
|
||||
///
|
||||
/// \param[in] lang Character language
|
||||
/// \param[in] chr Character
|
||||
/// \param[in] chr_len Number of UTF-16 characters in \p chr
|
||||
///
|
||||
inline langchar(
|
||||
_In_opt_ langid_t lang = langid_t::blank,
|
||||
_In_opt_z_count_(chr_len) const wchar_t *chr = NULL,
|
||||
_In_opt_ size_t chr_len = 0)
|
||||
{
|
||||
this->lang = lang;
|
||||
this->chr_to = static_cast<unsigned __int16>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(wchar_t)*chr_len);
|
||||
}
|
||||
|
||||
inline const wchar_t* chr () const { return data; };
|
||||
inline wchar_t* chr () { return data; };
|
||||
inline const wchar_t* chr_end() const { return data + chr_to; };
|
||||
inline wchar_t* chr_end() { return data + chr_to; };
|
||||
inline unsigned __int16 chr_len() const { return chr_to; };
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
///
|
||||
/// Character index
|
||||
///
|
||||
class indexChr : public index<unsigned __int16, unsigned __int32, langchar>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs the index
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexChr(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, langchar>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two characters by ID (for searching)
|
||||
///
|
||||
/// \param[in] a Pointer to first element
|
||||
/// \param[in] b Pointer to second element
|
||||
///
|
||||
/// \returns
|
||||
/// - <0 when a < b
|
||||
/// - =0 when a == b
|
||||
/// - >0 when a > b
|
||||
///
|
||||
virtual int compare(_In_ const langchar &a, _In_ const langchar &b) const
|
||||
{
|
||||
int r = ZRCola::CompareString(a.chr(), a.chr_len(), b.chr(), b.chr_len());
|
||||
if (r != 0) return r;
|
||||
|
||||
if (a.lang < b.lang) return -1;
|
||||
else if (a.lang > b.lang) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxChr; ///< Character index
|
||||
|
||||
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
///
|
||||
/// Language Index
|
||||
///
|
||||
class indexLang : public index<unsigned __int16, unsigned __int32, langchar>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs the index
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexLang(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, langchar>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two languages by ID (for searching)
|
||||
///
|
||||
/// \param[in] a Pointer to first element
|
||||
/// \param[in] b Pointer to second element
|
||||
///
|
||||
/// \returns
|
||||
/// - <0 when a < b
|
||||
/// - =0 when a == b
|
||||
/// - >0 when a > b
|
||||
///
|
||||
virtual int compare(_In_ const langchar &a, _In_ const langchar &b) const
|
||||
{
|
||||
if (a.lang < b.lang) return -1;
|
||||
else if (a.lang > b.lang) return 1;
|
||||
|
||||
int r = ZRCola::CompareString(a.chr, a.chr_len(), b.chr(), b.chr_len());
|
||||
if (r != 0) return r;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxLang; ///< Language index
|
||||
#endif
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Character data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline langchar_db() : idxChr(data)
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
, idxLang(data)
|
||||
#endif
|
||||
{}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
inline void clear()
|
||||
{
|
||||
idxChr .clear();
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
idxLang.clear();
|
||||
#endif
|
||||
data .clear();
|
||||
}
|
||||
|
||||
///
|
||||
/// Tests presence of character in the given language
|
||||
///
|
||||
/// \param[in] chr Pointer to character
|
||||
/// \param[in] chr_end Pointer to character end
|
||||
/// \param[in] lang Language
|
||||
///
|
||||
/// \returns
|
||||
/// - \c true when character is used in language
|
||||
/// - \c false otherwise
|
||||
bool IsLocalCharacter(_In_ const wchar_t *chr, _In_ const wchar_t *chr_end, _In_ langid_t lang) const;
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<langchar_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> langchar_rec;
|
||||
|
||||
|
||||
///
|
||||
/// Language database
|
||||
///
|
||||
class language_db {
|
||||
public:
|
||||
#pragma pack(push)
|
||||
#pragma pack(2)
|
||||
///
|
||||
/// Language data
|
||||
///
|
||||
struct language {
|
||||
public:
|
||||
langid_t lang; ///< Language ID
|
||||
|
||||
protected:
|
||||
unsigned __int16 name_to; ///< Language name end in \c data
|
||||
wchar_t data[]; ///< Language name
|
||||
|
||||
private:
|
||||
inline language(_In_ const language &other);
|
||||
inline language& operator=(_In_ const language &other);
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the language
|
||||
///
|
||||
/// \param[in] lang Language ID
|
||||
/// \param[in] name Language name
|
||||
/// \param[in] name_len Number of UTF-16 characters in \p name
|
||||
///
|
||||
inline language(
|
||||
_In_opt_ langid_t lang = langid_t::blank,
|
||||
_In_opt_z_count_(name_len) const wchar_t *name = NULL,
|
||||
_In_opt_ size_t name_len = 0)
|
||||
{
|
||||
this->lang = lang;
|
||||
this->name_to = static_cast<unsigned __int16>(name_len);
|
||||
if (name && name_len) memcpy(this->data, name, sizeof(wchar_t)*name_len);
|
||||
}
|
||||
|
||||
inline const wchar_t* name () const { return data; };
|
||||
inline wchar_t* name () { return data; };
|
||||
inline const wchar_t* name_end() const { return data + name_to; };
|
||||
inline wchar_t* name_end() { return data + name_to; };
|
||||
inline unsigned __int16 name_len() const { return name_to; };
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
///
|
||||
/// Language index
|
||||
///
|
||||
class indexLang : public index<unsigned __int16, unsigned __int32, language>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs the index
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexLang(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, language>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two languages by ID (for searching)
|
||||
///
|
||||
/// \param[in] a Pointer to first element
|
||||
/// \param[in] b Pointer to second element
|
||||
///
|
||||
/// \returns
|
||||
/// - <0 when a < b
|
||||
/// - =0 when a == b
|
||||
/// - >0 when a > b
|
||||
///
|
||||
virtual int compare(_In_ const language &a, _In_ const language &b) const
|
||||
{
|
||||
if (a.lang < b.lang) return -1;
|
||||
else if (a.lang > b.lang) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxLang; ///< Language index
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Language data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline language_db() : idxLang(data) {}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
inline void clear()
|
||||
{
|
||||
idxLang.clear();
|
||||
data .clear();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<language_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> language_rec;
|
||||
};
|
||||
|
||||
|
||||
const ZRCola::recordid_t ZRCola::langchar_rec::id = *(ZRCola::recordid_t*)"L-C";
|
||||
const ZRCola::recordid_t ZRCola::language_rec::id = *(ZRCola::recordid_t*)"LNG";
|
||||
|
||||
|
||||
///
|
||||
/// Writes language character database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Language character database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::langchar_db &db)
|
||||
{
|
||||
// Write character index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
// Write language index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxLang;
|
||||
#endif
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads language character database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Language character database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::langchar_db &db)
|
||||
{
|
||||
// Read character index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
// Read language index.
|
||||
stream >> db.idxLang;
|
||||
if (!stream.good()) return stream;
|
||||
#endif
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Writes language database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Language database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::language_db &db)
|
||||
{
|
||||
// Write language index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxLang;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads language database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Language database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::language_db &db)
|
||||
{
|
||||
// Read language index.
|
||||
stream >> db.idxLang;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4200)
|
||||
#pragma warning(disable: 4251)
|
||||
#pragma warning(disable: 4512)
|
||||
|
||||
|
||||
namespace ZRCola {
|
||||
///
|
||||
/// Language Character Database
|
||||
///
|
||||
class langchar_db {
|
||||
public:
|
||||
#pragma pack(push)
|
||||
#pragma pack(2)
|
||||
///
|
||||
/// Character data
|
||||
///
|
||||
struct langchar {
|
||||
public:
|
||||
langid_t lang; ///< Language ID
|
||||
|
||||
protected:
|
||||
uint16_t chr_to; ///< Character end in \c data
|
||||
char_t data[]; ///< Character
|
||||
|
||||
private:
|
||||
langchar(_In_ const langchar &other);
|
||||
langchar& operator=(_In_ const langchar &other);
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the language character
|
||||
///
|
||||
/// \param[in] lang Character language
|
||||
/// \param[in] chr Character
|
||||
/// \param[in] chr_len Number of UTF-16 characters in \p chr
|
||||
///
|
||||
langchar(
|
||||
_In_opt_ langid_t lang = langid_t(),
|
||||
_In_opt_z_count_(chr_len) const char_t *chr = NULL,
|
||||
_In_opt_ size_t chr_len = 0)
|
||||
{
|
||||
this->lang = lang;
|
||||
this->chr_to = static_cast<uint16_t>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(char_t)*chr_len);
|
||||
}
|
||||
|
||||
const char_t* chr () const { return data; };
|
||||
char_t* chr () { return data; };
|
||||
const char_t* chr_end() const { return data + chr_to; };
|
||||
char_t* chr_end() { return data + chr_to; };
|
||||
uint16_t chr_len() const { return chr_to; };
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
///
|
||||
/// Character index
|
||||
///
|
||||
class indexChr : public index<uint16_t, uint32_t, langchar>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs the index
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexChr(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, langchar>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two characters by ID (for searching)
|
||||
///
|
||||
/// \param[in] a Pointer to first element
|
||||
/// \param[in] b Pointer to second element
|
||||
///
|
||||
/// \returns
|
||||
/// - <0 when a < b
|
||||
/// - =0 when a == b
|
||||
/// - >0 when a > b
|
||||
///
|
||||
virtual int compare(_In_ const langchar &a, _In_ const langchar &b) const
|
||||
{
|
||||
int r = ZRCola::CompareString(a.chr(), a.chr_len(), b.chr(), b.chr_len());
|
||||
if (r != 0) return r;
|
||||
|
||||
if (a.lang < b.lang) return -1;
|
||||
if (a.lang > b.lang) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxChr; ///< Character index
|
||||
|
||||
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
///
|
||||
/// Language Index
|
||||
///
|
||||
class indexLang : public index<uint16_t, uint32_t, langchar>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs the index
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexLang(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, langchar>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two languages by ID (for searching)
|
||||
///
|
||||
/// \param[in] a Pointer to first element
|
||||
/// \param[in] b Pointer to second element
|
||||
///
|
||||
/// \returns
|
||||
/// - <0 when a < b
|
||||
/// - =0 when a == b
|
||||
/// - >0 when a > b
|
||||
///
|
||||
virtual int compare(_In_ const langchar &a, _In_ const langchar &b) const
|
||||
{
|
||||
if (a.lang < b.lang) return -1;
|
||||
if (a.lang > b.lang) return 1;
|
||||
|
||||
int r = ZRCola::CompareString(a.chr, a.chr_len(), b.chr(), b.chr_len());
|
||||
if (r != 0) return r;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxLang; ///< Language index
|
||||
#endif
|
||||
|
||||
std::vector<uint16_t> data; ///< Character data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
langchar_db() : idxChr(data)
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
, idxLang(data)
|
||||
#endif
|
||||
{}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
void clear()
|
||||
{
|
||||
idxChr .clear();
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
idxLang.clear();
|
||||
#endif
|
||||
data .clear();
|
||||
}
|
||||
|
||||
///
|
||||
/// Tests presence of character in the given language
|
||||
///
|
||||
/// \param[in] chr Pointer to character
|
||||
/// \param[in] chr_end Pointer to character end
|
||||
/// \param[in] lang Language
|
||||
///
|
||||
/// \returns
|
||||
/// - \c true when character is used in language
|
||||
/// - \c false otherwise
|
||||
bool IsLocalCharacter(_In_ const char_t *chr, _In_ const char_t *chr_end, _In_ langid_t lang) const;
|
||||
|
||||
|
||||
///
|
||||
/// Writes language character database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Language character database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const langchar_db& db)
|
||||
{
|
||||
// Write character index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
// Write language index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxLang;
|
||||
#endif
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads language character database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Language character database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ langchar_db& db)
|
||||
{
|
||||
// Read character index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
|
||||
// Read language index.
|
||||
stream >> db.idxLang;
|
||||
if (!stream.good()) return stream;
|
||||
#endif
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Language database
|
||||
///
|
||||
class language_db {
|
||||
public:
|
||||
#pragma pack(push)
|
||||
#pragma pack(2)
|
||||
///
|
||||
/// Language data
|
||||
///
|
||||
struct language {
|
||||
public:
|
||||
langid_t lang; ///< Language ID
|
||||
|
||||
protected:
|
||||
uint16_t name_to; ///< Language name end in \c data
|
||||
char_t data[]; ///< Language name
|
||||
|
||||
private:
|
||||
language(_In_ const language &other);
|
||||
language& operator=(_In_ const language &other);
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the language
|
||||
///
|
||||
/// \param[in] lang Language ID
|
||||
/// \param[in] name Language name
|
||||
/// \param[in] name_len Number of UTF-16 characters in \p name
|
||||
///
|
||||
language(
|
||||
_In_opt_ langid_t lang = langid_t(),
|
||||
_In_opt_z_count_(name_len) const char_t *name = NULL,
|
||||
_In_opt_ size_t name_len = 0)
|
||||
{
|
||||
this->lang = lang;
|
||||
this->name_to = static_cast<uint16_t>(name_len);
|
||||
if (name && name_len) memcpy(this->data, name, sizeof(char_t)*name_len);
|
||||
}
|
||||
|
||||
const char_t* name () const { return data; };
|
||||
char_t* name () { return data; };
|
||||
const char_t* name_end() const { return data + name_to; };
|
||||
char_t* name_end() { return data + name_to; };
|
||||
uint16_t name_len() const { return name_to; };
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
///
|
||||
/// Language index
|
||||
///
|
||||
class indexLang : public index<uint16_t, uint32_t, language>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs the index
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexLang(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, language>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two languages by ID (for searching)
|
||||
///
|
||||
/// \param[in] a Pointer to first element
|
||||
/// \param[in] b Pointer to second element
|
||||
///
|
||||
/// \returns
|
||||
/// - <0 when a < b
|
||||
/// - =0 when a == b
|
||||
/// - >0 when a > b
|
||||
///
|
||||
virtual int compare(_In_ const language &a, _In_ const language &b) const
|
||||
{
|
||||
if (a.lang < b.lang) return -1;
|
||||
if (a.lang > b.lang) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxLang; ///< Language index
|
||||
|
||||
std::vector<uint16_t> data; ///< Language data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
language_db() : idxLang(data) {}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
void clear()
|
||||
{
|
||||
idxLang.clear();
|
||||
data .clear();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Writes language database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Language database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const language_db& db)
|
||||
{
|
||||
// Write language index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxLang;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads language database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Language database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ language_db& db)
|
||||
{
|
||||
// Read language index.
|
||||
stream >> db.idxLang;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <stdex/idrec>
|
||||
#include <assert.h>
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
@@ -21,7 +20,7 @@
|
||||
|
||||
|
||||
namespace ZRCola {
|
||||
typedef unsigned __int16 tagid_t;
|
||||
typedef uint16_t tagid_t;
|
||||
|
||||
///
|
||||
/// Character Tag Database
|
||||
@@ -35,15 +34,15 @@ namespace ZRCola {
|
||||
///
|
||||
struct chrtag {
|
||||
public:
|
||||
tagid_t tag; ///< Tag ID
|
||||
tagid_t tag; ///< Tag ID
|
||||
|
||||
protected:
|
||||
unsigned __int16 chr_to; ///< Character end in \c data
|
||||
wchar_t data[]; ///< Character
|
||||
uint16_t chr_to; ///< Character end in \c data
|
||||
char_t data[]; ///< Character
|
||||
|
||||
private:
|
||||
inline chrtag(_In_ const chrtag &other);
|
||||
inline chrtag& operator=(_In_ const chrtag &other);
|
||||
chrtag(_In_ const chrtag &other);
|
||||
chrtag& operator=(_In_ const chrtag &other);
|
||||
|
||||
public:
|
||||
///
|
||||
@@ -53,28 +52,28 @@ namespace ZRCola {
|
||||
/// \param[in] chr_len Number of UTF-16 characters in \p chr
|
||||
/// \param[in] tag Tag
|
||||
///
|
||||
inline chrtag(
|
||||
_In_opt_z_count_(chr_len) const wchar_t *chr = NULL,
|
||||
chrtag(
|
||||
_In_opt_z_count_(chr_len) const char_t *chr = NULL,
|
||||
_In_opt_ size_t chr_len = 0,
|
||||
_In_opt_ tagid_t tag = 0)
|
||||
{
|
||||
this->tag = tag;
|
||||
this->chr_to = static_cast<unsigned __int16>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(wchar_t)*chr_len);
|
||||
this->chr_to = static_cast<uint16_t>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(char_t)*chr_len);
|
||||
}
|
||||
|
||||
inline const wchar_t* chr () const { return data; };
|
||||
inline wchar_t* chr () { return data; };
|
||||
inline const wchar_t* chr_end() const { return data + chr_to; };
|
||||
inline wchar_t* chr_end() { return data + chr_to; };
|
||||
inline unsigned __int16 chr_len() const { return chr_to; };
|
||||
const char_t* chr () const { return data; };
|
||||
char_t* chr () { return data; };
|
||||
const char_t* chr_end() const { return data + chr_to; };
|
||||
char_t* chr_end() { return data + chr_to; };
|
||||
uint16_t chr_len() const { return chr_to; };
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
///
|
||||
/// Character Index
|
||||
///
|
||||
class indexChr : public index<unsigned __int16, unsigned __int32, chrtag>
|
||||
class indexChr : public index<uint16_t, uint32_t, chrtag>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -82,7 +81,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexChr(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, chrtag>(h) {}
|
||||
indexChr(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrtag>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two character tags by character (for searching)
|
||||
@@ -130,7 +129,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Tag Index
|
||||
///
|
||||
class indexTag : public index<unsigned __int16, unsigned __int32, chrtag>
|
||||
class indexTag : public index<uint16_t, uint32_t, chrtag>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -138,7 +137,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexTag(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, chrtag>(h) {}
|
||||
indexTag(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrtag>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two character tags by tag (for searching)
|
||||
@@ -153,8 +152,8 @@ namespace ZRCola {
|
||||
///
|
||||
virtual int compare(_In_ const chrtag &a, _In_ const chrtag &b) const
|
||||
{
|
||||
if (a.tag < b.tag) return -1;
|
||||
else if (a.tag > b.tag) return 1;
|
||||
if (a.tag < b.tag) return -1;
|
||||
if (a.tag > b.tag) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -182,18 +181,18 @@ namespace ZRCola {
|
||||
}
|
||||
} idxTag; ///< Tag index
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Character tags data
|
||||
std::vector<uint16_t> data; ///< Character tags data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline chrtag_db() : idxChr(data), idxTag(data) {}
|
||||
chrtag_db() : idxChr(data), idxTag(data) {}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
inline void clear()
|
||||
void clear()
|
||||
{
|
||||
idxChr.clear();
|
||||
idxTag.clear();
|
||||
@@ -205,18 +204,89 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in ] tags Search tags
|
||||
/// \param[in ] ch_db Character database
|
||||
/// \param[in ] cats Set of categories from \p ch_db, character must be a part of
|
||||
/// \param[in ] blks Set of blocks from \p ch_db, character must be a part of
|
||||
/// \param[inout] hits (character, count) map to append hits to
|
||||
/// \param[in ] fn_abort Pointer to function to periodically test for search cancellation
|
||||
/// \param[in ] cookie Cookie for \p fn_abort call
|
||||
///
|
||||
bool Search(_In_ const std::map<tagid_t, unsigned __int16> &tags, _In_ const character_db &ch_db, _In_ const std::set<chrcatid_t> &cats, _Inout_ std::map<std::wstring, charrank_t> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie) = NULL, _In_opt_ void *cookie = NULL) const;
|
||||
bool Search(_In_ const std::map<tagid_t, uint16_t> &tags, _In_ const character_db &ch_db, _In_ const std::set<chrblkid_t> &blks, _Inout_ std::map<string_t, charrank_t> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie) = NULL, _In_opt_ void *cookie = NULL) const;
|
||||
|
||||
|
||||
///
|
||||
/// Writes character tag database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Character tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const chrtag_db& db)
|
||||
{
|
||||
// Write character index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
// Write tag index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxTag;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads character tag database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Character tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ chrtag_db& db)
|
||||
{
|
||||
// Read character index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read tag index.
|
||||
stream >> db.idxTag;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<chrtag_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> chrtag_rec;
|
||||
|
||||
|
||||
///
|
||||
/// Tag name database
|
||||
///
|
||||
@@ -229,16 +299,16 @@ namespace ZRCola {
|
||||
///
|
||||
struct tagname {
|
||||
public:
|
||||
tagid_t tag; ///< Tag ID
|
||||
LCID locale; ///< Locale ID
|
||||
tagid_t tag; ///< Tag ID
|
||||
uint32_t locale; ///< Locale ID
|
||||
|
||||
protected:
|
||||
unsigned __int16 name_to; ///< Tag name end in \c data
|
||||
wchar_t data[]; ///< Tag name
|
||||
uint16_t name_to; ///< Tag name end in \c data
|
||||
char_t data[]; ///< Tag name
|
||||
|
||||
private:
|
||||
inline tagname(_In_ const tagname &other);
|
||||
inline tagname& operator=(_In_ const tagname &other);
|
||||
tagname(_In_ const tagname &other);
|
||||
tagname& operator=(_In_ const tagname &other);
|
||||
|
||||
public:
|
||||
///
|
||||
@@ -249,23 +319,23 @@ namespace ZRCola {
|
||||
/// \param[in] name Tag name
|
||||
/// \param[in] name_len Number of UTF-16 characters in \p name
|
||||
///
|
||||
inline tagname(
|
||||
_In_opt_ tagid_t tag = 0,
|
||||
_In_opt_ LCID locale = MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT),
|
||||
_In_opt_z_count_(name_len) const wchar_t *name = NULL,
|
||||
_In_opt_ size_t name_len = 0)
|
||||
tagname(
|
||||
_In_opt_ tagid_t tag = 0,
|
||||
_In_opt_ uint32_t locale = 0,
|
||||
_In_opt_z_count_(name_len) const char_t *name = NULL,
|
||||
_In_opt_ size_t name_len = 0)
|
||||
{
|
||||
this->tag = tag;
|
||||
this->locale = locale;
|
||||
this->name_to = static_cast<unsigned __int16>(name_len);
|
||||
if (name && name_len) memcpy(this->data, name, sizeof(wchar_t)*name_len);
|
||||
this->name_to = static_cast<uint16_t>(name_len);
|
||||
if (name && name_len) memcpy(this->data, name, sizeof(char_t)*name_len);
|
||||
}
|
||||
|
||||
inline const wchar_t* name () const { return data; };
|
||||
inline wchar_t* name () { return data; };
|
||||
inline const wchar_t* name_end() const { return data + name_to; };
|
||||
inline wchar_t* name_end() { return data + name_to; };
|
||||
inline unsigned __int16 name_len() const { return name_to; };
|
||||
const char_t* name () const { return data; };
|
||||
char_t* name () { return data; };
|
||||
const char_t* name_end() const { return data + name_to; };
|
||||
char_t* name_end() { return data + name_to; };
|
||||
uint16_t name_len() const { return name_to; };
|
||||
|
||||
///
|
||||
/// Compares two names
|
||||
@@ -285,14 +355,28 @@ namespace ZRCola {
|
||||
/// The function does not treat \\0 characters as terminators for performance reasons.
|
||||
/// Therefore \p count_a and \p count_b must represent exact string lengths.
|
||||
///
|
||||
static inline int CompareName(LCID locale, const wchar_t *str_a, unsigned __int16 count_a, const wchar_t *str_b, unsigned __int16 count_b)
|
||||
static int CompareName(_In_ uint32_t locale, _In_z_count_(count_a) const char_t *str_a, _In_ uint16_t count_a, _In_z_count_(count_b) const char_t *str_b, _In_ uint16_t count_b)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
switch (::CompareString(locale, SORT_STRINGSORT | NORM_IGNORECASE, str_a, count_a, str_b, count_b)) {
|
||||
case CSTR_LESS_THAN : return -1;
|
||||
case CSTR_EQUAL : return 0;
|
||||
case CSTR_GREATER_THAN: return 1;
|
||||
default : assert(0); return -1;
|
||||
}
|
||||
#else
|
||||
assert(0); // TODO: 1. Should honour locale. 2. Should use ICU for lowercase conversion. 3. Should be UTF-16-aware.
|
||||
string_t
|
||||
a(str_a, count_a),
|
||||
b(str_b, count_b);
|
||||
auto tolower = [](char_t c){ return std::towlower(c); };
|
||||
std::transform(a.begin(), a.end(), a.begin(), tolower);
|
||||
std::transform(b.begin(), b.end(), b.begin(), tolower);
|
||||
auto &coll = std::use_facet<std::collate<char_t>>(std::locale());
|
||||
return coll.compare(
|
||||
a.data(), a.data() + a.size(),
|
||||
b.data(), b.data() + b.size());
|
||||
#endif
|
||||
}
|
||||
};
|
||||
#pragma pack(pop)
|
||||
@@ -300,7 +384,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Name index
|
||||
///
|
||||
class indexName : public index<unsigned __int16, unsigned __int32, tagname>
|
||||
class indexName : public index<uint16_t, uint32_t, tagname>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -309,7 +393,7 @@ namespace ZRCola {
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
/// \param[in] locale Locale used to perform tag name comparison
|
||||
///
|
||||
indexName(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, tagname>(h) {}
|
||||
indexName(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, tagname>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two tag names by locale and name (for searching)
|
||||
@@ -324,8 +408,8 @@ namespace ZRCola {
|
||||
///
|
||||
virtual int compare(_In_ const tagname &a, _In_ const tagname &b) const
|
||||
{
|
||||
if (a.locale < b.locale) return -1;
|
||||
else if (a.locale > b.locale) return 1;
|
||||
if (a.locale < b.locale) return -1;
|
||||
if (a.locale > b.locale) return 1;
|
||||
|
||||
int r = tagname::CompareName(a.locale, a.name(), a.name_len(), b.name(), b.name_len());
|
||||
if (r != 0) return r;
|
||||
@@ -362,7 +446,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Tag index
|
||||
///
|
||||
class indexTag : public index<unsigned __int16, unsigned __int32, tagname>
|
||||
class indexTag : public index<uint16_t, uint32_t, tagname>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -371,7 +455,7 @@ namespace ZRCola {
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
/// \param[in] locale Locale used to perform tag name comparison
|
||||
///
|
||||
indexTag(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, tagname>(h) {}
|
||||
indexTag(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, tagname>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two tag names by tag (for searching)
|
||||
@@ -386,28 +470,28 @@ namespace ZRCola {
|
||||
///
|
||||
virtual int compare(_In_ const tagname &a, _In_ const tagname &b) const
|
||||
{
|
||||
if (a.locale < b.locale) return -1;
|
||||
else if (a.locale > b.locale) return 1;
|
||||
if (a.locale < b.locale) return -1;
|
||||
if (a.locale > b.locale) return 1;
|
||||
|
||||
if (a.tag < b.tag) return -1;
|
||||
else if (a.tag > b.tag) return 1;
|
||||
if (a.tag < b.tag) return -1;
|
||||
if (a.tag > b.tag) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
} idxTag; ///< Tag index
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Tag data
|
||||
std::vector<uint16_t> data; ///< Tag data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline tagname_db() : idxName(data), idxTag(data) {}
|
||||
tagname_db() : idxName(data), idxTag(data) {}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
inline void clear()
|
||||
void clear()
|
||||
{
|
||||
idxName.clear();
|
||||
idxTag .clear();
|
||||
@@ -423,161 +507,82 @@ namespace ZRCola {
|
||||
/// \param[in ] fn_abort Pointer to function to periodically test for search cancellation
|
||||
/// \param[in ] cookie Cookie for \p fn_abort call
|
||||
///
|
||||
bool Search(_In_z_ const wchar_t *str, _In_ LCID locale, _Inout_ std::map<tagid_t, unsigned __int16> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie) = NULL, _In_opt_ void *cookie = NULL) const;
|
||||
bool Search(_In_z_ const char_t *str, _In_ uint32_t locale, _Inout_ std::map<tagid_t, uint16_t> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie) = NULL, _In_opt_ void *cookie = NULL) const;
|
||||
|
||||
|
||||
///
|
||||
/// Writes tag database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const tagname_db& db)
|
||||
{
|
||||
// Write name index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxName;
|
||||
|
||||
// Write tag index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxTag;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads tag database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ tagname_db& db)
|
||||
{
|
||||
// Read name index.
|
||||
stream >> db.idxName;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read tag index.
|
||||
stream >> db.idxTag;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<tagname_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> tagname_rec;
|
||||
};
|
||||
|
||||
|
||||
const ZRCola::recordid_t ZRCola::chrtag_rec ::id = *(ZRCola::recordid_t*)"C-T";
|
||||
const ZRCola::recordid_t ZRCola::tagname_rec::id = *(ZRCola::recordid_t*)"TGN";
|
||||
|
||||
|
||||
///
|
||||
/// Writes character tag database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Character tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::chrtag_db &db)
|
||||
{
|
||||
// Write character index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
// Write tag index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxTag;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads character tag database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Character tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::chrtag_db &db)
|
||||
{
|
||||
// Read character index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read tag index.
|
||||
stream >> db.idxTag;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Writes tag database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::tagname_db &db)
|
||||
{
|
||||
// Write name index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxName;
|
||||
|
||||
// Write tag index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxTag;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads tag database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Tag database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::tagname_db &db)
|
||||
{
|
||||
// Read name index.
|
||||
stream >> db.idxName;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read tag index.
|
||||
stream >> db.idxTag;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1
lib/libZRCola/lib/.gitignore
vendored
Normal file
1
lib/libZRCola/lib/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/libZRCola.a
|
||||
3
lib/libZRCola/src/.gitignore
vendored
Normal file
3
lib/libZRCola/src/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/*.d
|
||||
/*.gch
|
||||
/*.o
|
||||
@@ -1,104 +1,123 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
const ZRCola::chrcatid_t ZRCola::chrcatid_t::blank = {};
|
||||
|
||||
|
||||
bool ZRCola::character_db::Search(_In_z_ const wchar_t *str, _In_ const std::set<chrcatid_t> &cats, _Inout_ std::map<std::wstring, charrank_t> &hits, _Inout_ std::map<std::wstring, charrank_t> &hits_sub, _In_opt_ bool (__cdecl *fn_abort)(void *cookie), _In_opt_ void *cookie) const
|
||||
{
|
||||
assert(str);
|
||||
|
||||
while (*str) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
// Skip white space.
|
||||
for (;;) {
|
||||
if (*str == 0)
|
||||
return true;
|
||||
else if (!iswspace(*str))
|
||||
break;
|
||||
else
|
||||
str++;
|
||||
}
|
||||
|
||||
// Get term.
|
||||
std::wstring term;
|
||||
if (*str == L'"') {
|
||||
const wchar_t *str_end = ++str;
|
||||
for (;;) {
|
||||
if (*str_end == 0) {
|
||||
term.assign(str, str_end);
|
||||
break;
|
||||
} else if (*str_end == L'"') {
|
||||
term.assign(str, str_end);
|
||||
str_end++;
|
||||
break;
|
||||
} else
|
||||
str_end++;
|
||||
}
|
||||
str = str_end;
|
||||
} else {
|
||||
const wchar_t *str_end = str + 1;
|
||||
for (; *str_end && !iswspace(*str_end); str_end++);
|
||||
term.assign(str, str_end);
|
||||
str = str_end;
|
||||
}
|
||||
|
||||
if (!term.empty()) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
// Find the term.
|
||||
std::transform(term.begin(), term.end(), term.begin(), std::towlower);
|
||||
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
const wchar_t *val;
|
||||
size_t val_len;
|
||||
|
||||
if (idxDsc.find(term.c_str(), term.size(), &val, &val_len)) {
|
||||
// The term was found.
|
||||
for (size_t i = 0, j = 0; i < val_len; i += j + 1) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
j = wcsnlen(val + i, val_len - i);
|
||||
if (cats.find(GetCharCat(val + i, j)) != cats.end()) {
|
||||
std::wstring c(val + i, j);
|
||||
auto idx = hits.find(c);
|
||||
if (idx == hits.end()) {
|
||||
// New character.
|
||||
hits.insert(std::make_pair(std::move(c), 1.0/val_len));
|
||||
} else {
|
||||
// Increase rating of existing character.
|
||||
idx->second += 1.0/val_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (idxDscSub.find(term.c_str(), term.size(), &val, &val_len)) {
|
||||
// The term was found in the sub-term index.
|
||||
for (size_t i = 0, j = 0; i < val_len; i += j + 1) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
j = wcsnlen(val + i, val_len - i);
|
||||
if (cats.find(GetCharCat(val + i, j)) != cats.end()) {
|
||||
std::wstring c(val + i, j);
|
||||
auto idx = hits_sub.find(c);
|
||||
if (idx == hits_sub.end()) {
|
||||
// New character.
|
||||
hits_sub.insert(std::make_pair(c, 1.0/val_len));
|
||||
} else {
|
||||
// Increase rating of existing character.
|
||||
idx->second += 1.0/val_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
_Use_decl_annotations_
|
||||
size_t ZRCola::wcslen(const char_t *str)
|
||||
{
|
||||
for (size_t i = 0; ; ++i)
|
||||
if (!str[i])
|
||||
return i;
|
||||
}
|
||||
|
||||
_Use_decl_annotations_
|
||||
size_t ZRCola::wcsnlen(const char_t *str, size_t count)
|
||||
{
|
||||
for (size_t i = 0; ; ++i)
|
||||
if (i >= count || !str[i])
|
||||
return i;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
_Use_decl_annotations_
|
||||
bool ZRCola::character_db::Search(const char_t *str, const std::set<chrblkid_t> &blks, std::map<string_t, charrank_t> &hits, std::map<string_t, charrank_t> &hits_sub, bool (__cdecl *fn_abort)(void *cookie), void *cookie) const
|
||||
{
|
||||
assert(str);
|
||||
|
||||
while (*str) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
// Skip white space.
|
||||
for (;;) {
|
||||
if (*str == 0)
|
||||
return true;
|
||||
else if (!iswspace(*str))
|
||||
break;
|
||||
else
|
||||
str++;
|
||||
}
|
||||
|
||||
// Get term.
|
||||
string_t term;
|
||||
if (*str == u'"') {
|
||||
const auto *str_end = ++str;
|
||||
for (;;) {
|
||||
if (*str_end == 0) {
|
||||
term.assign(str, str_end);
|
||||
break;
|
||||
} else if (*str_end == u'"') {
|
||||
term.assign(str, str_end);
|
||||
str_end++;
|
||||
break;
|
||||
} else
|
||||
str_end++;
|
||||
}
|
||||
str = str_end;
|
||||
} else {
|
||||
const auto *str_end = str + 1;
|
||||
for (; *str_end && !iswspace(*str_end); str_end++);
|
||||
term.assign(str, str_end);
|
||||
str = str_end;
|
||||
}
|
||||
|
||||
if (!term.empty()) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
// Find the term.
|
||||
std::transform(term.begin(), term.end(), term.begin(), std::towlower);
|
||||
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
const char_t *val;
|
||||
size_t val_len;
|
||||
|
||||
if (idxDsc.find(term.c_str(), term.size(), &val, &val_len)) {
|
||||
// The term was found.
|
||||
for (size_t i = 0, j = 0; i < val_len; i += j + 1) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
j = wcsnlen(val + i, val_len - i);
|
||||
if (blks.find(GetCharBlk(val + i, j)) != blks.end()) {
|
||||
string_t c(val + i, j);
|
||||
auto idx = hits.find(c);
|
||||
if (idx == hits.end()) {
|
||||
// New character.
|
||||
hits.insert(std::make_pair(std::move(c), 1.0/val_len));
|
||||
} else {
|
||||
// Increase rating of existing character.
|
||||
idx->second += 1.0/val_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (idxDscSub.find(term.c_str(), term.size(), &val, &val_len)) {
|
||||
// The term was found in the sub-term index.
|
||||
for (size_t i = 0, j = 0; i < val_len; i += j + 1) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
j = wcsnlen(val + i, val_len - i);
|
||||
if (blks.find(GetCharBlk(val + i, j)) != blks.end()) {
|
||||
string_t c(val + i, j);
|
||||
auto idx = hits_sub.find(c);
|
||||
if (idx == hits_sub.end()) {
|
||||
// New character.
|
||||
hits_sub.insert(std::make_pair(c, 1.0/val_len));
|
||||
} else {
|
||||
// Increase rating of existing character.
|
||||
idx->second += 1.0/val_len;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,81 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
const ZRCola::langid_t ZRCola::langid_t::blank = {};
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
_Use_decl_annotations_
|
||||
int ZRCola::CompareString(const char_t* str_a, size_t count_a, const char_t* str_b, size_t count_b)
|
||||
{
|
||||
for (size_t i = 0; ; i++) {
|
||||
if (i >= count_a && i >= count_b) return 0;
|
||||
else if (i >= count_a && i < count_b) return -1;
|
||||
else if (i < count_a && i >= count_b) return +1;
|
||||
else if (str_a[i] < str_b[i]) return -1;
|
||||
else if (str_a[i] > str_b[i]) return +1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
_Use_decl_annotations_
|
||||
inline std::string ZRCola::GetUnicodeDumpA(const char_t* str, size_t count, const char* sep)
|
||||
{
|
||||
std::string out;
|
||||
size_t sep_len = strlen(sep);
|
||||
size_t dump_len_max = sep_len + 4 + 1;
|
||||
char* dump;
|
||||
std::unique_ptr<char[]> dump_obj(dump = new char[dump_len_max]);
|
||||
if (count && str[0]) {
|
||||
size_t i = 0;
|
||||
static const char error[] = "????";
|
||||
int n = snprintf(dump, dump_len_max, "%04X", str[i++]);
|
||||
if (n >= 0)
|
||||
out.insert(out.end(), dump, dump + n);
|
||||
else
|
||||
out.insert(out.end(), error, error + std::size(error) - 1);
|
||||
while (i < count && str[i]) {
|
||||
n = snprintf(dump, dump_len_max, "%s%04X", sep, str[i++]);
|
||||
if (n >= 0)
|
||||
out.insert(out.end(), dump, dump + n);
|
||||
else {
|
||||
out.insert(out.end(), sep, sep + sep_len);
|
||||
out.insert(out.end(), error, error + std::size(error) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
_Use_decl_annotations_
|
||||
std::wstring ZRCola::GetUnicodeDumpW(const char_t* str, size_t count, const wchar_t* sep)
|
||||
{
|
||||
std::wstring out;
|
||||
size_t sep_len = ::wcslen(sep);
|
||||
size_t dump_len_max = sep_len + 4 + 1;
|
||||
wchar_t* dump;
|
||||
std::unique_ptr<wchar_t[]> dump_obj(dump = new wchar_t[dump_len_max]);
|
||||
if (count && str[0]) {
|
||||
size_t i = 0;
|
||||
static const wchar_t error[] = L"????";
|
||||
int n = swprintf(dump, dump_len_max, L"%04X", str[i++]);
|
||||
if (n >= 0)
|
||||
out.insert(out.end(), dump, dump + n);
|
||||
else
|
||||
out.insert(out.end(), error, error + std::size(error) - 1);
|
||||
while (i < count && str[i]) {
|
||||
n = swprintf(dump, dump_len_max, L"%s%04X", sep, str[i++]);
|
||||
if (n >= 0)
|
||||
out.insert(out.end(), dump, dump + n);
|
||||
else {
|
||||
out.insert(out.end(), sep, sep + sep_len);
|
||||
out.insert(out.end(), error, error + std::size(error) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "pch.h"
|
||||
|
||||
_Use_decl_annotations_
|
||||
void ZRCola::highlight_db::Highlight(const wchar_t* input, size_t inputMax, std::function<void (hlghtsetid_t set, size_t start, size_t end)> callback) const
|
||||
void ZRCola::highlight_db::Highlight(const char_t* input, size_t inputMax, std::function<void (hlghtsetid_t set, size_t start, size_t end)> callback) const
|
||||
{
|
||||
size_t start = 0;
|
||||
hlghtsetid_t set = ZRCOLA_HLGHTSETID_DEFAULT;
|
||||
@@ -15,7 +15,7 @@ void ZRCola::highlight_db::Highlight(const wchar_t* input, size_t inputMax, std:
|
||||
// Find the longest matching highlight at i-th character.
|
||||
size_t l_match = (size_t)-1;
|
||||
for (size_t l = 0, r = idxChr.size(), ii = i, j = 0; ii < inputMax && l < r; ii++, j++) {
|
||||
wchar_t c = input[ii];
|
||||
auto c = input[ii];
|
||||
while (l < r) {
|
||||
// Test the highlight in the middle of the search area.
|
||||
size_t m = (l + r) / 2;
|
||||
@@ -23,7 +23,7 @@ void ZRCola::highlight_db::Highlight(const wchar_t* input, size_t inputMax, std:
|
||||
// Get the j-th character of the highlight.
|
||||
// All highlights that get short on characters are lexically ordered before.
|
||||
// Thus the j-th character is considered 0.
|
||||
wchar_t s = idxChr[m].chr_at(j);
|
||||
auto s = idxChr[m].chr_at(j);
|
||||
|
||||
// Do the bisection test.
|
||||
if (c < s) r = m;
|
||||
|
||||
@@ -57,12 +57,12 @@ void ZRCola::LangConvert(_In_ LANGID lang_win, _Inout_ ZRCola::langid_t &lang)
|
||||
#endif
|
||||
|
||||
|
||||
bool ZRCola::langchar_db::IsLocalCharacter(_In_ const wchar_t *chr, _In_ const wchar_t *chr_end, _In_ ZRCola::langid_t lang) const
|
||||
bool ZRCola::langchar_db::IsLocalCharacter(_In_ const char_t *chr, _In_ const char_t *chr_end, _In_ ZRCola::langid_t lang) const
|
||||
{
|
||||
size_t n = chr_end - chr;
|
||||
assert(n <= 0xffff);
|
||||
std::unique_ptr<langchar> lc((langchar*)new char[sizeof(langchar) + sizeof(wchar_t)*n]);
|
||||
lc->langchar::langchar(lang, chr, n);
|
||||
std::unique_ptr<langchar> lc((langchar*)new char[sizeof(langchar) + sizeof(char_t)*n]);
|
||||
new (lc.get()) langchar(lang, chr, n);
|
||||
indexChr::size_type start;
|
||||
return idxChr.find(*lc, start);
|
||||
}
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
size_t ZRCola::mapping_vector::to_src(_In_ size_t dst) const
|
||||
{
|
||||
if (empty()) {
|
||||
// One-to-one mapping.
|
||||
return dst;
|
||||
}
|
||||
|
||||
for (size_type l = 0, r = size();;) {
|
||||
if (l < r) {
|
||||
size_type m = (l + r) / 2;
|
||||
const mapping &el = (*this)[m];
|
||||
|
||||
if ( dst < el.dst) r = m;
|
||||
else if (el.dst < dst) l = m + 1;
|
||||
else {
|
||||
// An exact match found.
|
||||
return el.src;
|
||||
}
|
||||
} else if (l) {
|
||||
// We found a map interval.
|
||||
const mapping &el = (*this)[l - 1];
|
||||
return el.src + (dst - el.dst);
|
||||
} else {
|
||||
// The destination character index is left of the first transformation.
|
||||
const mapping &el = (*this)[0];
|
||||
return std::min<size_t>(dst, el.src);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
size_t ZRCola::mapping_vector::to_dst(_In_ size_t src) const
|
||||
{
|
||||
if (empty()) {
|
||||
// One-to-one mapping.
|
||||
return src;
|
||||
}
|
||||
|
||||
for (size_type l = 0, r = size();;) {
|
||||
if (l < r) {
|
||||
size_type m = (l + r) / 2;
|
||||
const mapping &el = (*this)[m];
|
||||
|
||||
if ( src < el.src) r = m;
|
||||
else if (el.src < src) l = m + 1;
|
||||
else {
|
||||
// An exact match found.
|
||||
return el.dst;
|
||||
}
|
||||
} else if (l) {
|
||||
// We found a map interval.
|
||||
const mapping &el = (*this)[l - 1];
|
||||
return el.dst + (src - el.src);
|
||||
} else {
|
||||
// The source character index is left of the first transformation.
|
||||
const mapping &el = (*this)[0];
|
||||
return std::min<size_t>(src, el.dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,8 @@
|
||||
Copyright © 2015-2022 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef __PCH_H__
|
||||
#define __PCH_H__
|
||||
|
||||
#include "../../../include/version.h"
|
||||
|
||||
@@ -17,3 +18,5 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <cwctype>
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
bool ZRCola::chrtag_db::Search(_In_ const std::map<tagid_t, unsigned __int16> &tags, _In_ const character_db &ch_db, _In_ const std::set<chrcatid_t> &cats, _Inout_ std::map<std::wstring, charrank_t> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie), _In_opt_ void *cookie) const
|
||||
bool ZRCola::chrtag_db::Search(_In_ const std::map<tagid_t, uint16_t> &tags, _In_ const character_db &ch_db, _In_ const std::set<chrblkid_t> &blks, _Inout_ std::map<string_t, charrank_t> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie), _In_opt_ void *cookie) const
|
||||
{
|
||||
for (auto tag = tags.cbegin(), tag_end = tags.cend(); tag != tag_end; ++tag) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
@@ -17,9 +17,9 @@ bool ZRCola::chrtag_db::Search(_In_ const std::map<tagid_t, unsigned __int16> &t
|
||||
for (size_t i = start; i < end; i++) {
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
const chrtag &ct = idxTag[i];
|
||||
unsigned __int16 len = ct.chr_len();
|
||||
if (cats.find(ch_db.GetCharCat(ct.chr(), len)) != cats.end()) {
|
||||
std::wstring chr(ct.chr(), len);
|
||||
uint16_t len = ct.chr_len();
|
||||
if (blks.find(ch_db.GetCharBlk(ct.chr(), len)) != blks.end()) {
|
||||
string_t chr(ct.chr(), len);
|
||||
auto idx = hits.find(chr);
|
||||
if (idx == hits.end()) {
|
||||
// New character.
|
||||
@@ -37,7 +37,7 @@ bool ZRCola::chrtag_db::Search(_In_ const std::map<tagid_t, unsigned __int16> &t
|
||||
}
|
||||
|
||||
|
||||
bool ZRCola::tagname_db::Search(_In_z_ const wchar_t *str, _In_ LCID locale, _Inout_ std::map<tagid_t, unsigned __int16> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie), _In_opt_ void *cookie) const
|
||||
bool ZRCola::tagname_db::Search(_In_z_ const char_t *str, _In_ uint32_t locale, _Inout_ std::map<tagid_t, uint16_t> &hits, _In_opt_ bool (__cdecl *fn_abort)(void *cookie), _In_opt_ void *cookie) const
|
||||
{
|
||||
assert(str);
|
||||
|
||||
@@ -55,14 +55,14 @@ bool ZRCola::tagname_db::Search(_In_z_ const wchar_t *str, _In_ LCID locale, _In
|
||||
}
|
||||
|
||||
// Get name.
|
||||
std::wstring name;
|
||||
if (*str == L'"') {
|
||||
const wchar_t *str_end = ++str;
|
||||
string_t name;
|
||||
if (*str == u'"') {
|
||||
const auto *str_end = ++str;
|
||||
for (;;) {
|
||||
if (*str_end == 0) {
|
||||
name.assign(str, str_end);
|
||||
break;
|
||||
} else if (*str_end == L'"') {
|
||||
} else if (*str_end == u'"') {
|
||||
name.assign(str, str_end);
|
||||
str_end++;
|
||||
break;
|
||||
@@ -71,7 +71,7 @@ bool ZRCola::tagname_db::Search(_In_z_ const wchar_t *str, _In_ LCID locale, _In
|
||||
}
|
||||
str = str_end;
|
||||
} else {
|
||||
const wchar_t *str_end = str + 1;
|
||||
const auto *str_end = str + 1;
|
||||
for (; *str_end && !iswspace(*str_end); str_end++);
|
||||
name.assign(str, str_end);
|
||||
str = str_end;
|
||||
@@ -81,8 +81,8 @@ bool ZRCola::tagname_db::Search(_In_z_ const wchar_t *str, _In_ LCID locale, _In
|
||||
if (fn_abort && fn_abort(cookie)) return false;
|
||||
|
||||
// Find the name.
|
||||
std::unique_ptr<tagname> tn(reinterpret_cast<tagname*>(new char[sizeof(tagname) + sizeof(wchar_t)*name.length()]));
|
||||
tn->tagname::tagname(0, locale, name.data(), name.length());
|
||||
std::unique_ptr<tagname> tn(reinterpret_cast<tagname*>(new char[sizeof(tagname) + sizeof(char_t)*name.length()]));
|
||||
new (tn.get()) tagname(0, locale, name.data(), name.length());
|
||||
size_t start, end;
|
||||
if (idxName.find(*tn, start, end)) {
|
||||
// The name was found.
|
||||
@@ -92,7 +92,7 @@ bool ZRCola::tagname_db::Search(_In_z_ const wchar_t *str, _In_ LCID locale, _In
|
||||
auto idx = hits.find(val.tag);
|
||||
if (idx == hits.end()) {
|
||||
// New tag.
|
||||
hits.insert(std::make_pair(val.tag, (unsigned __int16)1));
|
||||
hits.insert(std::make_pair(val.tag, (uint16_t)1));
|
||||
} else {
|
||||
// Increase count for existing tag.
|
||||
idx->second++;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
void ZRCola::translation_db::Translate(_In_ transetid_t set, _In_z_count_(inputMax) const wchar_t* input, _In_ size_t inputMax, _Out_ std::wstring &output, _Out_opt_ std::vector<mapping>* map) const
|
||||
void ZRCola::translation_db::Translate(_In_ transetid_t set, _In_z_count_(inputMax) const char_t* input, _In_ size_t inputMax, _Out_ string_t &output, _Out_opt_ std::vector<mapping>* map) const
|
||||
{
|
||||
assert(input || inputMax == 0);
|
||||
|
||||
@@ -28,7 +28,7 @@ void ZRCola::translation_db::Translate(_In_ transetid_t set, _In_z_count_(inputM
|
||||
// Find the longest matching translation at i-th character.
|
||||
size_t l_match = (size_t)-1;
|
||||
for (size_t l = l_set, r = r_set, ii = i, j = 0; ii < inputMax && l < r; ii++, j++) {
|
||||
wchar_t c = input[ii];
|
||||
auto c = input[ii];
|
||||
while (l < r) {
|
||||
// Test the translation in the middle of the search area.
|
||||
size_t m = (l + r) / 2;
|
||||
@@ -36,7 +36,7 @@ void ZRCola::translation_db::Translate(_In_ transetid_t set, _In_z_count_(inputM
|
||||
// Get the j-th character of the translation.
|
||||
// All translations that get short on characters are lexically ordered before.
|
||||
// Thus the j-th character is considered 0.
|
||||
wchar_t s = idxSrc[m].src_at(j);
|
||||
auto s = idxSrc[m].src_at(j);
|
||||
|
||||
// Do the bisection test.
|
||||
if (c < s) r = m;
|
||||
@@ -84,7 +84,7 @@ void ZRCola::translation_db::Translate(_In_ transetid_t set, _In_z_count_(inputM
|
||||
}
|
||||
|
||||
|
||||
void ZRCola::translation_db::TranslateInv(_In_ transetid_t set, _In_z_count_(inputMax) const wchar_t* input, _In_ size_t inputMax, _In_opt_ const langchar_db *lc_db, _In_opt_ langid_t lang, _Out_ std::wstring &output, _Out_opt_ std::vector<mapping>* map) const
|
||||
void ZRCola::translation_db::TranslateInv(_In_ transetid_t set, _In_z_count_(inputMax) const char_t* input, _In_ size_t inputMax, _In_opt_ const langchar_db *lc_db, _In_opt_ langid_t lang, _Out_ string_t &output, _Out_opt_ std::vector<mapping>* map) const
|
||||
{
|
||||
assert(input || inputMax == 0);
|
||||
|
||||
@@ -106,7 +106,7 @@ void ZRCola::translation_db::TranslateInv(_In_ transetid_t set, _In_z_count_(inp
|
||||
// Find the longest matching inverse translation at i-th character.
|
||||
size_t l_match = (size_t)-1;
|
||||
for (size_t l = l_set, r = r_set, ii = i, j = 0; ii < inputMax && l < r; ii++, j++) {
|
||||
wchar_t c = input[ii];
|
||||
auto c = input[ii];
|
||||
while (l < r) {
|
||||
// Test the inverse translation in the middle of the search area.
|
||||
size_t m = (l + r) / 2;
|
||||
@@ -114,7 +114,7 @@ void ZRCola::translation_db::TranslateInv(_In_ transetid_t set, _In_z_count_(inp
|
||||
// Get the j-th character of the inverse translation.
|
||||
// All inverse translations that get short on characters are lexically ordered before.
|
||||
// Thus the j-th character is considered 0.
|
||||
wchar_t s = idxDst[m].dst_at(j);
|
||||
auto s = idxDst[m].dst_at(j);
|
||||
|
||||
// Do the bisection test.
|
||||
if (c < s) r = m;
|
||||
@@ -147,7 +147,7 @@ void ZRCola::translation_db::TranslateInv(_In_ transetid_t set, _In_z_count_(inp
|
||||
if (l_match < r_set) {
|
||||
// The saved inverse translation was an exact match.
|
||||
const translation &trans = idxDst[l_match];
|
||||
if (trans.src_len() && trans.src()[0] != L'#' && (!lc_db || !lc_db->IsLocalCharacter(trans.dst(), trans.dst_end(), lang))) {
|
||||
if (trans.src_len() && trans.src()[0] != u'#' && (!lc_db || !lc_db->IsLocalCharacter(trans.dst(), trans.dst_end(), lang))) {
|
||||
// Append source sequence.
|
||||
output.append(trans.src(), trans.src_end());
|
||||
i += trans.dst_len();
|
||||
|
||||
2
lib/libZRCola/test/.gitignore
vendored
Normal file
2
lib/libZRCola/test/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/*.d
|
||||
/test
|
||||
129
lib/libZRCola/test/test.cpp
Normal file
129
lib/libZRCola/test/test.cpp
Normal file
@@ -0,0 +1,129 @@
|
||||
#include <zrcola/idrec.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <typeinfo>
|
||||
|
||||
using namespace std;
|
||||
using namespace ZRCola;
|
||||
|
||||
translation_db t_db;
|
||||
transet_db ts_db;
|
||||
transeq_db tsq_db;
|
||||
langchar_db lc_db;
|
||||
language_db lang_db;
|
||||
character_db chr_db;
|
||||
chrblk_db cb_db;
|
||||
chrtag_db ct_db;
|
||||
tagname_db tn_db;
|
||||
highlight_db h_db;
|
||||
|
||||
static void load_database()
|
||||
{
|
||||
fstream dat("../../../output/data/ZRCola.zrcdb", ios_base::in | ios_base::binary);
|
||||
if (!dat.good())
|
||||
throw runtime_error("ZRCola.zrcdb not found or cannot be opened.");
|
||||
|
||||
if (!stdex::idrec::find<recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN>(dat, ZRCOLA_DB_ID, sizeof(recordid_t)))
|
||||
throw runtime_error("ZRCola.zrcdb is not a valid ZRCola database.");
|
||||
|
||||
recordsize_t size;
|
||||
dat.read((char*)&size, sizeof(recordsize_t));
|
||||
if (dat.good()) {
|
||||
bool has_translation_data = false;
|
||||
|
||||
for (;;) {
|
||||
recordid_t id;
|
||||
if (!stdex::idrec::read_id(dat, id, size)) break;
|
||||
|
||||
if (id == translation_rec::id()) {
|
||||
dat >> translation_rec(t_db);
|
||||
if (dat.good()) {
|
||||
has_translation_data = true;
|
||||
} else {
|
||||
cerr << "Error reading translation data from ZRCola.zrcdb.\n";
|
||||
t_db.clear();
|
||||
}
|
||||
} else if (id == transet_rec::id()) {
|
||||
dat >> transet_rec(ts_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading translation set data from ZRCola.zrcdb.\n";
|
||||
ts_db.clear();
|
||||
}
|
||||
} else if (id == transeq_rec::id()) {
|
||||
dat >> transeq_rec(tsq_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading translation sequence data from ZRCola.zrcdb.\n";
|
||||
tsq_db.clear();
|
||||
}
|
||||
} else if (id == langchar_rec::id()) {
|
||||
dat >> langchar_rec(lc_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading language character data from ZRCola.zrcdb.\n";
|
||||
lc_db.clear();
|
||||
}
|
||||
} else if (id == language_rec::id()) {
|
||||
dat >> language_rec(lang_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading language character data from ZRCola.zrcdb.\n";
|
||||
lang_db.clear();
|
||||
}
|
||||
} else if (id == character_rec::id()) {
|
||||
dat >> character_rec(chr_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading character data from ZRCola.zrcdb.\n";
|
||||
chr_db.clear();
|
||||
}
|
||||
} else if (id == chrblk_rec::id()) {
|
||||
dat >> chrblk_rec(cb_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading character block data from ZRCola.zrcdb.\n";
|
||||
cb_db.clear();
|
||||
}
|
||||
} else if (id == chrtag_rec::id()) {
|
||||
dat >> chrtag_rec(ct_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading character tag data from ZRCola.zrcdb.\n";
|
||||
ct_db.clear();
|
||||
}
|
||||
} else if (id == tagname_rec::id()) {
|
||||
dat >> tagname_rec(tn_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading tag name data from ZRCola.zrcdb.\n";
|
||||
tn_db.clear();
|
||||
}
|
||||
} else if (id == highlight_rec::id()) {
|
||||
dat >> highlight_rec(h_db);
|
||||
if (!dat.good()) {
|
||||
cerr << "Error reading highlight data from ZRCola.zrcdb.\n";
|
||||
h_db.clear();
|
||||
}
|
||||
} else
|
||||
stdex::idrec::ignore<recordsize_t, ZRCOLA_RECORD_ALIGN>(dat);
|
||||
}
|
||||
|
||||
if (!has_translation_data)
|
||||
throw runtime_error("ZRCola.zrcdb has no translation data.");
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
try {
|
||||
load_database();
|
||||
|
||||
u16string output;
|
||||
vector<mapping> map;
|
||||
t_db.Translate(ZRCOLA_TRANSETID_DEFAULT, u"", -1, output, &map);
|
||||
if (!output.empty()) throw runtime_error("Empty string translated to nonempty output.");
|
||||
if (!map.empty()) throw runtime_error("Empty string translation produced non-empty map.");
|
||||
|
||||
t_db.Translate(ZRCOLA_TRANSETID_DEFAULT, u"To je test.", -1, output, &map);
|
||||
if (output != u"T ťᵉⓢṭ.") throw runtime_error("Unexpected translation.");
|
||||
|
||||
cout << "Passed\n";
|
||||
return 0;
|
||||
} catch (exception &ex) {
|
||||
cerr << typeid(ex).name() << ": " << ex.what() << endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,11 @@
|
||||
|
||||
#include <zrcola/common.h>
|
||||
|
||||
#include <stdex/idrec>
|
||||
#include <stdex/idrec.hpp>
|
||||
#include <assert.h>
|
||||
#include <algorithm>
|
||||
#include <istream>
|
||||
#include <locale>
|
||||
#include <ostream>
|
||||
#include <vector>
|
||||
|
||||
@@ -24,7 +25,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Character group ID
|
||||
///
|
||||
typedef unsigned __int16 chrgrpid_t;
|
||||
typedef uint16_t chrgrpid_t;
|
||||
|
||||
|
||||
///
|
||||
@@ -39,13 +40,13 @@ namespace ZRCola {
|
||||
///
|
||||
struct chrgrp {
|
||||
public:
|
||||
chrgrpid_t grp; ///< Character group ID
|
||||
unsigned __int16 rank; ///< Character group rank
|
||||
chrgrpid_t grp; ///< Character group ID
|
||||
uint16_t rank; ///< Character group rank
|
||||
|
||||
protected:
|
||||
unsigned __int16 name_to; ///< Character group name end in \c data
|
||||
unsigned __int16 chrlst_to; ///< Character list end in \c data
|
||||
wchar_t data[]; ///< Character group name, character list, bit vector if particular character is displayed initially
|
||||
uint16_t name_to; ///< Character group name end in \c data
|
||||
uint16_t chrlst_to; ///< Character list end in \c data
|
||||
char_t data[]; ///< Character group name, character list, bit vector if particular character is displayed initially
|
||||
|
||||
public:
|
||||
///
|
||||
@@ -60,49 +61,49 @@ namespace ZRCola {
|
||||
/// \param[in] chrshow Binary vector which particular character is displayed initially
|
||||
///
|
||||
inline chrgrp(
|
||||
_In_opt_ chrgrpid_t grp = 0,
|
||||
_In_opt_ unsigned __int16 rank = 0,
|
||||
_In_opt_z_count_(name_len) const wchar_t *name = NULL,
|
||||
_In_opt_ size_t name_len = 0,
|
||||
_In_opt_z_count_(chrlst_len) const wchar_t *chrlst = NULL,
|
||||
_In_opt_ size_t chrlst_len = 0,
|
||||
_In_opt_count_x_((chrlst_len + 15)/16) const unsigned __int16 *chrshow = NULL)
|
||||
_In_opt_ chrgrpid_t grp = 0,
|
||||
_In_opt_ uint16_t rank = 0,
|
||||
_In_opt_z_count_(name_len) const char_t *name = NULL,
|
||||
_In_opt_ size_t name_len = 0,
|
||||
_In_opt_z_count_(chrlst_len) const char_t *chrlst = NULL,
|
||||
_In_opt_ size_t chrlst_len = 0,
|
||||
_In_opt_count_x_((chrlst_len + 15)/16) const uint16_t *chrshow = NULL)
|
||||
{
|
||||
this->grp = grp;
|
||||
this->rank = rank;
|
||||
this->name_to = static_cast<unsigned __int16>(name_len);
|
||||
if (name && name_len) memcpy(this->data, name, sizeof(wchar_t)*name_len);
|
||||
this->chrlst_to = static_cast<unsigned __int16>(this->name_to + chrlst_len);
|
||||
this->name_to = static_cast<uint16_t>(name_len);
|
||||
if (name && name_len) memcpy(this->data, name, sizeof(char_t)*name_len);
|
||||
this->chrlst_to = static_cast<uint16_t>(this->name_to + chrlst_len);
|
||||
if (chrlst && chrshow && chrlst_len) {
|
||||
memcpy(this->data + this->name_to, chrlst, sizeof(wchar_t)*chrlst_len);
|
||||
memcpy(this->data + this->name_to, chrlst, sizeof(char_t)*chrlst_len);
|
||||
memcpy(this->data + this->chrlst_to, chrshow, (chrlst_len + sizeof(*data)*8 - 1)/8);
|
||||
}
|
||||
}
|
||||
|
||||
inline const wchar_t* name () const { return data; };
|
||||
inline wchar_t* name () { return data; };
|
||||
inline const wchar_t* name_end() const { return data + name_to; };
|
||||
inline wchar_t* name_end() { return data + name_to; };
|
||||
inline unsigned __int16 name_len() const { return name_to; };
|
||||
inline const char_t* name () const { return data; };
|
||||
inline char_t* name () { return data; };
|
||||
inline const char_t* name_end() const { return data + name_to; };
|
||||
inline char_t* name_end() { return data + name_to; };
|
||||
inline uint16_t name_len() const { return name_to; };
|
||||
|
||||
inline const wchar_t* chrlst () const { return data + name_to; };
|
||||
inline wchar_t* chrlst () { return data + name_to; };
|
||||
inline const wchar_t* chrlst_end() const { return data + chrlst_to; };
|
||||
inline wchar_t* chrlst_end() { return data + chrlst_to; };
|
||||
inline unsigned __int16 chrlst_len() const { return chrlst_to - name_to; };
|
||||
inline const char_t* chrlst () const { return data + name_to; };
|
||||
inline char_t* chrlst () { return data + name_to; };
|
||||
inline const char_t* chrlst_end() const { return data + chrlst_to; };
|
||||
inline char_t* chrlst_end() { return data + chrlst_to; };
|
||||
inline uint16_t chrlst_len() const { return chrlst_to - name_to; };
|
||||
|
||||
inline const unsigned __int16* chrshow () const { return reinterpret_cast<const unsigned __int16*>(data + chrlst_to ); };
|
||||
inline unsigned __int16* chrshow () { return reinterpret_cast< unsigned __int16*>(data + chrlst_to ); };
|
||||
inline const unsigned __int16* chrshow_end() const { return reinterpret_cast<const unsigned __int16*>(data + chrlst_to + chrshow_len()); };
|
||||
inline unsigned __int16* chrshow_end() { return reinterpret_cast< unsigned __int16*>(data + chrlst_to + chrshow_len()); };
|
||||
inline unsigned __int16 chrshow_len() const { return (chrlst_len() + sizeof(*data)*8 - 1)/(sizeof(*data)*8); };
|
||||
inline const uint16_t* chrshow () const { return reinterpret_cast<const uint16_t*>(data + chrlst_to ); };
|
||||
inline uint16_t* chrshow () { return reinterpret_cast< uint16_t*>(data + chrlst_to ); };
|
||||
inline const uint16_t* chrshow_end() const { return reinterpret_cast<const uint16_t*>(data + chrlst_to + chrshow_len()); };
|
||||
inline uint16_t* chrshow_end() { return reinterpret_cast< uint16_t*>(data + chrlst_to + chrshow_len()); };
|
||||
inline uint16_t chrshow_len() const { return (chrlst_len() + sizeof(*data)*8 - 1)/(sizeof(*data)*8); };
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
///
|
||||
/// Rank index
|
||||
///
|
||||
class indexRank : public index<unsigned __int16, unsigned __int32, chrgrp>
|
||||
class indexRank : public index<uint16_t, uint32_t, chrgrp>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -110,7 +111,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexRank(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, chrgrp>(h) {}
|
||||
indexRank(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrgrp>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two character groups by rank (for searching)
|
||||
@@ -125,8 +126,8 @@ namespace ZRCola {
|
||||
///
|
||||
virtual int compare(_In_ const chrgrp &a, _In_ const chrgrp &b) const
|
||||
{
|
||||
if (a.rank < b.rank) return -1;
|
||||
else if (a.rank > b.rank) return +1;
|
||||
if (a.rank < b.rank) return -1;
|
||||
if (a.rank > b.rank) return +1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -147,97 +148,88 @@ namespace ZRCola {
|
||||
if (a.rank < b.rank) return -1;
|
||||
else if (a.rank > b.rank) return +1;
|
||||
|
||||
unsigned __int16
|
||||
a_name_len = a.name_len(),
|
||||
b_name_len = b.name_len();
|
||||
int r = _wcsncoll(a.name(), b.name(), std::min<unsigned __int16>(a_name_len, b_name_len));
|
||||
if (r != 0) return r;
|
||||
if (a_name_len < b_name_len) return -1;
|
||||
else if (a_name_len > b_name_len) return +1;
|
||||
|
||||
return 0;
|
||||
auto &coll = std::use_facet<std::collate<char_t>>(std::locale());
|
||||
return coll.compare(a.name(), a.name_end(), b.name(), b.name_end());
|
||||
}
|
||||
} idxRank; ///< Rank index
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Character groups data
|
||||
std::vector<uint16_t> data; ///< Character groups data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline chrgrp_db() : idxRank(data) {}
|
||||
|
||||
|
||||
///
|
||||
/// Writes character group database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Character group database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const chrgrp_db& db)
|
||||
{
|
||||
// Write rank index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxRank;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads character group database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Character group database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ chrgrp_db& db)
|
||||
{
|
||||
// Read rank index.
|
||||
stream >> db.idxRank;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<chrgrp_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> chrgrp_rec;
|
||||
typedef stdex::idrec::record<chrgrp_db, recordid_t, 0x524743 /*"CGR"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> chrgrp_rec;
|
||||
};
|
||||
|
||||
|
||||
const ZRCola::recordid_t ZRCola::chrgrp_rec::id = *(ZRCola::recordid_t*)"CGR";
|
||||
|
||||
|
||||
///
|
||||
/// Writes character group database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Character group database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::chrgrp_db &db)
|
||||
{
|
||||
// Write rank index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxRank;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads character group database from a stream
|
||||
///
|
||||
/// \param[in ] stream Input stream
|
||||
/// \param[out] db Character group database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::chrgrp_db &db)
|
||||
{
|
||||
// Read rank index.
|
||||
stream >> db.idxRank;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <zrcola/common.h>
|
||||
|
||||
#include <stdex/idrec>
|
||||
#include <stdex/idrec.hpp>
|
||||
|
||||
#include <wxex/common.h>
|
||||
#pragma warning(push)
|
||||
@@ -39,20 +39,20 @@ namespace ZRCola {
|
||||
struct keyseq {
|
||||
public:
|
||||
enum modifiers_t {
|
||||
SHIFT = 1<<0, ///< SHIFT key was pressed
|
||||
CTRL = 1<<1, ///< CTRL key was pressed
|
||||
ALT = 1<<2, ///< ALT key was pressed
|
||||
SHIFT = 1<<0, ///< SHIFT key was pressed
|
||||
CTRL = 1<<1, ///< CTRL key was pressed
|
||||
ALT = 1<<2, ///< ALT key was pressed
|
||||
};
|
||||
|
||||
struct key_t {
|
||||
wchar_t key; ///< Key
|
||||
unsigned __int16 modifiers; ///< Modifiers (bitwise combination of SHIFT, CTRL and ALT)
|
||||
char_t key; ///< Key
|
||||
uint16_t modifiers; ///< Modifiers (bitwise combination of SHIFT, CTRL and ALT)
|
||||
};
|
||||
|
||||
protected:
|
||||
unsigned __int16 chr_to; ///< Character end in \c data
|
||||
unsigned __int16 seq_to; ///< Key sequence end in \c data
|
||||
wchar_t data[]; ///< Character and key sequence
|
||||
uint16_t chr_to; ///< Character end in \c data
|
||||
uint16_t seq_to; ///< Key sequence end in \c data
|
||||
char_t data[]; ///< Character and key sequence
|
||||
|
||||
public:
|
||||
///
|
||||
@@ -63,29 +63,29 @@ namespace ZRCola {
|
||||
/// \param[in] chr Character
|
||||
/// \param[in] chr_len Number of UTF-16 characters in \p chr
|
||||
///
|
||||
inline keyseq(
|
||||
_In_opt_count_(seq_count) const key_t *seq = NULL,
|
||||
_In_opt_ size_t seq_count = 0,
|
||||
_In_opt_z_count_(chr_len) const wchar_t *chr = NULL,
|
||||
_In_opt_ size_t chr_len = 0)
|
||||
keyseq(
|
||||
_In_opt_count_(seq_count) const key_t *seq = NULL,
|
||||
_In_opt_ size_t seq_count = 0,
|
||||
_In_opt_z_count_(chr_len) const char_t *chr = NULL,
|
||||
_In_opt_ size_t chr_len = 0)
|
||||
{
|
||||
this->chr_to = static_cast<unsigned __int16>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(wchar_t)*chr_len);
|
||||
this->seq_to = static_cast<unsigned __int16>(this->chr_to + seq_count * sizeof(key_t) / sizeof(*data));
|
||||
this->chr_to = static_cast<uint16_t>(chr_len);
|
||||
if (chr && chr_len) memcpy(this->data, chr, sizeof(char_t)*chr_len);
|
||||
this->seq_to = static_cast<uint16_t>(this->chr_to + seq_count * sizeof(key_t) / sizeof(*data));
|
||||
if (seq && seq_count) memcpy(this->data + this->chr_to, seq, sizeof(key_t)*seq_count);
|
||||
}
|
||||
|
||||
inline const wchar_t* chr () const { return data; };
|
||||
inline wchar_t* chr () { return data; };
|
||||
inline const wchar_t* chr_end() const { return data + chr_to; };
|
||||
inline wchar_t* chr_end() { return data + chr_to; };
|
||||
inline unsigned __int16 chr_len() const { return chr_to; };
|
||||
const char_t* chr () const { return data; };
|
||||
char_t* chr () { return data; };
|
||||
const char_t* chr_end() const { return data + chr_to; };
|
||||
char_t* chr_end() { return data + chr_to; };
|
||||
uint16_t chr_len() const { return chr_to; };
|
||||
|
||||
inline const key_t* seq () const { return reinterpret_cast<const key_t*>(data + chr_to); };
|
||||
inline key_t* seq () { return reinterpret_cast< key_t*>(data + chr_to); };
|
||||
inline const key_t* seq_end() const { return reinterpret_cast<const key_t*>(data + seq_to); };
|
||||
inline key_t* seq_end() { return reinterpret_cast< key_t*>(data + seq_to); };
|
||||
inline unsigned __int16 seq_len() const { return (seq_to - chr_to) * sizeof(*data) / sizeof(key_t); };
|
||||
const key_t* seq () const { return reinterpret_cast<const key_t*>(data + chr_to); };
|
||||
key_t* seq () { return reinterpret_cast< key_t*>(data + chr_to); };
|
||||
const key_t* seq_end() const { return reinterpret_cast<const key_t*>(data + seq_to); };
|
||||
key_t* seq_end() { return reinterpret_cast< key_t*>(data + seq_to); };
|
||||
uint16_t seq_len() const { return (seq_to - chr_to) * sizeof(*data) / sizeof(key_t); };
|
||||
|
||||
///
|
||||
/// Compares two key sequences
|
||||
@@ -100,7 +100,7 @@ namespace ZRCola {
|
||||
/// - =0 when seq_a == seq_b
|
||||
/// - >0 when seq_a > seq_b
|
||||
///
|
||||
static inline int CompareSequence(_In_ const key_t *seq_a, _In_ size_t len_a, _In_ const key_t *seq_b, _In_ size_t len_b)
|
||||
static int CompareSequence(_In_ const key_t *seq_a, _In_ size_t len_a, _In_ const key_t *seq_b, _In_ size_t len_b)
|
||||
{
|
||||
for (size_t i = 0; ; i++) {
|
||||
if (i >= len_a && i >= len_b) return 0;
|
||||
@@ -118,7 +118,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Character index
|
||||
///
|
||||
class indexChr : public index<unsigned __int16, unsigned __int32, keyseq>
|
||||
class indexChr : public index<uint16_t, uint32_t, keyseq>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -126,7 +126,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexChr(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, keyseq>(h) {}
|
||||
indexChr(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, keyseq>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two key sequences by character (for searching)
|
||||
@@ -174,7 +174,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// Key index
|
||||
///
|
||||
class indexKey : public index<unsigned __int16, unsigned __int32, keyseq>
|
||||
class indexKey : public index<uint16_t, uint32_t, keyseq>
|
||||
{
|
||||
public:
|
||||
///
|
||||
@@ -182,7 +182,7 @@ namespace ZRCola {
|
||||
///
|
||||
/// \param[in] h Reference to vector holding the data
|
||||
///
|
||||
indexKey(_In_ std::vector<unsigned __int16> &h) : index<unsigned __int16, unsigned __int32, keyseq>(h) {}
|
||||
indexKey(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, keyseq>(h) {}
|
||||
|
||||
///
|
||||
/// Compares two key sequences by key (for searching)
|
||||
@@ -226,18 +226,18 @@ namespace ZRCola {
|
||||
}
|
||||
} idxKey; ///< Key index
|
||||
|
||||
std::vector<unsigned __int16> data; ///< Key sequences data
|
||||
std::vector<uint16_t> data; ///< Key sequences data
|
||||
|
||||
public:
|
||||
///
|
||||
/// Constructs the database
|
||||
///
|
||||
inline keyseq_db() : idxChr(data), idxKey(data) {}
|
||||
keyseq_db() : idxChr(data), idxKey(data) {}
|
||||
|
||||
///
|
||||
/// Clears the database
|
||||
///
|
||||
inline void clear()
|
||||
void clear()
|
||||
{
|
||||
idxChr.clear();
|
||||
idxKey.clear();
|
||||
@@ -265,91 +265,89 @@ namespace ZRCola {
|
||||
///
|
||||
/// \returns Text representation of a \p seq key sequence
|
||||
///
|
||||
static inline wxString GetSequenceAsText(_In_count_(seq_len) const keyseq_db::keyseq::key_t *seq, _In_ size_t seq_len)
|
||||
static wxString GetSequenceAsText(_In_count_(seq_len) const keyseq_db::keyseq::key_t *seq, _In_ size_t seq_len)
|
||||
{
|
||||
wxString str;
|
||||
return GetSequenceAsText(seq, seq_len, str) ? str : wxEmptyString;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Writes key sequence database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Key sequence database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const keyseq_db& db)
|
||||
{
|
||||
// Write character index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
// Write key index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxKey;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
uint32_t count = (uint32_t)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads key sequence database from a stream
|
||||
///
|
||||
/// \param[in] stream Input stream
|
||||
/// \param[out] db Key sequence database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ keyseq_db& db)
|
||||
{
|
||||
// Read character index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read key index.
|
||||
stream >> db.idxKey;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
uint32_t count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(uint16_t) * static_cast<std::streamsize>(count));
|
||||
}
|
||||
else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef stdex::idrec::record<keyseq_db, recordid_t, recordsize_t, ZRCOLA_RECORD_ALIGN> keyseq_rec;
|
||||
typedef stdex::idrec::record<keyseq_db, recordid_t, 0x59454b /*"KEY"*/, recordsize_t, ZRCOLA_RECORD_ALIGN> keyseq_rec;
|
||||
};
|
||||
|
||||
|
||||
const ZRCola::recordid_t ZRCola::keyseq_rec::id = *(ZRCola::recordid_t*)"KEY";
|
||||
|
||||
|
||||
///
|
||||
/// Writes key sequence database to a stream
|
||||
///
|
||||
/// \param[in] stream Output stream
|
||||
/// \param[in] db Key sequence database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::ostream& operator <<(_In_ std::ostream& stream, _In_ const ZRCola::keyseq_db &db)
|
||||
{
|
||||
// Write character index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxChr;
|
||||
|
||||
// Write key index.
|
||||
if (stream.fail()) return stream;
|
||||
stream << db.idxKey;
|
||||
|
||||
// Write data count.
|
||||
auto data_count = db.data.size();
|
||||
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
|
||||
// 4G check
|
||||
if (data_count > 0xffffffff) {
|
||||
stream.setstate(std::ios_base::failbit);
|
||||
return stream;
|
||||
}
|
||||
#endif
|
||||
if (stream.fail()) return stream;
|
||||
unsigned __int32 count = (unsigned __int32)data_count;
|
||||
stream.write((const char*)&count, sizeof(count));
|
||||
|
||||
// Write data.
|
||||
if (stream.fail()) return stream;
|
||||
stream.write((const char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Reads key sequence database from a stream
|
||||
///
|
||||
/// \param[in] stream Input stream
|
||||
/// \param[out] db Key sequence database
|
||||
///
|
||||
/// \returns The stream \p stream
|
||||
///
|
||||
inline std::istream& operator >>(_In_ std::istream& stream, _Out_ ZRCola::keyseq_db &db)
|
||||
{
|
||||
// Read character index.
|
||||
stream >> db.idxChr;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read key index.
|
||||
stream >> db.idxKey;
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
// Read data count.
|
||||
unsigned __int32 count;
|
||||
stream.read((char*)&count, sizeof(count));
|
||||
if (!stream.good()) return stream;
|
||||
|
||||
if (count) {
|
||||
// Read data.
|
||||
db.data.resize(count);
|
||||
stream.read((char*)db.data.data(), sizeof(unsigned __int16)*static_cast<std::streamsize>(count));
|
||||
} else
|
||||
db.data.clear();
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
@@ -6,162 +6,162 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libZRColaUI\n"
|
||||
"POT-Creation-Date: 2018-09-19 09:05+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:29+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:21+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: German (Germany) (https://www.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"Language-Team: German (Germany) (https://app.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de_DE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: src\n"
|
||||
"X-Poedit-SearchPath-1: include\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: src/keyboard.cpp:30 src/keyboard.cpp:72
|
||||
#: src/keyboard.cpp:16 src/keyboard.cpp:58
|
||||
msgid "Ctrl"
|
||||
msgstr "Strg"
|
||||
|
||||
#: src/keyboard.cpp:31 src/keyboard.cpp:71
|
||||
#: src/keyboard.cpp:17 src/keyboard.cpp:57
|
||||
msgid "Alt"
|
||||
msgstr "Alt"
|
||||
|
||||
#: src/keyboard.cpp:32 src/keyboard.cpp:70
|
||||
#: src/keyboard.cpp:18 src/keyboard.cpp:56
|
||||
msgid "Shift"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:45
|
||||
#: src/keyboard.cpp:31
|
||||
msgid "Esc"
|
||||
msgstr "Esc"
|
||||
|
||||
#: src/keyboard.cpp:47
|
||||
#: src/keyboard.cpp:33
|
||||
msgid "F1"
|
||||
msgstr "F1"
|
||||
|
||||
#: src/keyboard.cpp:48
|
||||
#: src/keyboard.cpp:34
|
||||
msgid "F2"
|
||||
msgstr "F2"
|
||||
|
||||
#: src/keyboard.cpp:49
|
||||
#: src/keyboard.cpp:35
|
||||
msgid "F3"
|
||||
msgstr "F3"
|
||||
|
||||
#: src/keyboard.cpp:50
|
||||
#: src/keyboard.cpp:36
|
||||
msgid "F4"
|
||||
msgstr "F4"
|
||||
|
||||
#: src/keyboard.cpp:51
|
||||
#: src/keyboard.cpp:37
|
||||
msgid "F5"
|
||||
msgstr "F5"
|
||||
|
||||
#: src/keyboard.cpp:52
|
||||
#: src/keyboard.cpp:38
|
||||
msgid "F6"
|
||||
msgstr "F6"
|
||||
|
||||
#: src/keyboard.cpp:53
|
||||
#: src/keyboard.cpp:39
|
||||
msgid "F7"
|
||||
msgstr "F7"
|
||||
|
||||
#: src/keyboard.cpp:54
|
||||
#: src/keyboard.cpp:40
|
||||
msgid "F8"
|
||||
msgstr "F8"
|
||||
|
||||
#: src/keyboard.cpp:55
|
||||
#: src/keyboard.cpp:41
|
||||
msgid "F9"
|
||||
msgstr "F9"
|
||||
|
||||
#: src/keyboard.cpp:56
|
||||
#: src/keyboard.cpp:42
|
||||
msgid "F10"
|
||||
msgstr "F10"
|
||||
|
||||
#: src/keyboard.cpp:57
|
||||
#: src/keyboard.cpp:43
|
||||
msgid "F11"
|
||||
msgstr "F11"
|
||||
|
||||
#: src/keyboard.cpp:58
|
||||
#: src/keyboard.cpp:44
|
||||
msgid "F12"
|
||||
msgstr "F12"
|
||||
|
||||
#: src/keyboard.cpp:60
|
||||
#: src/keyboard.cpp:46
|
||||
msgid "Print Screen"
|
||||
msgstr "Druck"
|
||||
|
||||
#: src/keyboard.cpp:61
|
||||
#: src/keyboard.cpp:47
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Rollen"
|
||||
|
||||
#: src/keyboard.cpp:62
|
||||
#: src/keyboard.cpp:48
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
#: src/keyboard.cpp:64
|
||||
#: src/keyboard.cpp:50
|
||||
msgid "Backspace"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:65
|
||||
#: src/keyboard.cpp:51
|
||||
msgid "Tab"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:66
|
||||
#: src/keyboard.cpp:52
|
||||
msgid "Caps Lock"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:67
|
||||
#: src/keyboard.cpp:53
|
||||
msgid "Return"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:68
|
||||
#: src/keyboard.cpp:54
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:73
|
||||
#: src/keyboard.cpp:59
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/keyboard.cpp:75
|
||||
#: src/keyboard.cpp:61
|
||||
msgid "Insert"
|
||||
msgstr "Einfg"
|
||||
|
||||
#: src/keyboard.cpp:76
|
||||
#: src/keyboard.cpp:62
|
||||
msgid "Delete"
|
||||
msgstr "Entf"
|
||||
|
||||
#: src/keyboard.cpp:77
|
||||
#: src/keyboard.cpp:63
|
||||
msgid "Page Up"
|
||||
msgstr "Bild↑"
|
||||
|
||||
#: src/keyboard.cpp:78
|
||||
#: src/keyboard.cpp:64
|
||||
msgid "Page Down"
|
||||
msgstr "Bild↓"
|
||||
|
||||
#: src/keyboard.cpp:79
|
||||
#: src/keyboard.cpp:65
|
||||
msgid "Home"
|
||||
msgstr "Pos1"
|
||||
|
||||
#: src/keyboard.cpp:80
|
||||
#: src/keyboard.cpp:66
|
||||
msgid "End"
|
||||
msgstr "Ende"
|
||||
|
||||
#: src/keyboard.cpp:82
|
||||
#: src/keyboard.cpp:68
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:83
|
||||
#: src/keyboard.cpp:69
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:84
|
||||
#: src/keyboard.cpp:70
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:85
|
||||
#: src/keyboard.cpp:71
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
#: src/keyboard.cpp:87
|
||||
#: src/keyboard.cpp:73
|
||||
msgid "Num Lock"
|
||||
msgstr ""
|
||||
|
||||
@@ -6,162 +6,162 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libZRColaUI\n"
|
||||
"POT-Creation-Date: 2018-09-19 09:05+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:29+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:21+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"Language-Team: Russian (Russia) (https://app.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru_RU\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: src\n"
|
||||
"X-Poedit-SearchPath-1: include\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: src/keyboard.cpp:30 src/keyboard.cpp:72
|
||||
#: src/keyboard.cpp:16 src/keyboard.cpp:58
|
||||
msgid "Ctrl"
|
||||
msgstr "Ctrl"
|
||||
|
||||
#: src/keyboard.cpp:31 src/keyboard.cpp:71
|
||||
#: src/keyboard.cpp:17 src/keyboard.cpp:57
|
||||
msgid "Alt"
|
||||
msgstr "Alt"
|
||||
|
||||
#: src/keyboard.cpp:32 src/keyboard.cpp:70
|
||||
#: src/keyboard.cpp:18 src/keyboard.cpp:56
|
||||
msgid "Shift"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keyboard.cpp:45
|
||||
#: src/keyboard.cpp:31
|
||||
msgid "Esc"
|
||||
msgstr "Esc"
|
||||
|
||||
#: src/keyboard.cpp:47
|
||||
#: src/keyboard.cpp:33
|
||||
msgid "F1"
|
||||
msgstr "F1"
|
||||
|
||||
#: src/keyboard.cpp:48
|
||||
#: src/keyboard.cpp:34
|
||||
msgid "F2"
|
||||
msgstr "F2"
|
||||
|
||||
#: src/keyboard.cpp:49
|
||||
#: src/keyboard.cpp:35
|
||||
msgid "F3"
|
||||
msgstr "F3"
|
||||
|
||||
#: src/keyboard.cpp:50
|
||||
#: src/keyboard.cpp:36
|
||||
msgid "F4"
|
||||
msgstr "F4"
|
||||
|
||||
#: src/keyboard.cpp:51
|
||||
#: src/keyboard.cpp:37
|
||||
msgid "F5"
|
||||
msgstr "F5"
|
||||
|
||||
#: src/keyboard.cpp:52
|
||||
#: src/keyboard.cpp:38
|
||||
msgid "F6"
|
||||
msgstr "F6"
|
||||
|
||||
#: src/keyboard.cpp:53
|
||||
#: src/keyboard.cpp:39
|
||||
msgid "F7"
|
||||
msgstr "F7"
|
||||
|
||||
#: src/keyboard.cpp:54
|
||||
#: src/keyboard.cpp:40
|
||||
msgid "F8"
|
||||
msgstr "F8"
|
||||
|
||||
#: src/keyboard.cpp:55
|
||||
#: src/keyboard.cpp:41
|
||||
msgid "F9"
|
||||
msgstr "F9"
|
||||
|
||||
#: src/keyboard.cpp:56
|
||||
#: src/keyboard.cpp:42
|
||||
msgid "F10"
|
||||
msgstr "F10"
|
||||
|
||||
#: src/keyboard.cpp:57
|
||||
#: src/keyboard.cpp:43
|
||||
msgid "F11"
|
||||
msgstr "F11"
|
||||
|
||||
#: src/keyboard.cpp:58
|
||||
#: src/keyboard.cpp:44
|
||||
msgid "F12"
|
||||
msgstr "F12"
|
||||
|
||||
#: src/keyboard.cpp:60
|
||||
#: src/keyboard.cpp:46
|
||||
msgid "Print Screen"
|
||||
msgstr "Print Screen"
|
||||
|
||||
#: src/keyboard.cpp:61
|
||||
#: src/keyboard.cpp:47
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Scroll Lock"
|
||||
|
||||
#: src/keyboard.cpp:62
|
||||
#: src/keyboard.cpp:48
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
#: src/keyboard.cpp:64
|
||||
#: src/keyboard.cpp:50
|
||||
msgid "Backspace"
|
||||
msgstr "Backspace"
|
||||
|
||||
#: src/keyboard.cpp:65
|
||||
#: src/keyboard.cpp:51
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: src/keyboard.cpp:66
|
||||
#: src/keyboard.cpp:52
|
||||
msgid "Caps Lock"
|
||||
msgstr "Caps Lock"
|
||||
|
||||
#: src/keyboard.cpp:67
|
||||
#: src/keyboard.cpp:53
|
||||
msgid "Return"
|
||||
msgstr "Return"
|
||||
|
||||
#: src/keyboard.cpp:68
|
||||
#: src/keyboard.cpp:54
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
#: src/keyboard.cpp:73
|
||||
#: src/keyboard.cpp:59
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/keyboard.cpp:75
|
||||
#: src/keyboard.cpp:61
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keyboard.cpp:76
|
||||
#: src/keyboard.cpp:62
|
||||
msgid "Delete"
|
||||
msgstr "Delete"
|
||||
|
||||
#: src/keyboard.cpp:77
|
||||
#: src/keyboard.cpp:63
|
||||
msgid "Page Up"
|
||||
msgstr "Page Up"
|
||||
|
||||
#: src/keyboard.cpp:78
|
||||
#: src/keyboard.cpp:64
|
||||
msgid "Page Down"
|
||||
msgstr "Page Down"
|
||||
|
||||
#: src/keyboard.cpp:79
|
||||
#: src/keyboard.cpp:65
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keyboard.cpp:80
|
||||
#: src/keyboard.cpp:66
|
||||
msgid "End"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keyboard.cpp:82
|
||||
#: src/keyboard.cpp:68
|
||||
msgid "Left"
|
||||
msgstr "Left"
|
||||
|
||||
#: src/keyboard.cpp:83
|
||||
#: src/keyboard.cpp:69
|
||||
msgid "Up"
|
||||
msgstr "Up"
|
||||
|
||||
#: src/keyboard.cpp:84
|
||||
#: src/keyboard.cpp:70
|
||||
msgid "Right"
|
||||
msgstr "Right"
|
||||
|
||||
#: src/keyboard.cpp:85
|
||||
#: src/keyboard.cpp:71
|
||||
msgid "Down"
|
||||
msgstr "Down"
|
||||
|
||||
#: src/keyboard.cpp:87
|
||||
#: src/keyboard.cpp:73
|
||||
msgid "Num Lock"
|
||||
msgstr "Num Lock"
|
||||
|
||||
@@ -6,162 +6,162 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libZRColaUI\n"
|
||||
"POT-Creation-Date: 2018-09-19 09:05+0200\n"
|
||||
"POT-Creation-Date: 2022-02-17 13:29+0100\n"
|
||||
"PO-Revision-Date: 2018-09-19 07:21+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://www.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://app.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sl_SI\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: src\n"
|
||||
"X-Poedit-SearchPath-1: include\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: src/keyboard.cpp:30 src/keyboard.cpp:72
|
||||
#: src/keyboard.cpp:16 src/keyboard.cpp:58
|
||||
msgid "Ctrl"
|
||||
msgstr "Ctrl"
|
||||
|
||||
#: src/keyboard.cpp:31 src/keyboard.cpp:71
|
||||
#: src/keyboard.cpp:17 src/keyboard.cpp:57
|
||||
msgid "Alt"
|
||||
msgstr "Alt"
|
||||
|
||||
#: src/keyboard.cpp:32 src/keyboard.cpp:70
|
||||
#: src/keyboard.cpp:18 src/keyboard.cpp:56
|
||||
msgid "Shift"
|
||||
msgstr "Shift"
|
||||
|
||||
#: src/keyboard.cpp:45
|
||||
#: src/keyboard.cpp:31
|
||||
msgid "Esc"
|
||||
msgstr "Esc"
|
||||
|
||||
#: src/keyboard.cpp:47
|
||||
#: src/keyboard.cpp:33
|
||||
msgid "F1"
|
||||
msgstr "F1"
|
||||
|
||||
#: src/keyboard.cpp:48
|
||||
#: src/keyboard.cpp:34
|
||||
msgid "F2"
|
||||
msgstr "F2"
|
||||
|
||||
#: src/keyboard.cpp:49
|
||||
#: src/keyboard.cpp:35
|
||||
msgid "F3"
|
||||
msgstr "F3"
|
||||
|
||||
#: src/keyboard.cpp:50
|
||||
#: src/keyboard.cpp:36
|
||||
msgid "F4"
|
||||
msgstr "F4"
|
||||
|
||||
#: src/keyboard.cpp:51
|
||||
#: src/keyboard.cpp:37
|
||||
msgid "F5"
|
||||
msgstr "F5"
|
||||
|
||||
#: src/keyboard.cpp:52
|
||||
#: src/keyboard.cpp:38
|
||||
msgid "F6"
|
||||
msgstr "F6"
|
||||
|
||||
#: src/keyboard.cpp:53
|
||||
#: src/keyboard.cpp:39
|
||||
msgid "F7"
|
||||
msgstr "F7"
|
||||
|
||||
#: src/keyboard.cpp:54
|
||||
#: src/keyboard.cpp:40
|
||||
msgid "F8"
|
||||
msgstr "F8"
|
||||
|
||||
#: src/keyboard.cpp:55
|
||||
#: src/keyboard.cpp:41
|
||||
msgid "F9"
|
||||
msgstr "F9"
|
||||
|
||||
#: src/keyboard.cpp:56
|
||||
#: src/keyboard.cpp:42
|
||||
msgid "F10"
|
||||
msgstr "F10"
|
||||
|
||||
#: src/keyboard.cpp:57
|
||||
#: src/keyboard.cpp:43
|
||||
msgid "F11"
|
||||
msgstr "F11"
|
||||
|
||||
#: src/keyboard.cpp:58
|
||||
#: src/keyboard.cpp:44
|
||||
msgid "F12"
|
||||
msgstr "F12"
|
||||
|
||||
#: src/keyboard.cpp:60
|
||||
#: src/keyboard.cpp:46
|
||||
msgid "Print Screen"
|
||||
msgstr "Print Screen"
|
||||
|
||||
#: src/keyboard.cpp:61
|
||||
#: src/keyboard.cpp:47
|
||||
msgid "Scroll Lock"
|
||||
msgstr "Scroll Lock"
|
||||
|
||||
#: src/keyboard.cpp:62
|
||||
#: src/keyboard.cpp:48
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
#: src/keyboard.cpp:64
|
||||
#: src/keyboard.cpp:50
|
||||
msgid "Backspace"
|
||||
msgstr "Backspace"
|
||||
|
||||
#: src/keyboard.cpp:65
|
||||
#: src/keyboard.cpp:51
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: src/keyboard.cpp:66
|
||||
#: src/keyboard.cpp:52
|
||||
msgid "Caps Lock"
|
||||
msgstr "Caps Lock"
|
||||
|
||||
#: src/keyboard.cpp:67
|
||||
#: src/keyboard.cpp:53
|
||||
msgid "Return"
|
||||
msgstr "Return"
|
||||
|
||||
#: src/keyboard.cpp:68
|
||||
#: src/keyboard.cpp:54
|
||||
msgid "Space"
|
||||
msgstr "preslednica"
|
||||
|
||||
#: src/keyboard.cpp:73
|
||||
#: src/keyboard.cpp:59
|
||||
msgid "Menu"
|
||||
msgstr "Menu"
|
||||
|
||||
#: src/keyboard.cpp:75
|
||||
#: src/keyboard.cpp:61
|
||||
msgid "Insert"
|
||||
msgstr "Insert"
|
||||
|
||||
#: src/keyboard.cpp:76
|
||||
#: src/keyboard.cpp:62
|
||||
msgid "Delete"
|
||||
msgstr "Delete"
|
||||
|
||||
#: src/keyboard.cpp:77
|
||||
#: src/keyboard.cpp:63
|
||||
msgid "Page Up"
|
||||
msgstr "Page Up"
|
||||
|
||||
#: src/keyboard.cpp:78
|
||||
#: src/keyboard.cpp:64
|
||||
msgid "Page Down"
|
||||
msgstr "Page Down"
|
||||
|
||||
#: src/keyboard.cpp:79
|
||||
#: src/keyboard.cpp:65
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: src/keyboard.cpp:80
|
||||
#: src/keyboard.cpp:66
|
||||
msgid "End"
|
||||
msgstr "End"
|
||||
|
||||
#: src/keyboard.cpp:82
|
||||
#: src/keyboard.cpp:68
|
||||
msgid "Left"
|
||||
msgstr "Left"
|
||||
|
||||
#: src/keyboard.cpp:83
|
||||
#: src/keyboard.cpp:69
|
||||
msgid "Up"
|
||||
msgstr "Up"
|
||||
|
||||
#: src/keyboard.cpp:84
|
||||
#: src/keyboard.cpp:70
|
||||
msgid "Right"
|
||||
msgstr "Right"
|
||||
|
||||
#: src/keyboard.cpp:85
|
||||
#: src/keyboard.cpp:71
|
||||
msgid "Down"
|
||||
msgstr "Down"
|
||||
|
||||
#: src/keyboard.cpp:87
|
||||
#: src/keyboard.cpp:73
|
||||
msgid "Num Lock"
|
||||
msgstr "Num Lock"
|
||||
|
||||
1
lib/oatpp
Submodule
1
lib/oatpp
Submodule
Submodule lib/oatpp added at 06ce4516c4
1
lib/oatpp-swagger
Submodule
1
lib/oatpp-swagger
Submodule
Submodule lib/oatpp-swagger added at 8cb460b546
Submodule lib/stdex updated: 1fbff95bd7...f9b7dba542
Submodule lib/wxExtend updated: e3a59d1118...dea6a38d30
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,6 +10,9 @@ msgstr ""
|
||||
msgid "Albanian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Alphabetic Presentation Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Apostrophes 1"
|
||||
msgstr ""
|
||||
|
||||
@@ -19,24 +22,42 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Armenian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Arrows"
|
||||
msgstr ""
|
||||
|
||||
msgid "Belarusian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Block Elements"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bosnian – Cyrillic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bosnian – Latinic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Box Drawing"
|
||||
msgstr ""
|
||||
|
||||
msgid "C0 Controls and Basic Latin (Basic Latin)"
|
||||
msgstr ""
|
||||
|
||||
msgid "C1 Controls and Latin-1 Supplement (Latin-1 Supplement)"
|
||||
msgstr ""
|
||||
|
||||
msgid "CAPITAL Case"
|
||||
msgstr ""
|
||||
|
||||
msgid "CAPITAL Case » small Case"
|
||||
msgstr ""
|
||||
|
||||
msgid "CJK Symbols and Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combine"
|
||||
msgstr ""
|
||||
|
||||
@@ -49,6 +70,18 @@ msgstr ""
|
||||
msgid "Combine Over"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks for Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Half Marks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Marks"
|
||||
msgstr ""
|
||||
|
||||
@@ -58,6 +91,9 @@ msgstr ""
|
||||
msgid "Currencies"
|
||||
msgstr ""
|
||||
|
||||
msgid "Currency Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic"
|
||||
msgstr ""
|
||||
|
||||
@@ -118,6 +154,12 @@ msgstr ""
|
||||
msgid "Cyrillic BdC"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic Extended-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic » Latin (GOST2000)"
|
||||
msgstr ""
|
||||
|
||||
@@ -130,9 +172,15 @@ msgstr ""
|
||||
msgid "Diacritics"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dingbats"
|
||||
msgstr ""
|
||||
|
||||
msgid "Encircled Characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enclosed Alphanumerics"
|
||||
msgstr ""
|
||||
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
@@ -148,6 +196,12 @@ msgstr ""
|
||||
msgid "Friulian"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Geometric Shapes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Geometrical Shapes"
|
||||
msgstr ""
|
||||
|
||||
@@ -169,12 +223,24 @@ msgstr ""
|
||||
msgid "Greek (Old)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Greek Extended"
|
||||
msgstr ""
|
||||
|
||||
msgid "Greek and Coptic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Gujarati"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hungarian"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPA Extensions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Irish Gaelic"
|
||||
msgstr ""
|
||||
|
||||
@@ -295,6 +361,21 @@ msgstr ""
|
||||
msgid "Latin BdC"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended Additional"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-C"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-D"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin » Cyrillic (Belarusian)"
|
||||
msgstr ""
|
||||
|
||||
@@ -418,19 +499,7 @@ msgstr ""
|
||||
msgid "Letter u"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Lowercase"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Modifier"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Other"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Titlecase"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Uppercase"
|
||||
msgid "Letterlike Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ligatures"
|
||||
@@ -445,21 +514,30 @@ msgstr ""
|
||||
msgid "Maltese"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark, Enclosing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark, Non-Spacing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark, Spacing Combining"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mathematical And Physical Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mathematical Operators"
|
||||
msgstr ""
|
||||
|
||||
msgid "Metric"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Symbols and Arrows"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Technical"
|
||||
msgstr ""
|
||||
|
||||
msgid "Modified"
|
||||
msgstr ""
|
||||
|
||||
@@ -505,13 +583,7 @@ msgstr ""
|
||||
msgid "Number 9"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number, Decimal Digit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number, Letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number, Other"
|
||||
msgid "Number Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Numbers"
|
||||
@@ -523,45 +595,27 @@ msgstr ""
|
||||
msgid "Other Modifiers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Other, Format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Other, Surrogate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parentheses"
|
||||
msgstr ""
|
||||
|
||||
msgid "Phonetic Extensions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Phonetic Extensions Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
|
||||
msgid "Private Use Area"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Close"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Connector"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Dash"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Final quote"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Initial quote"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Open"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Other"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quotes"
|
||||
msgstr ""
|
||||
|
||||
@@ -571,15 +625,6 @@ msgstr ""
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Separator, Line"
|
||||
msgstr ""
|
||||
|
||||
msgid "Separator, Paragraph"
|
||||
msgstr ""
|
||||
|
||||
msgid "Separator, Space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Serbian – Cyrillic"
|
||||
msgstr ""
|
||||
|
||||
@@ -607,19 +652,37 @@ msgstr ""
|
||||
msgid "Spaces"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spacing Modifier Letters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Special Characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specials"
|
||||
msgstr ""
|
||||
|
||||
msgid "Strokes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Subscript Characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Superscript Sharacters"
|
||||
msgid "Superscript Characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Superscripts and Subscripts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Arrows-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Arrows-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Surrounded"
|
||||
@@ -664,16 +727,7 @@ msgstr ""
|
||||
msgid "Symbol ?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Currency"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Math"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Modifier"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Other"
|
||||
msgid "Syriac"
|
||||
msgstr ""
|
||||
|
||||
msgid "Technical Characters"
|
||||
@@ -694,6 +748,9 @@ msgstr ""
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unified Canadian Aboriginal Syllabics"
|
||||
msgstr ""
|
||||
|
||||
msgid "Units"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola.zrcdb\n"
|
||||
"Language-Team: German (Germany) (https://www.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"Language-Team: German (Germany) (https://app.transifex.com/amebis/teams/91592/de_DE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -13,6 +13,9 @@ msgstr ""
|
||||
msgid "Albanian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Alphabetic Presentation Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Apostrophes 1"
|
||||
msgstr ""
|
||||
|
||||
@@ -22,24 +25,42 @@ msgstr ""
|
||||
msgid "Arabic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Armenian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Arrows"
|
||||
msgstr ""
|
||||
|
||||
msgid "Belarusian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Block Elements"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bosnian – Cyrillic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bosnian – Latinic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Box Drawing"
|
||||
msgstr ""
|
||||
|
||||
msgid "C0 Controls and Basic Latin (Basic Latin)"
|
||||
msgstr ""
|
||||
|
||||
msgid "C1 Controls and Latin-1 Supplement (Latin-1 Supplement)"
|
||||
msgstr ""
|
||||
|
||||
msgid "CAPITAL Case"
|
||||
msgstr ""
|
||||
|
||||
msgid "CAPITAL Case » small Case"
|
||||
msgstr ""
|
||||
|
||||
msgid "CJK Symbols and Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combine"
|
||||
msgstr ""
|
||||
|
||||
@@ -52,6 +73,18 @@ msgstr ""
|
||||
msgid "Combine Over"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks for Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Half Marks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Marks"
|
||||
msgstr ""
|
||||
|
||||
@@ -61,6 +94,9 @@ msgstr ""
|
||||
msgid "Currencies"
|
||||
msgstr ""
|
||||
|
||||
msgid "Currency Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic"
|
||||
msgstr ""
|
||||
|
||||
@@ -121,6 +157,12 @@ msgstr ""
|
||||
msgid "Cyrillic BdC"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic Extended-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic » Latin (GOST2000)"
|
||||
msgstr ""
|
||||
|
||||
@@ -133,9 +175,15 @@ msgstr ""
|
||||
msgid "Diacritics"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dingbats"
|
||||
msgstr ""
|
||||
|
||||
msgid "Encircled Characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enclosed Alphanumerics"
|
||||
msgstr ""
|
||||
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
@@ -151,6 +199,12 @@ msgstr ""
|
||||
msgid "Friulian"
|
||||
msgstr ""
|
||||
|
||||
msgid "General Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Geometric Shapes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Geometrical Shapes"
|
||||
msgstr ""
|
||||
|
||||
@@ -172,12 +226,24 @@ msgstr ""
|
||||
msgid "Greek (Old)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Greek Extended"
|
||||
msgstr ""
|
||||
|
||||
msgid "Greek and Coptic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Gujarati"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hungarian"
|
||||
msgstr ""
|
||||
|
||||
msgid "IPA Extensions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Irish Gaelic"
|
||||
msgstr ""
|
||||
|
||||
@@ -298,6 +364,21 @@ msgstr ""
|
||||
msgid "Latin BdC"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended Additional"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-C"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-D"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin » Cyrillic (Belarusian)"
|
||||
msgstr ""
|
||||
|
||||
@@ -421,19 +502,7 @@ msgstr ""
|
||||
msgid "Letter u"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Lowercase"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Modifier"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Other"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Titlecase"
|
||||
msgstr ""
|
||||
|
||||
msgid "Letter, Uppercase"
|
||||
msgid "Letterlike Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ligatures"
|
||||
@@ -448,21 +517,30 @@ msgstr ""
|
||||
msgid "Maltese"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark, Enclosing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark, Non-Spacing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark, Spacing Combining"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mathematical And Physical Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mathematical Operators"
|
||||
msgstr ""
|
||||
|
||||
msgid "Metric"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Symbols and Arrows"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Technical"
|
||||
msgstr ""
|
||||
|
||||
msgid "Modified"
|
||||
msgstr ""
|
||||
|
||||
@@ -508,13 +586,7 @@ msgstr ""
|
||||
msgid "Number 9"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number, Decimal Digit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number, Letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number, Other"
|
||||
msgid "Number Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Numbers"
|
||||
@@ -526,45 +598,27 @@ msgstr ""
|
||||
msgid "Other Modifiers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Other, Format"
|
||||
msgstr ""
|
||||
|
||||
msgid "Other, Surrogate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parentheses"
|
||||
msgstr ""
|
||||
|
||||
msgid "Phonetic Extensions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Phonetic Extensions Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
|
||||
msgid "Private Use Area"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Close"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Connector"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Dash"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Final quote"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Initial quote"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Open"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation, Other"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quotes"
|
||||
msgstr ""
|
||||
|
||||
@@ -574,15 +628,6 @@ msgstr ""
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Separator, Line"
|
||||
msgstr ""
|
||||
|
||||
msgid "Separator, Paragraph"
|
||||
msgstr ""
|
||||
|
||||
msgid "Separator, Space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Serbian – Cyrillic"
|
||||
msgstr ""
|
||||
|
||||
@@ -610,12 +655,18 @@ msgstr ""
|
||||
msgid "Spaces"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spacing Modifier Letters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Special Characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Specials"
|
||||
msgstr ""
|
||||
|
||||
msgid "Strokes"
|
||||
msgstr ""
|
||||
|
||||
@@ -625,6 +676,18 @@ msgstr ""
|
||||
msgid "Superscript Sharacters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Superscripts and Subscripts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Arrows-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Arrows-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Surrounded"
|
||||
msgstr ""
|
||||
|
||||
@@ -667,16 +730,7 @@ msgstr ""
|
||||
msgid "Symbol ?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Currency"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Math"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Modifier"
|
||||
msgstr ""
|
||||
|
||||
msgid "Symbol, Other"
|
||||
msgid "Syriac"
|
||||
msgstr ""
|
||||
|
||||
msgid "Technical Characters"
|
||||
@@ -697,6 +751,9 @@ msgstr ""
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unified Canadian Aboriginal Syllabics"
|
||||
msgstr ""
|
||||
|
||||
msgid "Units"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola.zrcdb\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Russian (Russia) (https://www.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"Language-Team: Russian (Russia) (https://app.transifex.com/amebis/teams/91592/ru_RU/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -17,6 +17,9 @@ msgstr ""
|
||||
msgid "Albanian"
|
||||
msgstr "албанский"
|
||||
|
||||
msgid "Alphabetic Presentation Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Apostrophes 1"
|
||||
msgstr "апострофы 1"
|
||||
|
||||
@@ -26,24 +29,42 @@ msgstr "апострофы 2"
|
||||
msgid "Arabic"
|
||||
msgstr "Арабские знаки"
|
||||
|
||||
msgid "Armenian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Arrows"
|
||||
msgstr "Стрелки"
|
||||
|
||||
msgid "Belarusian"
|
||||
msgstr "белорусский"
|
||||
|
||||
msgid "Block Elements"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bosnian – Cyrillic"
|
||||
msgstr "боснийский – кириллица"
|
||||
|
||||
msgid "Bosnian – Latinic"
|
||||
msgstr "боснийский – латиница"
|
||||
|
||||
msgid "Box Drawing"
|
||||
msgstr ""
|
||||
|
||||
msgid "C0 Controls and Basic Latin (Basic Latin)"
|
||||
msgstr ""
|
||||
|
||||
msgid "C1 Controls and Latin-1 Supplement (Latin-1 Supplement)"
|
||||
msgstr ""
|
||||
|
||||
msgid "CAPITAL Case"
|
||||
msgstr "ПРОПИСНИЕ буквы"
|
||||
|
||||
msgid "CAPITAL Case » small Case"
|
||||
msgstr "ПРОПИСНИЕ буквы » строчние буквы"
|
||||
|
||||
msgid "CJK Symbols and Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combine"
|
||||
msgstr "Средние замещающие знаки"
|
||||
|
||||
@@ -56,6 +77,18 @@ msgstr "Низжние замещающие знаки"
|
||||
msgid "Combine Over"
|
||||
msgstr "Неотдельные замещающие знаки"
|
||||
|
||||
msgid "Combining Diacritical Marks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Diacritical Marks for Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Half Marks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Combining Marks"
|
||||
msgstr "Модифицирующие символы"
|
||||
|
||||
@@ -65,6 +98,9 @@ msgstr "хорватский"
|
||||
msgid "Currencies"
|
||||
msgstr "Валюты"
|
||||
|
||||
msgid "Currency Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic"
|
||||
msgstr "Кириллические знаки"
|
||||
|
||||
@@ -125,6 +161,12 @@ msgstr "кириллица (украинский) » латиница (слов
|
||||
msgid "Cyrillic BdC"
|
||||
msgstr "кириллица (BdC)"
|
||||
|
||||
msgid "Cyrillic Extended-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cyrillic » Latin (GOST2000)"
|
||||
msgstr "кириллица » латиница (ГОСТ2000)"
|
||||
|
||||
@@ -137,9 +179,15 @@ msgstr "датский"
|
||||
msgid "Diacritics"
|
||||
msgstr "Диакритики"
|
||||
|
||||
msgid "Dingbats"
|
||||
msgstr ""
|
||||
|
||||
msgid "Encircled Characters"
|
||||
msgstr "Знаки в круге"
|
||||
|
||||
msgid "Enclosed Alphanumerics"
|
||||
msgstr ""
|
||||
|
||||
msgid "English"
|
||||
msgstr "английский"
|
||||
|
||||
@@ -155,6 +203,12 @@ msgstr "французский"
|
||||
msgid "Friulian"
|
||||
msgstr "фриульский"
|
||||
|
||||
msgid "General Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Geometric Shapes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Geometrical Shapes"
|
||||
msgstr "Геометрические фигуры"
|
||||
|
||||
@@ -177,12 +231,24 @@ msgstr ""
|
||||
msgid "Greek (Old)"
|
||||
msgstr "греческий алфавит (древнегреческий)"
|
||||
|
||||
msgid "Greek Extended"
|
||||
msgstr ""
|
||||
|
||||
msgid "Greek and Coptic"
|
||||
msgstr ""
|
||||
|
||||
msgid "Gujarati"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hebrew"
|
||||
msgstr "Еврейские знаки"
|
||||
|
||||
msgid "Hungarian"
|
||||
msgstr "венгерский"
|
||||
|
||||
msgid "IPA Extensions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Irish Gaelic"
|
||||
msgstr "ирландский гэльский"
|
||||
|
||||
@@ -303,6 +369,21 @@ msgstr "латиница (ALE)"
|
||||
msgid "Latin BdC"
|
||||
msgstr "латиница (BdC)"
|
||||
|
||||
msgid "Latin Extended Additional"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-C"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin Extended-D"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latin » Cyrillic (Belarusian)"
|
||||
msgstr "латиница » кириллица (белорусский)"
|
||||
|
||||
@@ -426,20 +507,8 @@ msgstr "Буква о"
|
||||
msgid "Letter u"
|
||||
msgstr "Буква у"
|
||||
|
||||
msgid "Letter, Lowercase"
|
||||
msgstr "Буква, строчная"
|
||||
|
||||
msgid "Letter, Modifier"
|
||||
msgstr "Буква, модификатор"
|
||||
|
||||
msgid "Letter, Other"
|
||||
msgstr "Буква, остальное"
|
||||
|
||||
msgid "Letter, Titlecase"
|
||||
msgstr "Буква, начальная"
|
||||
|
||||
msgid "Letter, Uppercase"
|
||||
msgstr "Буква, прописная"
|
||||
msgid "Letterlike Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ligatures"
|
||||
msgstr "Лигатуры"
|
||||
@@ -453,21 +522,30 @@ msgstr "македонский"
|
||||
msgid "Maltese"
|
||||
msgstr "мальтийский"
|
||||
|
||||
msgid "Mark, Enclosing"
|
||||
msgstr "Метка, закрывающая"
|
||||
|
||||
msgid "Mark, Non-Spacing"
|
||||
msgstr "Метка, несамостоятельная"
|
||||
|
||||
msgid "Mark, Spacing Combining"
|
||||
msgstr "Метка, несамостоятельная ненулевой ширины"
|
||||
|
||||
msgid "Mathematical And Physical Symbols"
|
||||
msgstr "Математические и физические знаки"
|
||||
|
||||
msgid "Mathematical Operators"
|
||||
msgstr ""
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Метрические знаки"
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Symbols"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Symbols and Arrows"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miscellaneous Technical"
|
||||
msgstr ""
|
||||
|
||||
msgid "Modified"
|
||||
msgstr "Изменяющие знаки"
|
||||
|
||||
@@ -513,14 +591,8 @@ msgstr "Число 8"
|
||||
msgid "Number 9"
|
||||
msgstr "Число 9"
|
||||
|
||||
msgid "Number, Decimal Digit"
|
||||
msgstr "Число, децималная цифра"
|
||||
|
||||
msgid "Number, Letter"
|
||||
msgstr "Число, буква"
|
||||
|
||||
msgid "Number, Other"
|
||||
msgstr "Число, другое"
|
||||
msgid "Number Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Numbers"
|
||||
msgstr "Числа"
|
||||
@@ -531,45 +603,27 @@ msgstr "Числа в круге"
|
||||
msgid "Other Modifiers"
|
||||
msgstr "Остальные замещающие знаки"
|
||||
|
||||
msgid "Other, Format"
|
||||
msgstr "Другое, формат"
|
||||
|
||||
msgid "Other, Surrogate"
|
||||
msgstr "Другое, суррогат"
|
||||
|
||||
msgid "Parentheses"
|
||||
msgstr "Скобкы"
|
||||
|
||||
msgid "Phonetic Extensions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Phonetic Extensions Supplement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "польский"
|
||||
|
||||
msgid "Portuguese"
|
||||
msgstr "португальский"
|
||||
|
||||
msgid "Private Use Area"
|
||||
msgstr ""
|
||||
|
||||
msgid "Punctuation"
|
||||
msgstr "Знаки препинания"
|
||||
|
||||
msgid "Punctuation, Close"
|
||||
msgstr "Пунктуация, заключительная"
|
||||
|
||||
msgid "Punctuation, Connector"
|
||||
msgstr "Пунктуация, соединитель"
|
||||
|
||||
msgid "Punctuation, Dash"
|
||||
msgstr "Пунктуация, черта"
|
||||
|
||||
msgid "Punctuation, Final quote"
|
||||
msgstr "Пунктуация, окончательная кавычка"
|
||||
|
||||
msgid "Punctuation, Initial quote"
|
||||
msgstr "Пунктуация, начальная кавычка"
|
||||
|
||||
msgid "Punctuation, Open"
|
||||
msgstr "Пунктуация, открывающая"
|
||||
|
||||
msgid "Punctuation, Other"
|
||||
msgstr "Пунктуация, остальное"
|
||||
|
||||
msgid "Quotes"
|
||||
msgstr "Кавычки"
|
||||
|
||||
@@ -579,15 +633,6 @@ msgstr "румынский"
|
||||
msgid "Russian"
|
||||
msgstr "русский"
|
||||
|
||||
msgid "Separator, Line"
|
||||
msgstr "Сепаратор, строчка"
|
||||
|
||||
msgid "Separator, Paragraph"
|
||||
msgstr "Сепаратор, абзац"
|
||||
|
||||
msgid "Separator, Space"
|
||||
msgstr "Сепаратор, пробел"
|
||||
|
||||
msgid "Serbian – Cyrillic"
|
||||
msgstr "сербский – кириллица"
|
||||
|
||||
@@ -615,12 +660,18 @@ msgstr "лужицкий"
|
||||
msgid "Spaces"
|
||||
msgstr "Пробелы"
|
||||
|
||||
msgid "Spacing Modifier Letters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr "испанский"
|
||||
|
||||
msgid "Special Characters"
|
||||
msgstr "Специальные знаки"
|
||||
|
||||
msgid "Specials"
|
||||
msgstr ""
|
||||
|
||||
msgid "Strokes"
|
||||
msgstr "Перечертка"
|
||||
|
||||
@@ -630,6 +681,18 @@ msgstr "Форматирование нижнего индекса"
|
||||
msgid "Superscript Sharacters"
|
||||
msgstr "Форматирование надстрочного индекса"
|
||||
|
||||
msgid "Superscripts and Subscripts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Arrows-A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Arrows-B"
|
||||
msgstr ""
|
||||
|
||||
msgid "Supplemental Punctuation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Surrounded"
|
||||
msgstr "В круге"
|
||||
|
||||
@@ -672,17 +735,8 @@ msgstr "Симбол >"
|
||||
msgid "Symbol ?"
|
||||
msgstr "Симбол ?"
|
||||
|
||||
msgid "Symbol, Currency"
|
||||
msgstr "Симбол, валюта"
|
||||
|
||||
msgid "Symbol, Math"
|
||||
msgstr "Симбол, математический"
|
||||
|
||||
msgid "Symbol, Modifier"
|
||||
msgstr "Симбол, модификатор"
|
||||
|
||||
msgid "Symbol, Other"
|
||||
msgstr "Симбол, остальное"
|
||||
msgid "Syriac"
|
||||
msgstr ""
|
||||
|
||||
msgid "Technical Characters"
|
||||
msgstr "Технические символы"
|
||||
@@ -702,6 +756,9 @@ msgstr "турецкий"
|
||||
msgid "Ukrainian"
|
||||
msgstr "украинский"
|
||||
|
||||
msgid "Unified Canadian Aboriginal Syllabics"
|
||||
msgstr ""
|
||||
|
||||
msgid "Units"
|
||||
msgstr "Единицы"
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# Simon Rozman <simon@rozman.si>, 2025
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ZRCola.zrcdb\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://www.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2025\n"
|
||||
"Language-Team: Slovenian (Slovenia) (https://app.transifex.com/amebis/teams/91592/sl_SI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -17,6 +17,9 @@ msgstr ""
|
||||
msgid "Albanian"
|
||||
msgstr "albanščina"
|
||||
|
||||
msgid "Alphabetic Presentation Forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Apostrophes 1"
|
||||
msgstr "apostrofi 1"
|
||||
|
||||
@@ -26,24 +29,42 @@ msgstr "apostrofi 2"
|
||||
msgid "Arabic"
|
||||
msgstr "Arabski znaki"
|
||||
|
||||
msgid "Armenian"
|
||||
msgstr "armenščina"
|
||||
|
||||
msgid "Arrows"
|
||||
msgstr "Puščice"
|
||||
|
||||
msgid "Belarusian"
|
||||
msgstr "beloruščina"
|
||||
|
||||
msgid "Block Elements"
|
||||
msgstr "Blokovni elementi"
|
||||
|
||||
msgid "Bosnian – Cyrillic"
|
||||
msgstr "bosanščina – cirilica"
|
||||
|
||||
msgid "Bosnian – Latinic"
|
||||
msgstr "bosanščina – latinica"
|
||||
|
||||
msgid "Box Drawing"
|
||||
msgstr "Risanje okvirjev"
|
||||
|
||||
msgid "C0 Controls and Basic Latin (Basic Latin)"
|
||||
msgstr "Kontrolni znaki C0 in osnovna latinica (osnovna latinica)"
|
||||
|
||||
msgid "C1 Controls and Latin-1 Supplement (Latin-1 Supplement)"
|
||||
msgstr "Kontrolni znaki C1 in dopolnitev Latin-1 (dopolnitev Latin-1)"
|
||||
|
||||
msgid "CAPITAL Case"
|
||||
msgstr "VELIKE črke"
|
||||
|
||||
msgid "CAPITAL Case » small Case"
|
||||
msgstr "VELIKE črke » male črke"
|
||||
|
||||
msgid "CJK Symbols and Punctuation"
|
||||
msgstr "Simboli in ločila KJK"
|
||||
|
||||
msgid "Combine"
|
||||
msgstr "Srednji nadomestni znaki"
|
||||
|
||||
@@ -56,6 +77,18 @@ msgstr "Spodnji nadomestni znaki"
|
||||
msgid "Combine Over"
|
||||
msgstr "Neločljivi nadomestni znaki"
|
||||
|
||||
msgid "Combining Diacritical Marks"
|
||||
msgstr "Sestavljiva naglasna znamenja"
|
||||
|
||||
msgid "Combining Diacritical Marks Supplement"
|
||||
msgstr "Dopolnilna sestavljiva naglasna znamenja"
|
||||
|
||||
msgid "Combining Diacritical Marks for Symbols"
|
||||
msgstr "Sestavljiva naglasna znamenja za simbole"
|
||||
|
||||
msgid "Combining Half Marks"
|
||||
msgstr "Sestavljiva večznakovna znamenja"
|
||||
|
||||
msgid "Combining Marks"
|
||||
msgstr "Sestavljiva ločevalna znamenja"
|
||||
|
||||
@@ -65,8 +98,11 @@ msgstr "hrvaščina"
|
||||
msgid "Currencies"
|
||||
msgstr "Valute"
|
||||
|
||||
msgid "Currency Symbols"
|
||||
msgstr "Simboli valut"
|
||||
|
||||
msgid "Cyrillic"
|
||||
msgstr "Cirilski znaki"
|
||||
msgstr "Cirilica"
|
||||
|
||||
msgid "Cyrillic (Belarusian)"
|
||||
msgstr "cirilica (beloruščina)"
|
||||
@@ -125,6 +161,12 @@ msgstr "cirilica (ukrajinščina) » latinica (slovenščina)"
|
||||
msgid "Cyrillic BdC"
|
||||
msgstr "cirilica (BdC)"
|
||||
|
||||
msgid "Cyrillic Extended-B"
|
||||
msgstr "Razširitev cirilice B"
|
||||
|
||||
msgid "Cyrillic Supplement"
|
||||
msgstr "Dopolnitev cirilice"
|
||||
|
||||
msgid "Cyrillic » Latin (GOST2000)"
|
||||
msgstr "cirilica » latinica (GOST2000)"
|
||||
|
||||
@@ -137,9 +179,15 @@ msgstr "danščina"
|
||||
msgid "Diacritics"
|
||||
msgstr "Ločevalna znamenja"
|
||||
|
||||
msgid "Dingbats"
|
||||
msgstr "Ornamenti"
|
||||
|
||||
msgid "Encircled Characters"
|
||||
msgstr "Obkroženi znaki"
|
||||
|
||||
msgid "Enclosed Alphanumerics"
|
||||
msgstr "Obkrožene črke in številke"
|
||||
|
||||
msgid "English"
|
||||
msgstr "angleščina"
|
||||
|
||||
@@ -155,6 +203,12 @@ msgstr "francoščina"
|
||||
msgid "Friulian"
|
||||
msgstr "furlanščina"
|
||||
|
||||
msgid "General Punctuation"
|
||||
msgstr "Splošna ločila"
|
||||
|
||||
msgid "Geometric Shapes"
|
||||
msgstr "Geometrijske oblike"
|
||||
|
||||
msgid "Geometrical Shapes"
|
||||
msgstr "Geometrijski liki"
|
||||
|
||||
@@ -176,12 +230,24 @@ msgstr "grški alfabet (nova grščina) » grški alfabet (stara grščina)"
|
||||
msgid "Greek (Old)"
|
||||
msgstr "grški alfabet (stara grščina)"
|
||||
|
||||
msgid "Greek Extended"
|
||||
msgstr "Razširitev grščine"
|
||||
|
||||
msgid "Greek and Coptic"
|
||||
msgstr "Grščina in koptščina"
|
||||
|
||||
msgid "Gujarati"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hebrew"
|
||||
msgstr "Hebrejski znaki"
|
||||
msgstr "hebrejščina"
|
||||
|
||||
msgid "Hungarian"
|
||||
msgstr "madžarščina"
|
||||
|
||||
msgid "IPA Extensions"
|
||||
msgstr "Razširitve IPA"
|
||||
|
||||
msgid "Irish Gaelic"
|
||||
msgstr "irščina"
|
||||
|
||||
@@ -302,6 +368,21 @@ msgstr "latinščina (ALE)"
|
||||
msgid "Latin BdC"
|
||||
msgstr "latinščina (BdC)"
|
||||
|
||||
msgid "Latin Extended Additional"
|
||||
msgstr "Dodatna razširitev latinice"
|
||||
|
||||
msgid "Latin Extended-A"
|
||||
msgstr "Razširitev latinice A"
|
||||
|
||||
msgid "Latin Extended-B"
|
||||
msgstr "Razširitev latinice B"
|
||||
|
||||
msgid "Latin Extended-C"
|
||||
msgstr "Razširitev latinice C"
|
||||
|
||||
msgid "Latin Extended-D"
|
||||
msgstr "Razširitev latinice D"
|
||||
|
||||
msgid "Latin » Cyrillic (Belarusian)"
|
||||
msgstr "latinica » cirilica (beloruščina)"
|
||||
|
||||
@@ -425,20 +506,8 @@ msgstr "Črka o"
|
||||
msgid "Letter u"
|
||||
msgstr "Črka u"
|
||||
|
||||
msgid "Letter, Lowercase"
|
||||
msgstr "Črka, mala"
|
||||
|
||||
msgid "Letter, Modifier"
|
||||
msgstr "Črka, spreminjevalo"
|
||||
|
||||
msgid "Letter, Other"
|
||||
msgstr "Črka, drugo"
|
||||
|
||||
msgid "Letter, Titlecase"
|
||||
msgstr "Črka, naslovna"
|
||||
|
||||
msgid "Letter, Uppercase"
|
||||
msgstr "Črka, velika"
|
||||
msgid "Letterlike Symbols"
|
||||
msgstr "Simboli iz črk"
|
||||
|
||||
msgid "Ligatures"
|
||||
msgstr "Ligature"
|
||||
@@ -452,21 +521,30 @@ msgstr "makedonščina"
|
||||
msgid "Maltese"
|
||||
msgstr "malteščina"
|
||||
|
||||
msgid "Mark, Enclosing"
|
||||
msgstr "Ločevalo, obdajajoče"
|
||||
|
||||
msgid "Mark, Non-Spacing"
|
||||
msgstr "Ločevalo, neločljivo"
|
||||
|
||||
msgid "Mark, Spacing Combining"
|
||||
msgstr "Ločevalo, ločljivo"
|
||||
|
||||
msgid "Mathematical And Physical Symbols"
|
||||
msgstr "Matematični in fizikalni simboli"
|
||||
|
||||
msgid "Mathematical Operators"
|
||||
msgstr "Matematični operatorji"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrično"
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-A"
|
||||
msgstr "Razni matematični simboli A"
|
||||
|
||||
msgid "Miscellaneous Mathematical Symbols-B"
|
||||
msgstr "Razni matematični simboli B"
|
||||
|
||||
msgid "Miscellaneous Symbols"
|
||||
msgstr "Razni simboli"
|
||||
|
||||
msgid "Miscellaneous Symbols and Arrows"
|
||||
msgstr "Razni simboli in puščice"
|
||||
|
||||
msgid "Miscellaneous Technical"
|
||||
msgstr "Razno tehnika"
|
||||
|
||||
msgid "Modified"
|
||||
msgstr "Spreminjevalni nadomestni znaki"
|
||||
|
||||
@@ -512,14 +590,8 @@ msgstr "Številka 8"
|
||||
msgid "Number 9"
|
||||
msgstr "Številka 9"
|
||||
|
||||
msgid "Number, Decimal Digit"
|
||||
msgstr "Številka, desetiška števka"
|
||||
|
||||
msgid "Number, Letter"
|
||||
msgstr "Številka, črka"
|
||||
|
||||
msgid "Number, Other"
|
||||
msgstr "Številka, drugo"
|
||||
msgid "Number Forms"
|
||||
msgstr "Oblike števnikov"
|
||||
|
||||
msgid "Numbers"
|
||||
msgstr "Številke"
|
||||
@@ -530,45 +602,27 @@ msgstr "Številka, obkrožena"
|
||||
msgid "Other Modifiers"
|
||||
msgstr "Ostali nadomestni znaki"
|
||||
|
||||
msgid "Other, Format"
|
||||
msgstr "Drugo, oblikovni znaki"
|
||||
|
||||
msgid "Other, Surrogate"
|
||||
msgstr "Drugo, nadomestni znaki"
|
||||
|
||||
msgid "Parentheses"
|
||||
msgstr "Oklepaji"
|
||||
|
||||
msgid "Phonetic Extensions"
|
||||
msgstr "Fonetične razširitve"
|
||||
|
||||
msgid "Phonetic Extensions Supplement"
|
||||
msgstr "Dopolnitev fonetične razširitve"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "poljščina"
|
||||
|
||||
msgid "Portuguese"
|
||||
msgstr "portugalščina"
|
||||
|
||||
msgid "Private Use Area"
|
||||
msgstr "Območje zasebne rabe"
|
||||
|
||||
msgid "Punctuation"
|
||||
msgstr "Ločila"
|
||||
|
||||
msgid "Punctuation, Close"
|
||||
msgstr "Ločilo, zapiralno"
|
||||
|
||||
msgid "Punctuation, Connector"
|
||||
msgstr "Ločilo, povezaj"
|
||||
|
||||
msgid "Punctuation, Dash"
|
||||
msgstr "Ločilo, pomišljaj"
|
||||
|
||||
msgid "Punctuation, Final quote"
|
||||
msgstr "Ločilo, zaključni narekovaj"
|
||||
|
||||
msgid "Punctuation, Initial quote"
|
||||
msgstr "Ločilo, uvodni narekovaj"
|
||||
|
||||
msgid "Punctuation, Open"
|
||||
msgstr "Ločilo, odpiralno"
|
||||
|
||||
msgid "Punctuation, Other"
|
||||
msgstr "Ločilo, drugo"
|
||||
|
||||
msgid "Quotes"
|
||||
msgstr "Narekovaji"
|
||||
|
||||
@@ -578,15 +632,6 @@ msgstr "romunščina"
|
||||
msgid "Russian"
|
||||
msgstr "ruščina"
|
||||
|
||||
msgid "Separator, Line"
|
||||
msgstr "Ločilo, vrstica"
|
||||
|
||||
msgid "Separator, Paragraph"
|
||||
msgstr "Ločilo, odstavek"
|
||||
|
||||
msgid "Separator, Space"
|
||||
msgstr "Ločilo, presledek"
|
||||
|
||||
msgid "Serbian – Cyrillic"
|
||||
msgstr "srbščina – cirilica"
|
||||
|
||||
@@ -614,12 +659,18 @@ msgstr "lužiščini"
|
||||
msgid "Spaces"
|
||||
msgstr "Presledki"
|
||||
|
||||
msgid "Spacing Modifier Letters"
|
||||
msgstr "Nesestavljive nadomestne črke"
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr "španščina"
|
||||
|
||||
msgid "Special Characters"
|
||||
msgstr "Posebni znaki"
|
||||
|
||||
msgid "Specials"
|
||||
msgstr "Posebno"
|
||||
|
||||
msgid "Strokes"
|
||||
msgstr "Poševnice"
|
||||
|
||||
@@ -629,6 +680,18 @@ msgstr "Podpisani znaki"
|
||||
msgid "Superscript Sharacters"
|
||||
msgstr "Nadpisani znaki"
|
||||
|
||||
msgid "Superscripts and Subscripts"
|
||||
msgstr "Nadpisano in podpisano"
|
||||
|
||||
msgid "Supplemental Arrows-A"
|
||||
msgstr "Dopolnilne puščice A"
|
||||
|
||||
msgid "Supplemental Arrows-B"
|
||||
msgstr "Dopolnilne puščice B"
|
||||
|
||||
msgid "Supplemental Punctuation"
|
||||
msgstr "Dopolnilna ločila"
|
||||
|
||||
msgid "Surrounded"
|
||||
msgstr "Obkrožajni nadomestni znaki"
|
||||
|
||||
@@ -671,17 +734,8 @@ msgstr "Simbol >"
|
||||
msgid "Symbol ?"
|
||||
msgstr "Simbol ?"
|
||||
|
||||
msgid "Symbol, Currency"
|
||||
msgstr "Simbol, valuta"
|
||||
|
||||
msgid "Symbol, Math"
|
||||
msgstr "Simbol, matematični"
|
||||
|
||||
msgid "Symbol, Modifier"
|
||||
msgstr "Simbol, ločevalo"
|
||||
|
||||
msgid "Symbol, Other"
|
||||
msgstr "Simbol, drugo"
|
||||
msgid "Syriac"
|
||||
msgstr ""
|
||||
|
||||
msgid "Technical Characters"
|
||||
msgstr "Tehnični znaki"
|
||||
@@ -701,6 +755,9 @@ msgstr "turščina"
|
||||
msgid "Ukrainian"
|
||||
msgstr "ukrajinščina"
|
||||
|
||||
msgid "Unified Canadian Aboriginal Syllabics"
|
||||
msgstr ""
|
||||
|
||||
msgid "Units"
|
||||
msgstr "Enote"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user