Compare commits

...

4 Commits

Author SHA1 Message Date
e6ea4a2742 Order blocks by Unicode location
Signed-off-by: Simon Rozman <simon.rozman@amebis.si>
2025-12-03 12:49:19 +01:00
83e2022ef6 Pull translations from Transifex
Signed-off-by: Simon Rozman <simon.rozman@amebis.si>
2025-12-02 11:31:03 +01:00
45b1b0eb58 Fork my mailbox to business and personal
Signed-off-by: Simon Rozman <simon.rozman@amebis.si>
2025-11-21 03:33:12 +01:00
Simon Rozman
8119bb9271 Preset version to 2.7.2
Signed-off-by: Simon Rozman <simon@rozman.si>
2025-11-21 03:27:21 +01:00
25 changed files with 296 additions and 236 deletions

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2022
# Simon Rozman <simon.rozman@amebis.si>, 2022
#
#, fuzzy
msgid ""
@@ -9,7 +9,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2022\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"

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2022
# Simon Rozman <simon.rozman@amebis.si>, 2022
#
#, fuzzy
msgid ""
@@ -9,7 +9,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2022\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"

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2022
# Simon Rozman <simon.rozman@amebis.si>, 2022
#
#, fuzzy
msgid ""
@@ -9,7 +9,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2022\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"

Submodule Updater updated: f457f62448...f8c5385216

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2021
# Simon Rozman <simon.rozman@amebis.si>, 2021
#
#, fuzzy
msgid ""
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: ZRCola\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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2021\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"

View File

@@ -1,7 +1,7 @@
#
# Translators:
# Janoš Ježovnik, 2019
# Simon Rozman <simon@rozman.si>, 2021
# Simon Rozman <simon.rozman@amebis.si>, 2021
#
#, fuzzy
msgid ""
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: ZRCola\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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2021\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"

View File

@@ -1,6 +1,7 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2025
# Simon Rozman <simon.rozman@amebis.si>, 2025
# Janoš Ježovnik, 2025
#
#, fuzzy
msgid ""
@@ -8,7 +9,7 @@ msgstr ""
"Project-Id-Version: ZRCola\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>, 2025\n"
"Last-Translator: Janoš Ježovnik, 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"
@@ -82,11 +83,11 @@ msgstr "▾ Možnosti iskanja"
#: zrcolafrm.cpp:76
msgid "No Translation"
msgstr "Brez transliteracije"
msgstr "Brez prečrkovanja"
#: zrcolafrm.cpp:89
msgid "Custom Translation..."
msgstr "Pretvorba po meri ..."
msgstr "Prečrkovanje po meri ..."
#: zrcolafrm.cpp:209
msgid ""
@@ -186,7 +187,7 @@ msgstr ""
#: zrcolagui.cpp:126
msgid "Abort (De)composition"
msgstr "Prekini raz/sestavljanje"
msgstr "Prekini raz-/sestavljanje"
#: zrcolagui.cpp:126
msgid "Abort composition and return focus to source window"
@@ -222,7 +223,7 @@ msgstr "(Raz-)sestavljanje znakov Unicode"
#: zrcolagui.cpp:151
msgid "Tra&nslation"
msgstr "Tra&nsliteracija"
msgstr "Prečrkova&nje"
#: zrcolagui.cpp:156
msgid "&PUA Warning"

View File

@@ -204,8 +204,8 @@ wxZRColaCharSelect::wxZRColaCharSelect(wxWindow* parent) :
// Fill blocks.
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxRank[i];
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxFirst[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));
@@ -267,7 +267,7 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
{
// 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)) {
if (app->m_cb_db.idxChrId.find(ZRCola::chrblk_db::chrblk(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
@@ -341,8 +341,8 @@ void wxZRColaCharSelect::OnIdle(wxIdleEvent& event)
m_searchThread->m_search.assign(val.c_str(), val.Length());
// 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];
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxFirst[i];
if (m_blocks->IsChecked((unsigned int)i))
m_searchThread->m_blks.insert(cb.id);
}
@@ -389,7 +389,7 @@ void wxZRColaCharSelect::OnBlocksAll(wxHyperlinkEvent& event)
event.StopPropagation();
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++)
m_blocks->Check((unsigned int)i, true);
m_searchChanged = true;
@@ -401,7 +401,7 @@ void wxZRColaCharSelect::OnBlocksNone(wxHyperlinkEvent& event)
event.StopPropagation();
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++)
m_blocks->Check((unsigned int)i, false);
m_searchChanged = true;
@@ -413,7 +413,7 @@ void wxZRColaCharSelect::OnBlocksInvert(wxHyperlinkEvent& event)
event.StopPropagation();
auto app = dynamic_cast<ZRColaApp*>(wxTheApp);
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++)
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++)
m_blocks->Check((unsigned int)i, !m_blocks->IsChecked((unsigned int)i));
m_searchChanged = true;
@@ -820,8 +820,8 @@ 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_cb_db.idxRank.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxRank[i];
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxFirst[i];
SaveValue(wxString::Format(wxT("block%u"), cb.id), wnd->m_blocks->IsChecked((unsigned int)i));
}
@@ -853,8 +853,8 @@ bool wxPersistentZRColaCharSelect::Restore()
wnd->m_gridRecent->SetCharacters(val);
}
for (size_t i = 0, n = app->m_cb_db.idxRank.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxRank[i];
for (size_t i = 0, n = app->m_cb_db.idxFirst.size(); i < n; i++) {
const auto &cb = app->m_cb_db.idxFirst[i];
bool val;
if (RestoreValue(wxString::Format(wxT("block%u"), cb.id), &val))
wnd->m_blocks->Check((unsigned int)i, val);

View File

@@ -16,6 +16,7 @@
#include <WinStd/COM.h>
#include <WinStd/Win.h>
#include <stdex/string.hpp>
#include <wxex/common.h>
#pragma warning(push)
@@ -1019,11 +1020,21 @@ inline ZRCola::chrblk_db& operator<<(_Inout_ ZRCola::chrblk_db &db, _In_ const Z
uint32_t idx = db.data.size();
db.data.push_back((uint16_t)rec.second.id);
db.data.push_back((uint16_t)rec.second.rank);
std::wstring::size_type n = rec.second.name.length();
std::wstring::size_type n = rec.first >= 0x10000 ? 2 : 1;
db.data.push_back((uint16_t)n);
n += rec.second.name.length();
wxASSERT_MSG(n <= 0xffff, wxT("character block name overflow"));
db.data.push_back((uint16_t)n);
if (rec.first < 0x10000)
db.data.push_back((uint16_t)rec.first);
else {
stdex::utf16_t buf[2];
stdex::ucs4_to_surrogate_pair(buf, rec.first);
db.data.insert(db.data.end(), &buf[0], &buf[2]);
}
db.data.insert(db.data.end(), rec.second.name.cbegin(), rec.second.name.cend());
db.idxChrId.push_back(idx);
db.idxFirst.push_back(idx);
db.idxRank .push_back(idx);
return db;

View File

@@ -821,6 +821,7 @@ int _tmain(int argc, _TCHAR *argv[])
// Preallocate memory.
db.idxChrId.reserve(chrs.idxChrBlk.size());
db.idxFirst.reserve(chrs.idxChrBlk.size());
db.idxRank.reserve(chrs.idxChrBlk.size());
db.data.reserve(chrs.idxChrBlk.size() * 16);
@@ -841,6 +842,7 @@ int _tmain(int argc, _TCHAR *argv[])
// Write character blocks to file.
db.idxChrId.sort();
db.idxFirst.sort();
db.idxRank.sort();
dst << ZRCola::chrblk_rec(db);
}

View File

@@ -9,7 +9,7 @@
// Product version as a single DWORD
// Note: Used for version comparison within C/C++ code.
//
#define PRODUCT_VERSION 0x02070100
#define PRODUCT_VERSION 0x02070200
//
// Product version by components
@@ -19,26 +19,26 @@
//
#define PRODUCT_VERSION_MAJ 2
#define PRODUCT_VERSION_MIN 7
#define PRODUCT_VERSION_REV 1
#define PRODUCT_VERSION_REV 2
#define PRODUCT_VERSION_BUILD 0
//
// Human readable product version and build year for UI
//
#define PRODUCT_VERSION_STR "2.7.1"
#define PRODUCT_VERSION_STR "2.7.2"
#define PRODUCT_BUILD_YEAR_STR "2025"
//
// Numerical version presentation for ProductVersion property in
// MSI packages (syntax: N.N[.N[.N]])
//
#define PRODUCT_VERSION_INST "2.7.1"
#define PRODUCT_VERSION_INST "2.7.2"
//
// 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 "{9423BEC3-3159-4130-8C3E-48D5DE24D48A}"
#define PRODUCT_VERSION_GUID "{4B9FEEBE-280F-414D-BC8D-CB091F00C48F}"
//
// The product vendor and application name for configuration keeping.

View File

@@ -289,62 +289,74 @@ namespace ZRCola {
///
/// Character classification database template
/// Character block database
///
template <typename T_id>
class chrclass_db {
class chrblk_db {
public:
#pragma pack(push)
#pragma pack(2)
///
/// Character classification data
/// Character block data
///
struct chrcls {
struct chrblk {
public:
T_id id; ///< Character classification ID
uint16_t rank; ///< Character classification rank
chrblkid_t id; ///< Character block ID
uint16_t rank; ///< Character block rank
protected:
uint16_t name_to; ///< Character classification name end in \c data
char_t data[]; ///< Character classification name
uint16_t first_to; ///< Character block first character end in \c data
uint16_t name_to; ///< Character block name end in \c data
char_t data[]; ///< Character block name
private:
chrcls(_In_ const chrcls &other);
chrcls& operator=(_In_ const chrcls &other);
chrblk(_In_ const chrblk &other);
chrblk& operator=(_In_ const chrblk &other);
public:
///
/// Constructs the character classification
/// Constructs the character block
///
/// \param[in] id Character classification ID
/// \param[in] rank Character classification rank
/// \param[in] name Character classification name
/// \param[in] name_len Number of UTF-16 characters in \p name
/// \param[in] id Character block ID
/// \param[in] rank Character block rank
/// \param[in] first Character block first character
/// \param[in] first_len Number of UTF-16 characters in \p first
/// \param[in] name Character block name
/// \param[in] name_len Number of UTF-16 characters in \p name
///
chrcls(
_In_opt_ T_id id = default,
_In_opt_ uint16_t rank = 0,
_In_opt_z_count_(name_len) const char_t *name = NULL,
_In_opt_ size_t name_len = 0)
chrblk(
_In_opt_ chrblkid_t id = 0,
_In_opt_ uint16_t rank = 0,
_In_opt_z_count_(first_len) const char_t *first = NULL,
_In_opt_ size_t first_len = 0,
_In_opt_z_count_(name_len) const char_t *name = NULL,
_In_opt_ size_t name_len = 0)
{
this->id = id;
this->rank = rank;
this->name_to = static_cast<uint16_t>(name_len);
if (name && name_len) memcpy(this->data, name, sizeof(char_t)*name_len);
this->first_to = static_cast<uint16_t>(first_len);
if (first && first_len) memcpy(this->data, first, sizeof(char_t)*first_len);
this->name_to = static_cast<uint16_t>(this->first_to + name_len);
if (name && name_len) memcpy(this->data + this->first_to, 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; };
const char_t* first () const { return data; };
char_t* first () { return data; };
const char_t* first_end() const { return data + first_to; };
char_t* first_end() { return data + first_to; };
uint16_t first_len() const { return first_to; };
const char_t* name () const { return data + first_to; };
char_t* name () { return data + first_to; };
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 - first_to; };
};
#pragma pack(pop)
///
/// Character classification index
/// Character block index
///
class indexChrId : public index<uint16_t, uint32_t, chrcls>
class indexChrId : public index<uint16_t, uint32_t, chrblk>
{
public:
///
@@ -352,10 +364,10 @@ namespace ZRCola {
///
/// \param[in] h Reference to vector holding the data
///
indexChrId(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrcls>(h) {}
indexChrId(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrblk>(h) {}
///
/// Compares two character categories by ID (for searching)
/// Compares two character blocks by ID (for searching)
///
/// \param[in] a Pointer to first element
/// \param[in] b Pointer to second element
@@ -365,19 +377,19 @@ namespace ZRCola {
/// - =0 when a == b
/// - >0 when a > b
///
virtual int compare(_In_ const chrcls &a, _In_ const chrcls &b) const
virtual int compare(_In_ const chrblk &a, _In_ const chrblk &b) const
{
if (a.id < b.id) return -1;
if (a.id > b.id) return 1;
return 0;
}
} idxChrId; ///< Character classification index
} idxChrId; ///< Character block index
///
/// Rank index
/// First character index
///
class indexRank : public index<uint16_t, uint32_t, chrcls>
class indexFirst : public index<uint16_t, uint32_t, chrblk>
{
public:
///
@@ -385,10 +397,10 @@ namespace ZRCola {
///
/// \param[in] h Reference to vector holding the data
///
indexRank(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrcls>(h) {}
indexFirst(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrblk>(h) {}
///
/// Compares two character categories by ID (for searching)
/// Compares two character blocks by first character (for searching)
///
/// \param[in] a Pointer to first element
/// \param[in] b Pointer to second element
@@ -398,7 +410,40 @@ namespace ZRCola {
/// - =0 when a == b
/// - >0 when a > b
///
virtual int compare(_In_ const chrcls &a, _In_ const chrcls &b) const
virtual int compare(_In_ const chrblk &a, _In_ const chrblk &b) const
{
int r = ZRCola::CompareString(a.first(), a.first_len(), b.first(), b.first_len());
if (r != 0) return r;
return 0;
}
} idxFirst; ///< First character index
///
/// Rank index
///
class indexRank : public index<uint16_t, uint32_t, chrblk>
{
public:
///
/// Constructs the index
///
/// \param[in] h Reference to vector holding the data
///
indexRank(_In_ std::vector<uint16_t> &h) : index<uint16_t, uint32_t, chrblk>(h) {}
///
/// Compares two character blocks 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 chrblk &a, _In_ const chrblk &b) const
{
if (a.rank < b.rank) return -1;
if (a.rank > b.rank) return +1;
@@ -407,17 +452,17 @@ namespace ZRCola {
}
///
/// Compares two character categories by rank (for sorting)
/// Compares two character blocks by rank (for sorting)
///
/// \param[in] a Pointer to character classification
/// \param[in] b Pointer to second character classification
/// \param[in] a Pointer to character block
/// \param[in] b Pointer to second character block
///
/// \returns
/// - <0 when a < b
/// - =0 when a == b
/// - >0 when a > b
///
virtual int compare_sort(_In_ const chrcls &a, _In_ const chrcls &b) const
virtual int compare_sort(_In_ const chrblk &a, _In_ const chrblk &b) const
{
if (a.rank < b.rank) return -1;
else if (a.rank > b.rank) return +1;
@@ -427,13 +472,13 @@ namespace ZRCola {
}
} idxRank; ///< Rank index
std::vector<uint16_t> data; ///< Character classification data
std::vector<uint16_t> data; ///< Character block data
public:
///
/// Constructs the database
///
chrclass_db() : idxChrId(data), idxRank(data) {}
chrblk_db() : idxChrId(data), idxFirst(data), idxRank(data) {}
///
/// Clears the database
@@ -441,25 +486,30 @@ namespace ZRCola {
void clear()
{
idxChrId.clear();
idxFirst.clear();
idxRank .clear();
data .clear();
}
///
/// Writes character classification database to a stream
/// Writes character block database to a stream
///
/// \param[in] stream Output stream
/// \param[in] db Character classification database
/// \param[in] db Character block database
///
/// \returns The stream \p stream
///
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const chrclass_db<T_id>& db)
friend std::ostream& operator <<(_In_ std::ostream& stream, _In_ const chrblk_db& db)
{
// Write character classification index.
// Write character block index.
if (stream.fail()) return stream;
stream << db.idxChrId;
// Write first character index.
if (stream.fail()) return stream;
stream << db.idxFirst;
// Write rank index.
if (stream.fail()) return stream;
stream << db.idxRank;
@@ -486,19 +536,23 @@ namespace ZRCola {
///
/// Reads character classification database from a stream
/// Reads character block database from a stream
///
/// \param[in ] stream Input stream
/// \param[out] db Character classification database
/// \param[out] db Character block database
///
/// \returns The stream \p stream
///
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ chrclass_db<T_id>& db)
friend std::istream& operator >>(_In_ std::istream& stream, _Out_ chrblk_db& db)
{
// Read character classification index.
// Read character block index.
stream >> db.idxChrId;
if (!stream.good()) return stream;
// Read first character index.
stream >> db.idxFirst;
if (!stream.good()) return stream;
// Read rank index.
stream >> db.idxRank;
if (!stream.good()) return stream;
@@ -519,11 +573,6 @@ namespace ZRCola {
return stream;
}
};
///
/// Character block database
///
using chrblk_db = chrclass_db<chrblkid_t>;
};
#pragma warning(pop)

View File

@@ -9,13 +9,7 @@
_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;
}
return stdex::strncmp(str_a, count_a, str_b, count_b);
}

View File

@@ -14,6 +14,8 @@
#include "../include/zrcola/translate.h"
#include "../include/zrcola/tag.h"
#include <stdex/string.hpp>
#include <assert.h>
#include <algorithm>

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2018
# Simon Rozman <simon.rozman@amebis.si>, 2018
#
#, fuzzy
msgid ""
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: libZRColaUI\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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2018\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"

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2018
# Simon Rozman <simon.rozman@amebis.si>, 2018
#
#, fuzzy
msgid ""
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: libZRColaUI\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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2018\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"

View File

@@ -1,6 +1,6 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2018
# Simon Rozman <simon.rozman@amebis.si>, 2018
#
#, fuzzy
msgid ""
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: libZRColaUI\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"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2018\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"

Binary file not shown.

View File

@@ -673,7 +673,7 @@ msgstr ""
msgid "Subscript Characters"
msgstr ""
msgid "Superscript Sharacters"
msgid "Superscript Characters"
msgstr ""
msgid "Superscripts and Subscripts"

View File

@@ -1,11 +1,11 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2018
# Simon Rozman <simon.rozman@amebis.si>, 2018
#
msgid ""
msgstr ""
"Project-Id-Version: ZRCola.zrcdb\n"
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>, 2018\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"
@@ -678,8 +678,8 @@ msgstr "Перечертка"
msgid "Subscript Characters"
msgstr "Форматирование нижнего индекса"
msgid "Superscript Sharacters"
msgstr "Форматирование надстрочного индекса"
msgid "Superscript Characters"
msgstr ""
msgid "Superscripts and Subscripts"
msgstr ""

View File

@@ -1,11 +1,12 @@
#
# Translators:
# Simon Rozman <simon@rozman.si>, 2025
# Simon Rozman <simon.rozman@amebis.si>, 2025
# Janoš Ježovnik, 2025
#
msgid ""
msgstr ""
"Project-Id-Version: ZRCola.zrcdb\n"
"Last-Translator: Simon Rozman <simon@rozman.si>, 2025\n"
"Last-Translator: Janoš Ježovnik, 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"
@@ -15,46 +16,46 @@ msgstr ""
"X-Generator: ZRColaCompile\n"
msgid "Albanian"
msgstr "albanščina"
msgstr "Albanščina"
msgid "Alphabetic Presentation Forms"
msgstr ""
msgstr "Abecedne predstavnostne oblike"
msgid "Apostrophes 1"
msgstr "apostrofi 1"
msgstr "Apostrofi 1"
msgid "Apostrophes 2"
msgstr "apostrofi 2"
msgstr "Apostrofi 2"
msgid "Arabic"
msgstr "Arabski znaki"
msgstr "Arabščina"
msgid "Armenian"
msgstr "armenščina"
msgstr "Armenščina"
msgid "Arrows"
msgstr "Puščice"
msgid "Belarusian"
msgstr "beloruščina"
msgstr "Beloruščina"
msgid "Block Elements"
msgstr "Blokovni elementi"
msgid "Bosnian Cyrillic"
msgstr "bosanščina cirilica"
msgstr "Bosanščina cirilica"
msgid "Bosnian Latinic"
msgstr "bosanščina latinica"
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)"
msgstr "Osnovna latinica (Latin-1)"
msgid "C1 Controls and Latin-1 Supplement (Latin-1 Supplement)"
msgstr "Kontrolni znaki C1 in dopolnitev Latin-1 (dopolnitev Latin-1)"
msgstr "Dopolnitev osnovne latinice"
msgid "CAPITAL Case"
msgstr "VELIKE črke"
@@ -93,7 +94,7 @@ msgid "Combining Marks"
msgstr "Sestavljiva ločevalna znamenja"
msgid "Croatian"
msgstr "hrvaščina"
msgstr "Hrvaščina"
msgid "Currencies"
msgstr "Valute"
@@ -105,61 +106,61 @@ msgid "Cyrillic"
msgstr "Cirilica"
msgid "Cyrillic (Belarusian)"
msgstr "cirilica (beloruščina)"
msgstr "Cirilica (beloruščina)"
msgid "Cyrillic (Belarusian) » Latin (English)"
msgstr "cirilica (beloruščina) » latinica (angleščina)"
msgstr "Cirilica (beloruščina) » latinica (angleščina)"
msgid "Cyrillic (Belarusian) » Latin (Slovenian)"
msgstr "cirilica (beloruščina) » latinica (slovenščina)"
msgstr "Cirilica (beloruščina) » latinica (slovenščina)"
msgid "Cyrillic (Bulgarian)"
msgstr "cirilica (bolgarščina)"
msgstr "Cirilica (bolgarščina)"
msgid "Cyrillic (Bulgarian) » Latin (English)"
msgstr "cirilica (bolgarščina) » latinica (angleščina)"
msgstr "Cirilica (bolgarščina) » latinica (angleščina)"
msgid "Cyrillic (Bulgarian) » Latin (Slovenian)"
msgstr "cirilica (bolgarščina) » latinica (slovenščina)"
msgstr "Cirilica (bolgarščina) » latinica (slovenščina)"
msgid "Cyrillic (GOST2000)"
msgstr "cirilica (GOST2000)"
msgstr "Cirilica (GOST2000)"
msgid "Cyrillic (Macedonian)"
msgstr "cirilica (makedonščina)"
msgstr "Cirilica (makedonščina)"
msgid "Cyrillic (Macedonian) » Latin (English)"
msgstr "cirilica (makedonščina) » latinica (angleščina)"
msgstr "Cirilica (makedonščina) » latinica (angleščina)"
msgid "Cyrillic (Macedonian) » Latin (Slovenian)"
msgstr "cirilica (makedonščina) » latinica (slovenščina)"
msgstr "Cirilica (makedonščina) » latinica (slovenščina)"
msgid "Cyrillic (Russian)"
msgstr "cirilica (ruščina)"
msgstr "Cirilica (ruščina)"
msgid "Cyrillic (Russian) » Latin (English)"
msgstr "cirilica (ruščina) » latinica (angleščina)"
msgstr "Cirilica (ruščina) » latinica (angleščina)"
msgid "Cyrillic (Russian) » Latin (Slovenian)"
msgstr "cirilica (ruščina) » latinica (slovenščina)"
msgstr "Cirilica (ruščina) » latinica (slovenščina)"
msgid "Cyrillic (Serbian)"
msgstr "cirilica (srbščina)"
msgstr "Cirilica (srbščina)"
msgid "Cyrillic (Serbian) » Latin"
msgstr "cirilica (srbščina) » latinica"
msgstr "Cirilica (srbščina) » latinica"
msgid "Cyrillic (Ukrainian)"
msgstr "cirilica (ukrajinščina)"
msgstr "Cirilica (ukrajinščina)"
msgid "Cyrillic (Ukrainian) » Latin (English)"
msgstr "cirilica (ukrajinščina) » latinica (angleščina)"
msgstr "Cirilica (ukrajinščina) » latinica (angleščina)"
msgid "Cyrillic (Ukrainian) » Latin (Slovenian)"
msgstr "cirilica (ukrajinščina) » latinica (slovenščina)"
msgstr "Cirilica (ukrajinščina) » latinica (slovenščina)"
msgid "Cyrillic BdC"
msgstr "cirilica (BdC)"
msgstr "Cirilica (BdC)"
msgid "Cyrillic Extended-B"
msgstr "Razširitev cirilice B"
@@ -168,13 +169,13 @@ msgid "Cyrillic Supplement"
msgstr "Dopolnitev cirilice"
msgid "Cyrillic » Latin (GOST2000)"
msgstr "cirilica » latinica (GOST2000)"
msgstr "Cirilica » latinica (GOST2000)"
msgid "Czech"
msgstr "češčina"
msgstr "Češčina"
msgid "Danish"
msgstr "danščina"
msgstr "Danščina"
msgid "Diacritics"
msgstr "Ločevalna znamenja"
@@ -189,19 +190,19 @@ msgid "Enclosed Alphanumerics"
msgstr "Obkrožene črke in številke"
msgid "English"
msgstr "angleščina"
msgstr "Angleščina"
msgid "Estonian"
msgstr "estonščina"
msgstr "Estonščina"
msgid "Eva"
msgstr "Eva"
msgid "French"
msgstr "francoščina"
msgstr "Francoščina"
msgid "Friulian"
msgstr "furlanščina"
msgstr "Furlanščina"
msgid "General Punctuation"
msgstr "Splošna ločila"
@@ -213,7 +214,7 @@ msgid "Geometrical Shapes"
msgstr "Geometrijski liki"
msgid "German"
msgstr "nemščina"
msgstr "Nemščina"
msgid "Glagolitic"
msgstr "Glagolski znaki"
@@ -222,13 +223,13 @@ msgid "Greek"
msgstr "Grški znaki"
msgid "Greek (Modern)"
msgstr "grški alfabet (nova grščina)"
msgstr "Grški alfabet (nova grščina)"
msgid "Greek (Modern) » Greek (Old)"
msgstr "grški alfabet (nova grščina) » grški alfabet (stara grščina)"
msgstr "Grški alfabet (nova grščina) » grški alfabet (stara grščina)"
msgid "Greek (Old)"
msgstr "grški alfabet (stara grščina)"
msgstr "Grški alfabet (stara grščina)"
msgid "Greek Extended"
msgstr "Razširitev grščine"
@@ -237,136 +238,136 @@ msgid "Greek and Coptic"
msgstr "Grščina in koptščina"
msgid "Gujarati"
msgstr ""
msgstr "Gudžarati"
msgid "Hebrew"
msgstr "hebrejščina"
msgstr "Hebrejščina"
msgid "Hungarian"
msgstr "madžarščina"
msgstr "Madžarščina"
msgid "IPA Extensions"
msgstr "Razširitve IPA"
msgid "Irish Gaelic"
msgstr "irščina"
msgstr "Irščina"
msgid "Joined"
msgstr "Povezajni nadomestni znaki"
msgstr "Povezovalni nadomestni znaki"
msgid "Joined strings with A"
msgstr "Povezajni nizi z A"
msgstr "Povezani nizi z A"
msgid "Joined strings with B"
msgstr "Povezajni nizi z B"
msgstr "Povezani nizi z B"
msgid "Joined strings with C"
msgstr "Povezajni nizi s C"
msgstr "Povezani nizi s C"
msgid "Joined strings with D"
msgstr "Povezajni nizi z D"
msgstr "Povezani nizi z D"
msgid "Joined strings with E"
msgstr "Povezajni nizi z E"
msgstr "Povezani nizi z E"
msgid "Joined strings with F"
msgstr "Povezajni nizi s F"
msgstr "Povezani nizi s F"
msgid "Joined strings with G"
msgstr "Povezajni nizi z G"
msgstr "Povezani nizi z G"
msgid "Joined strings with H"
msgstr "Povezajni nizi s H"
msgstr "Povezani nizi s H"
msgid "Joined strings with I"
msgstr "Povezajni nizi z I"
msgstr "Povezani nizi z I"
msgid "Joined strings with J"
msgstr "Povezajni nizi z J"
msgstr "Povezani nizi z J"
msgid "Joined strings with K"
msgstr "Povezajni nizi s K"
msgstr "Povezani nizi s K"
msgid "Joined strings with L"
msgstr "Povezajni nizi z L"
msgstr "Povezani nizi z L"
msgid "Joined strings with M"
msgstr "Povezajni nizi z M"
msgstr "Povezani nizi z M"
msgid "Joined strings with N"
msgstr "Povezajni nizi z N"
msgstr "Povezani nizi z N"
msgid "Joined strings with O"
msgstr "Povezajni nizi z O"
msgstr "Povezani nizi z O"
msgid "Joined strings with P"
msgstr "Povezajni nizi s P"
msgstr "Povezani nizi s P"
msgid "Joined strings with Q"
msgstr "Povezajni nizi z Q"
msgstr "Povezani nizi z Q"
msgid "Joined strings with R"
msgstr "Povezajni nizi z R"
msgstr "Povezani nizi z R"
msgid "Joined strings with S"
msgstr "Povezajni nizi s S"
msgstr "Povezani nizi s S"
msgid "Joined strings with T"
msgstr "Povezajni nizi s T"
msgstr "Povezani nizi s T"
msgid "Joined strings with U"
msgstr "Povezajni nizi z U"
msgstr "Povezani nizi z U"
msgid "Joined strings with V"
msgstr "Povezajni nizi z V"
msgstr "Povezani nizi z V"
msgid "Joined strings with W"
msgstr "Povezajni nizi z W"
msgstr "Povezani nizi z W"
msgid "Joined strings with X"
msgstr "Povezajni nizi z X"
msgstr "Povezani nizi z X"
msgid "Joined strings with Y"
msgstr "Povezajni nizi z Y"
msgstr "Povezani nizi z Y"
msgid "Joined strings with Z"
msgstr "Povezajni nizi z Z"
msgstr "Povezani nizi z Z"
msgid "Joined strings with a"
msgstr "Povezajni nizi z a"
msgstr "Povezani nizi z a"
msgid "Joined strings with e"
msgstr "Povezajni nizi z e"
msgstr "Povezani nizi z e"
msgid "Joined strings with i"
msgstr "Povezajni nizi z i"
msgstr "Povezani nizi z i"
msgid "Joined strings with o"
msgstr "Povezajni nizi z o"
msgstr "Povezani nizi z o"
msgid "Joined strings with u"
msgstr "Povezajni nizi z u"
msgstr "Povezani nizi z u"
msgid "Kashubian"
msgstr "kašubščina"
msgstr "Kašubščina"
msgid "Latin"
msgstr "latinščina"
msgstr "Latinica"
msgid "Latin (English)"
msgstr "latinica (angleščina)"
msgstr "Latinica (angleščina)"
msgid "Latin (GOST2000)"
msgstr "latinica (GOST2000)"
msgstr "Latinica (GOST2000)"
msgid "Latin (Slovenian)"
msgstr "latinica (slovenščina)"
msgstr "Latinica (slovenščina)"
msgid "Latin ALE"
msgstr "latinščina (ALE)"
msgstr "Latinica (ALE)"
msgid "Latin BdC"
msgstr "latinščina (BdC)"
msgstr "Latinica (BdC)"
msgid "Latin Extended Additional"
msgstr "Dodatna razširitev latinice"
@@ -384,34 +385,34 @@ msgid "Latin Extended-D"
msgstr "Razširitev latinice D"
msgid "Latin » Cyrillic (Belarusian)"
msgstr "latinica » cirilica (beloruščina)"
msgstr "Latinica » cirilica (beloruščina)"
msgid "Latin » Cyrillic (Bulgarian)"
msgstr "latinica » cirilica (bolgarščina)"
msgstr "Latinica » cirilica (bolgarščina)"
msgid "Latin » Cyrillic (GOST2000)"
msgstr "latinica » cirilica (GOST2000)"
msgstr "Latinica » cirilica (GOST2000)"
msgid "Latin » Cyrillic (Macedonian)"
msgstr "latinica » cirilica (makedonščina)"
msgstr "Latinica » cirilica (makedonščina)"
msgid "Latin » Cyrillic (Russian)"
msgstr "latinica » cirilica (ruščina)"
msgstr "Latinica » cirilica (ruščina)"
msgid "Latin » Cyrillic (Serbian)"
msgstr "latinica » cirilica (srbščina)"
msgstr "Latinica » cirilica (srbščina)"
msgid "Latin » Cyrillic (Ukrainian)"
msgstr "latinica » cirilica (ukrajinščina)"
msgstr "Latinica » cirilica (ukrajinščina)"
msgid "Latin » Greek (modern)"
msgstr "latinica » grški alfabet (nova grščina)"
msgstr "Latinica » grški alfabet (nova grščina)"
msgid "Latin » Greek (old)"
msgstr "latinica » grški alfabet (stara grščina)"
msgstr "Latinica » grški alfabet (stara grščina)"
msgid "Latvian"
msgstr "letonščina"
msgstr "Latvijščina"
msgid "Letter A"
msgstr "Črka A"
@@ -513,13 +514,13 @@ msgid "Ligatures"
msgstr "Ligature"
msgid "Lithuanian"
msgstr "litovščina"
msgstr "Litovščina"
msgid "Macedonian"
msgstr "makedonščina"
msgstr "Makedonščina"
msgid "Maltese"
msgstr "malteščina"
msgstr "Malteščina"
msgid "Mathematical And Physical Symbols"
msgstr "Matematični in fizikalni simboli"
@@ -549,16 +550,16 @@ msgid "Modified"
msgstr "Spreminjevalni nadomestni znaki"
msgid "Moldavian Cyrillic"
msgstr "moldavščina cirilica"
msgstr "Moldavščina cirilica"
msgid "Moldavian Latinic"
msgstr "moldavščina latinica"
msgstr "Moldavščina latinica"
msgid "Musical Characters"
msgstr "Glasbeni znaki"
msgid "Norwegian"
msgstr "norveščina"
msgstr "Norveščina"
msgid "Number 0"
msgstr "Številka 0"
@@ -612,10 +613,10 @@ msgid "Phonetic Extensions Supplement"
msgstr "Dopolnitev fonetične razširitve"
msgid "Polish"
msgstr "poljščina"
msgstr "Poljščina"
msgid "Portuguese"
msgstr "portugalščina"
msgstr "Portugalščina"
msgid "Private Use Area"
msgstr "Območje zasebne rabe"
@@ -627,34 +628,34 @@ msgid "Quotes"
msgstr "Narekovaji"
msgid "Romanian"
msgstr "romunščina"
msgstr "Romunščina"
msgid "Russian"
msgstr "ruščina"
msgstr "Ruščina"
msgid "Serbian Cyrillic"
msgstr "srbščina cirilica"
msgstr "Srbščina cirilica"
msgid "Serbian Latinic"
msgstr "srbščina latinica"
msgstr "Srbščina latinica"
msgid "Sigma Final"
msgstr "sigma (končna)"
msgstr "Sigma (končna)"
msgid "Sigma Nav"
msgstr "sigma (navadna)"
msgstr "Sigma (navadna)"
msgid "Slovak"
msgstr "slovaščina"
msgstr "Slovaščina"
msgid "Slovene Historical Writings"
msgstr "Slovenske zgodovinske pisave"
msgid "Slovenian"
msgstr "slovenščina"
msgstr "Slovenščina"
msgid "Sorbian"
msgstr "lužiščini"
msgstr "Lužiška srbščina"
msgid "Spaces"
msgstr "Presledki"
@@ -663,7 +664,7 @@ msgid "Spacing Modifier Letters"
msgstr "Nesestavljive nadomestne črke"
msgid "Spanish"
msgstr "španščina"
msgstr "Španščina"
msgid "Special Characters"
msgstr "Posebni znaki"
@@ -677,7 +678,7 @@ msgstr "Poševnice"
msgid "Subscript Characters"
msgstr "Podpisani znaki"
msgid "Superscript Sharacters"
msgid "Superscript Characters"
msgstr "Nadpisani znaki"
msgid "Superscripts and Subscripts"
@@ -696,7 +697,7 @@ msgid "Surrounded"
msgstr "Obkrožajni nadomestni znaki"
msgid "Swedish"
msgstr "švedščina"
msgstr "Švedščina"
msgid "Symbol !"
msgstr "Simbol !"
@@ -735,7 +736,7 @@ msgid "Symbol ?"
msgstr "Simbol ?"
msgid "Syriac"
msgstr ""
msgstr "Sirščina"
msgid "Technical Characters"
msgstr "Tehnični znaki"
@@ -750,13 +751,13 @@ msgid "Transliterating Marks"
msgstr "Prečrkovalni nadomestni znaki"
msgid "Turkish"
msgstr "turščina"
msgstr "Turščina"
msgid "Ukrainian"
msgstr "ukrajinščina"
msgstr "Ukrajinščina"
msgid "Unified Canadian Aboriginal Syllabics"
msgstr ""
msgstr "Združeni kanadski staroselski zlogovni znaki"
msgid "Units"
msgstr "Enote"