diff --git a/ZRColaCompile/dbsource.cpp b/ZRColaCompile/dbsource.cpp index efbe97c..d85bb64 100644 --- a/ZRColaCompile/dbsource.cpp +++ b/ZRColaCompile/dbsource.cpp @@ -27,6 +27,12 @@ ZRCola::DBSource::DBSource() ZRCola::DBSource::~DBSource() { + if (m_pCharacterGroup1) + m_pCharacterGroup1.Release(); + + if (m_comCharacterGroup) + m_comCharacterGroup.Release(); + if (m_db) m_db->Close(); @@ -53,6 +59,23 @@ bool ZRCola::DBSource::Open(LPCTSTR filename) // Database open and ready. m_filename = filename; m_locale = _create_locale(LC_ALL, "Slovenian_Slovenia.1250"); + + wxASSERT_MSG(!m_comCharacterGroup, wxT("ADO command already created")); + + // Create ADO command(s). + wxVERIFY(SUCCEEDED(::CoCreateInstance(CLSID_CADOCommand, NULL, CLSCTX_ALL, IID_IADOCommand, (LPVOID*)&m_comCharacterGroup))); + wxVERIFY(SUCCEEDED(m_comCharacterGroup->put_ActiveConnection(ATL::CComVariant(m_db)))); + wxVERIFY(SUCCEEDED(m_comCharacterGroup->put_CommandType(adCmdText))); + wxVERIFY(SUCCEEDED(m_comCharacterGroup->put_CommandText(ATL::CComBSTR(L"SELECT [Znak] FROM [VRS_SkupineZnakov] WHERE [Skupina]=? ORDER BY [Rang] ASC, [Znak] ASC")))); + { + // Create and add command parameters. + ATL::CComPtr params; + wxVERIFY(SUCCEEDED(m_comCharacterGroup->get_Parameters(¶ms))); + wxASSERT_MSG(!m_pCharacterGroup1, wxT("ADO command parameter already created")); + wxVERIFY(SUCCEEDED(m_comCharacterGroup->CreateParameter(ATL::CComBSTR(L"@Skupina"), adVarWChar, adParamInput, 50, ATL::CComVariant(DISP_E_PARAMNOTFOUND, VT_ERROR), &m_pCharacterGroup1))); + wxVERIFY(SUCCEEDED(params->Append(m_pCharacterGroup1))); + } + return true; } else { _ftprintf(stderr, wxT("%s: error ZCC0011: Could not open database (0x%x).\n"), (LPCTSTR)filename, hr); @@ -504,3 +527,92 @@ bool ZRCola::DBSource::GetLanguageCharacter(const ATL::CComPtr& rs return true; } + + +bool ZRCola::DBSource::SelectCharacterGroups(ATL::CComPtr& rs) const +{ + // Create a new recordset. + if (rs) rs.Release(); + wxCHECK(SUCCEEDED(::CoCreateInstance(CLSID_CADORecordset, NULL, CLSCTX_ALL, IID_IADORecordset, (LPVOID*)&rs)), false); + + // Open it. + if (FAILED(rs->Open(ATL::CComVariant( + L"SELECT DISTINCT [id], [Skupina], [opis_en], [Rang], [prikazano] " + L"FROM [VRS_SkupinaZnakov] " + L"ORDER BY [Rang], [opis_en]"), ATL::CComVariant(m_db), adOpenStatic, adLockReadOnly, adCmdText))) + { + _ftprintf(stderr, wxT("%s: error ZCC0090: Error loading character groups from database. Please make sure the file is ZRCola.zrc compatible.\n"), m_filename.c_str()); + LogErrors(); + return false; + } + + return true; +} + + +bool ZRCola::DBSource::GetCharacterGroup(const ATL::CComPtr& rs, chrgrp& cg) const +{ + wxASSERT_MSG(rs, wxT("recordset is empty")); + + ATL::CComPtr flds; + wxVERIFY(SUCCEEDED(rs->get_Fields(&flds))); + std::wstring id; + + { + ATL::CComPtr f; + wxVERIFY(SUCCEEDED(flds->get_Item(ATL::CComVariant(L"id"), &f))); + wxCHECK(GetValue(f, cg.id), false); + } + + { + ATL::CComPtr f; + wxVERIFY(SUCCEEDED(flds->get_Item(ATL::CComVariant(L"Skupina"), &f))); + wxCHECK(GetValue(f, id), false); + } + + { + ATL::CComPtr f; + wxVERIFY(SUCCEEDED(flds->get_Item(ATL::CComVariant(L"Rang"), &f))); + wxCHECK(GetValue(f, cg.rank), false); + } + + { + ATL::CComPtr f; + wxVERIFY(SUCCEEDED(flds->get_Item(ATL::CComVariant(L"prikazano"), &f))); + wxCHECK(GetValue(f, cg.show), false); + } + + { + ATL::CComPtr f; + wxVERIFY(SUCCEEDED(flds->get_Item(ATL::CComVariant(L"opis_en"), &f))); + wxCHECK(GetValue(f, cg.name), false); + } + + // Read character list from database. + wxVERIFY(SUCCEEDED(m_pCharacterGroup1->put_Value(ATL::CComVariant(id.c_str())))); + ATL::CComPtr rs_chars; + wxVERIFY(SUCCEEDED(::CoCreateInstance(CLSID_CADORecordset, NULL, CLSCTX_ALL, IID_IADORecordset, (LPVOID*)&rs_chars))); + wxVERIFY(SUCCEEDED(rs_chars->put_CursorLocation(adUseClient))); + wxVERIFY(SUCCEEDED(rs_chars->put_CursorType(adOpenForwardOnly))); + wxVERIFY(SUCCEEDED(rs_chars->put_LockType(adLockReadOnly))); + if (FAILED(rs_chars->Open(ATL::CComVariant(m_comCharacterGroup), ATL::CComVariant(DISP_E_PARAMNOTFOUND, VT_ERROR)))) { + _ftprintf(stderr, wxT("%s: error ZCC0100: Error loading character group characters from database. Please make sure the file is ZRCola.zrc compatible.\n"), m_filename.c_str()); + LogErrors(); + return false; + } + + { + cg.chars.clear(); + ATL::CComPtr flds; + wxVERIFY(SUCCEEDED(rs_chars->get_Fields(&flds))); + ATL::CComPtr f; + wxVERIFY(SUCCEEDED(flds->get_Item(ATL::CComVariant(L"Znak"), &f))); + for (VARIANT_BOOL eof = VARIANT_TRUE; SUCCEEDED(rs_chars->get_EOF(&eof)) && !eof; rs_chars->MoveNext()) { + wchar_t c; + wxCHECK(GetUnicodeCharacter(f, c), false); + cg.chars += c; + } + } + + return true; +} diff --git a/ZRColaCompile/dbsource.h b/ZRColaCompile/dbsource.h index 6240e1d..6409544 100644 --- a/ZRColaCompile/dbsource.h +++ b/ZRColaCompile/dbsource.h @@ -39,9 +39,9 @@ namespace ZRCola { /// class translation { public: - wchar_t chr; ///< Composed character - std::wstring str; ///< Decomposed string - int rank; ///< Decomposition rank + wchar_t chr; ///< Composed character + std::wstring str; ///< Decomposed string + int rank; ///< Decomposition rank }; @@ -85,6 +85,20 @@ namespace ZRCola { ZRCola::langid_t lang; ///< Language ID }; + + /// + /// Character group + /// + class chrgrp { + public: + int id; ///< Character group ID + int rank; ///< Character group rank + bool show; ///< Show initially + std::wstring name; ///< Character group name + std::wstring chars; ///< Character group characters + }; + + public: DBSource(); virtual ~DBSource(); @@ -328,9 +342,37 @@ namespace ZRCola { /// bool GetLanguageCharacter(const ATL::CComPtr& rs, langchar& lc) const; + + /// + /// Returns character groups + /// + /// \param[out] rs Recordset with results + /// + /// \returns + /// - true when query succeeds + /// - false otherwise + /// + bool SelectCharacterGroups(ATL::CComPtr& rs) const; + + + /// + /// Returns character group data + /// + /// \param[in] rs Recordset with results + /// \param[out] cg Character group + /// + /// \returns + /// - true when succeeded + /// - false otherwise + /// + bool GetCharacterGroup(const ATL::CComPtr& rs, chrgrp& cg) const; + protected: std::basic_string m_filename; ///< Database filename ATL::CComPtr m_db; ///< Database _locale_t m_locale; ///< Database locale + + ATL::CComPtr m_comCharacterGroup; ///< ADO Command for GetCharacterGroup subquery + ATL::CComPtr m_pCharacterGroup1; ///< \c m_comCharacterGroup parameter }; }; diff --git a/ZRColaCompile/main.cpp b/ZRColaCompile/main.cpp index 927a321..5b20532 100644 --- a/ZRColaCompile/main.cpp +++ b/ZRColaCompile/main.cpp @@ -243,6 +243,56 @@ inline std::ostream& operator <<(std::ostream& stream, const ZRCola::langchar_db } +/// +/// 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 <<(std::ostream& stream, const ZRCola::chrgrp_db &db) +{ + unsigned __int32 count; + + // Write index count. + ZRCola::keyseq_db::indexChr::size_type ks_count = db.idxRnk.size(); +#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__) + // 4G check + if (ks_count > 0xffffffff) { + stream.setstate(std::ios_base::failbit); + return stream; + } +#endif + if (stream.fail()) return stream; + count = (unsigned __int32)ks_count; + stream.write((const char*)&count, sizeof(count)); + + // Write rank index. + if (stream.fail()) return stream; + stream.write((const char*)db.idxRnk.data(), sizeof(unsigned __int32)*count); + + // Write data count. + std::vector::size_type 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; + 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)*count); + + return stream; +} + + /// /// Main function /// @@ -549,6 +599,64 @@ int _tmain(int argc, _TCHAR *argv[]) } } + { + // Get character groups. + ATL::CComPtr rs; + if (src.SelectCharacterGroups(rs)) { + size_t count = src.GetRecordsetCount(rs); + if (count < 0xffffffff) { // 4G check (-1 is reserved for error condition) + ZRCola::DBSource::chrgrp cg; + ZRCola::chrgrp_db db; + + // Preallocate memory. + db.idxRnk.reserve(count); + db.data .reserve(count*4); + + // Parse character groups and build index and data. + while (!ZRCola::DBSource::IsEOF(rs)) { + // Read character group from the database. + if (src.GetCharacterGroup(rs, cg)) { + // Add character group to index and data. + unsigned __int32 idx = db.data.size(); + wxASSERT_MSG((int)0xffff8000 <= cg.id && cg.id <= (int)0x00007fff, wxT("character group ID out of bounds")); + db.data.push_back((unsigned __int16)cg.id); + wxASSERT_MSG((int)0xffff8000 <= cg.rank && cg.rank <= (int)0x00007fff, wxT("character group rank out of bounds")); + db.data.push_back((unsigned __int16)cg.rank); + db.data.push_back(cg.show ? ZRCola::chrgrp_db::chrgrp::SHOW : 0); + std::wstring::size_type n_name = cg.name.length(); + wxASSERT_MSG(n_name <= 0xffff, wxT("character group name too long")); + db.data.push_back((unsigned __int16)n_name); + std::wstring::size_type n_char = cg.chars.length(); + wxASSERT_MSG(n_char <= 0xffff, wxT("too many character group characters")); + db.data.push_back((unsigned __int16)n_char); + for (std::wstring::size_type i = 0; i < n_name; i++) + db.data.push_back(cg.name[i]); + for (std::wstring::size_type i = 0; i < n_char; i++) + db.data.push_back(cg.chars[i]); + db.idxRnk.push_back(idx); + if (build_pot) + pot.insert(cg.name); + } else + has_errors = true; + + wxVERIFY(SUCCEEDED(rs->MoveNext())); + } + + // Sort indices. + db.idxRnk.sort(); + + // Write character groups to file. + dst << ZRCola::chrgrp_rec(db); + } else { + _ftprintf(stderr, wxT("%s: error ZCC0015: Error getting character group count from database or too many character groups.\n"), (LPCTSTR)filenameIn.c_str()); + has_errors = true; + } + } else { + _ftprintf(stderr, wxT("%s: error ZCC0014: Error getting character groups from database. Please make sure the file is ZRCola.zrc compatible.\n"), (LPCTSTR)filenameIn.c_str()); + has_errors = true; + } + } + stdex::idrec::close(dst, dst_start); if (dst.fail()) { diff --git a/ZRColaCompile/stdafx.h b/ZRColaCompile/stdafx.h index 145b02e..186fe8f 100644 --- a/ZRColaCompile/stdafx.h +++ b/ZRColaCompile/stdafx.h @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -41,6 +42,7 @@ #include // GUID helper to prevent LNK2001 errors (unresolved external symbol IID_IADO...) #include #include +#include #include diff --git a/lib/libZRColaUI/build/libZRColaUI.vcxproj b/lib/libZRColaUI/build/libZRColaUI.vcxproj index 5b4e48a..0870684 100644 --- a/lib/libZRColaUI/build/libZRColaUI.vcxproj +++ b/lib/libZRColaUI/build/libZRColaUI.vcxproj @@ -28,6 +28,7 @@ + diff --git a/lib/libZRColaUI/build/libZRColaUI.vcxproj.filters b/lib/libZRColaUI/build/libZRColaUI.vcxproj.filters index 605e170..f3ccc22 100644 --- a/lib/libZRColaUI/build/libZRColaUI.vcxproj.filters +++ b/lib/libZRColaUI/build/libZRColaUI.vcxproj.filters @@ -32,6 +32,9 @@ Header Files + + Header Files + diff --git a/lib/libZRColaUI/include/zrcolaui/chargroup.h b/lib/libZRColaUI/include/zrcolaui/chargroup.h new file mode 100644 index 0000000..5b8105e --- /dev/null +++ b/lib/libZRColaUI/include/zrcolaui/chargroup.h @@ -0,0 +1,166 @@ +/* + Copyright 2015-2016 Amebis + + This file is part of ZRCola. + + ZRCola is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ZRCola is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ZRCola. If not, see . +*/ + +#pragma once + +#include "common.h" +#include + +#include +#include +#include + +#pragma warning(push) +#pragma warning(disable: 4200) +#pragma warning(disable: 4251) +#pragma warning(disable: 4512) + + +namespace ZRCola { + /// + /// Character group database + /// + class ZRCOLAUI_API chrgrp_db { + public: +#pragma pack(push) +#pragma pack(2) + /// + /// Character group data + /// + struct chrgrp { + enum flags_t { + SHOW = 1<<0, ///< Show initially + }; + + unsigned __int16 id; ///< Character group id + unsigned __int16 rank; ///< Character group rank + unsigned __int16 flags; ///< Character group flags (bitwise combination of \c flags_t flags) + unsigned __int16 name_len; ///< Character group name length in \c data + unsigned __int16 char_len; ///< Character list length in \c data + wchar_t data[]; ///< Character group name and character list + }; +#pragma pack(pop) + + /// + /// Rank index + /// + class indexRnk : public index + { + public: + /// + /// Constructs the index + /// + /// \param[in] h Reference to vector holding the data + /// + indexRnk(_In_ std::vector &h) : index(h) {} + + /// + /// Compares two character groups by rank (for searching) + /// + /// \param[in] a Pointer to character group + /// \param[in] b Pointer to second character group + /// + /// \returns + /// - <0 when a < b + /// - =0 when a == b + /// - >0 when a > b + /// + 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; + + return 0; + } + + /// + /// Compares two character groups by rank (for sorting) + /// + /// \param[in] a Pointer to character group + /// \param[in] b Pointer to second character group + /// + /// \returns + /// - <0 when a < b + /// - =0 when a == b + /// - >0 when a > b + /// + virtual int compare_sort(_In_ const chrgrp &a, _In_ const chrgrp &b) const + { + if (a.rank < b.rank) return -1; + else if (a.rank > b.rank) return +1; + + int r = _wcsncoll(a.data, b.data, std::min(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; + } + } idxRnk; ///< Rank index + + std::vector data; ///< Character groups data + + public: + /// + /// Constructs the database + /// + inline chrgrp_db() : idxRnk(data) {} + }; + + + typedef ZRCOLAUI_API stdex::idrec::record chrgrp_rec; +}; + + +const ZRCola::recordid_t stdex::idrec::record::id = *(ZRCola::recordid_t*)"CGR"; + + +/// +/// 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) +{ + unsigned __int32 count; + + // Read index count. + stream.read((char*)&count, sizeof(count)); + if (!stream.good()) return stream; + + // Read rank index. + db.idxRnk.resize(count); + stream.read((char*)db.idxRnk.data(), sizeof(unsigned __int32)*count); + if (!stream.good()) return stream; + + // Read data count. + stream.read((char*)&count, sizeof(count)); + if (!stream.good()) return stream; + + // Read data. + db.data.resize(count); + stream.read((char*)db.data.data(), sizeof(unsigned __int16)*count); + + return stream; +} + +#pragma warning(pop) diff --git a/lib/libZRColaUI/include/zrcolaui/keyboard.h b/lib/libZRColaUI/include/zrcolaui/keyboard.h index 905f73f..72e28d7 100644 --- a/lib/libZRColaUI/include/zrcolaui/keyboard.h +++ b/lib/libZRColaUI/include/zrcolaui/keyboard.h @@ -45,9 +45,9 @@ namespace ZRCola { /// struct keyseq { 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 }; wchar_t chr; ///< Character diff --git a/lib/libZRColaUI/src/stdafx.h b/lib/libZRColaUI/src/stdafx.h index 171035c..fc42830 100644 --- a/lib/libZRColaUI/src/stdafx.h +++ b/lib/libZRColaUI/src/stdafx.h @@ -20,6 +20,7 @@ #pragma once #include "../../../include/zrcola.h" +#include "../include/zrcolaui/chargroup.h" #include "../include/zrcolaui/keyboard.h" #include diff --git a/output/data/ZRCola.zrcdb b/output/data/ZRCola.zrcdb index 3c59455..84d22cf 100644 Binary files a/output/data/ZRCola.zrcdb and b/output/data/ZRCola.zrcdb differ diff --git a/output/locale/ZRCola-zrcdb.pot b/output/locale/ZRCola-zrcdb.pot index 09d19b9..d3dd158 100644 --- a/output/locale/ZRCola-zrcdb.pot +++ b/output/locale/ZRCola-zrcdb.pot @@ -5,11 +5,14 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: ZRColaCompile 2.0-alpha5\n" +"X-Generator: ZRColaCompile 2.0-alpha6\n" msgid "Albanian" msgstr "" +msgid "Arrows" +msgstr "" + msgid "Belarusian" msgstr "" @@ -19,9 +22,24 @@ msgstr "" msgid "Bosnian – Latinic" msgstr "" +msgid "Combine" +msgstr "" + +msgid "Combine Above" +msgstr "" + +msgid "Combine Below" +msgstr "" + +msgid "Combine Over" +msgstr "" + msgid "Croatian" msgstr "" +msgid "Currencies" +msgstr "" + msgid "Czech" msgstr "" @@ -34,6 +52,9 @@ msgstr "" msgid "Estonian" msgstr "" +msgid "Eva" +msgstr "" + msgid "French" msgstr "" @@ -49,6 +70,9 @@ msgstr "" msgid "Irish Gaelic" msgstr "" +msgid "Joined" +msgstr "" + msgid "Kashubian" msgstr "" @@ -58,6 +82,165 @@ msgstr "" msgid "Latvian" msgstr "" +msgid "Letter A" +msgstr "" + +msgid "Letter B" +msgstr "" + +msgid "Letter C" +msgstr "" + +msgid "Letter D" +msgstr "" + +msgid "Letter E" +msgstr "" + +msgid "Letter F" +msgstr "" + +msgid "Letter G" +msgstr "" + +msgid "Letter H" +msgstr "" + +msgid "Letter I" +msgstr "" + +msgid "Letter J" +msgstr "" + +msgid "Letter K" +msgstr "" + +msgid "Letter L" +msgstr "" + +msgid "Letter M" +msgstr "" + +msgid "Letter N" +msgstr "" + +msgid "Letter O" +msgstr "" + +msgid "Letter P" +msgstr "" + +msgid "Letter Q" +msgstr "" + +msgid "Letter R" +msgstr "" + +msgid "Letter S" +msgstr "" + +msgid "Letter T" +msgstr "" + +msgid "Letter U" +msgstr "" + +msgid "Letter V" +msgstr "" + +msgid "Letter W" +msgstr "" + +msgid "Letter X" +msgstr "" + +msgid "Letter Y" +msgstr "" + +msgid "Letter Z" +msgstr "" + +msgid "Letter a" +msgstr "" + +msgid "Letter b" +msgstr "" + +msgid "Letter c" +msgstr "" + +msgid "Letter d" +msgstr "" + +msgid "Letter e" +msgstr "" + +msgid "Letter f" +msgstr "" + +msgid "Letter g" +msgstr "" + +msgid "Letter h" +msgstr "" + +msgid "Letter i" +msgstr "" + +msgid "Letter j" +msgstr "" + +msgid "Letter k" +msgstr "" + +msgid "Letter l" +msgstr "" + +msgid "Letter m" +msgstr "" + +msgid "Letter n" +msgstr "" + +msgid "Letter o" +msgstr "" + +msgid "Letter p" +msgstr "" + +msgid "Letter q" +msgstr "" + +msgid "Letter r" +msgstr "" + +msgid "Letter s" +msgstr "" + +msgid "Letter t" +msgstr "" + +msgid "Letter u" +msgstr "" + +msgid "Letter v" +msgstr "" + +msgid "Letter w" +msgstr "" + +msgid "Letter x" +msgstr "" + +msgid "Letter y" +msgstr "" + +msgid "Letter z" +msgstr "" + +msgid "Ligatures" +msgstr "" + msgid "Lithuanian" msgstr "" @@ -67,6 +250,12 @@ msgstr "" msgid "Maltese" msgstr "" +msgid "Metric" +msgstr "" + +msgid "Modified" +msgstr "" + msgid "Moldavian – Cyrillic" msgstr "" @@ -76,12 +265,54 @@ msgstr "" msgid "Norwegian" msgstr "" +msgid "Number 0" +msgstr "" + +msgid "Number 1" +msgstr "" + +msgid "Number 2" +msgstr "" + +msgid "Number 3" +msgstr "" + +msgid "Number 4" +msgstr "" + +msgid "Number 5" +msgstr "" + +msgid "Number 6" +msgstr "" + +msgid "Number 7" +msgstr "" + +msgid "Number 8" +msgstr "" + +msgid "Number 9" +msgstr "" + +msgid "Numbers" +msgstr "" + +msgid "Numbers - Circled" +msgstr "" + +msgid "Parentheses" +msgstr "" + msgid "Polish" msgstr "" msgid "Portuguese" msgstr "" +msgid "Quotes" +msgstr "" + msgid "Romanian" msgstr "" @@ -106,9 +337,54 @@ msgstr "" msgid "Spanish" msgstr "" +msgid "Special Characters" +msgstr "" + +msgid "Strokes" +msgstr "" + +msgid "Surrounded" +msgstr "" + msgid "Swedish" msgstr "" +msgid "Symbol !" +msgstr "" + +msgid "Symbol (" +msgstr "" + +msgid "Symbol )" +msgstr "" + +msgid "Symbol +" +msgstr "" + +msgid "Symbol ," +msgstr "" + +msgid "Symbol -" +msgstr "" + +msgid "Symbol :" +msgstr "" + +msgid "Symbol ;" +msgstr "" + +msgid "Symbol <" +msgstr "" + +msgid "Symbol =" +msgstr "" + +msgid "Symbol >" +msgstr "" + +msgid "Symbol ?" +msgstr "" + msgid "Turkish" msgstr "" diff --git a/output/locale/sl_SI/ZRCola-zrcdb.mo b/output/locale/sl_SI/ZRCola-zrcdb.mo index d7392cf..1030158 100644 Binary files a/output/locale/sl_SI/ZRCola-zrcdb.mo and b/output/locale/sl_SI/ZRCola-zrcdb.mo differ diff --git a/output/locale/sl_SI/ZRCola-zrcdb.po b/output/locale/sl_SI/ZRCola-zrcdb.po index c47c267..18b79d2 100644 --- a/output/locale/sl_SI/ZRCola-zrcdb.po +++ b/output/locale/sl_SI/ZRCola-zrcdb.po @@ -17,6 +17,9 @@ msgstr "" msgid "Albanian" msgstr "albanščina" +msgid "Arrows" +msgstr "Puščice" + msgid "Belarusian" msgstr "beloruščina" @@ -26,9 +29,24 @@ msgstr "bosanščina – cirilica" msgid "Bosnian – Latinic" msgstr "bosanščina – latinica" +msgid "Combine" +msgstr "Kombinirano" + +msgid "Combine Above" +msgstr "Kombinirano zgoraj" + +msgid "Combine Below" +msgstr "Kombinirano spodaj" + +msgid "Combine Over" +msgstr "Kombinirano prečrtano" + msgid "Croatian" msgstr "hrvaščina" +msgid "Currencies" +msgstr "Valute" + msgid "Czech" msgstr "češčina" @@ -41,6 +59,9 @@ msgstr "angleščina" msgid "Estonian" msgstr "estonščina" +msgid "Eva" +msgstr "Eva" + msgid "French" msgstr "francoščina" @@ -56,6 +77,9 @@ msgstr "madžarščina" msgid "Irish Gaelic" msgstr "irščina" +msgid "Joined" +msgstr "Povezano" + msgid "Kashubian" msgstr "kašubščina" @@ -65,6 +89,165 @@ msgstr "latinščina" msgid "Latvian" msgstr "letonščina" +msgid "Letter A" +msgstr "Črka A" + +msgid "Letter B" +msgstr "Črka B" + +msgid "Letter C" +msgstr "Črka C" + +msgid "Letter D" +msgstr "Črka D" + +msgid "Letter E" +msgstr "Črka E" + +msgid "Letter F" +msgstr "Črka f" + +msgid "Letter G" +msgstr "Črka G" + +msgid "Letter H" +msgstr "Črka H" + +msgid "Letter I" +msgstr "Črka I" + +msgid "Letter J" +msgstr "Črka J" + +msgid "Letter K" +msgstr "Črka K" + +msgid "Letter L" +msgstr "Črka L" + +msgid "Letter M" +msgstr "Črka M" + +msgid "Letter N" +msgstr "Črka N" + +msgid "Letter O" +msgstr "Črka O" + +msgid "Letter P" +msgstr "Črka P" + +msgid "Letter Q" +msgstr "Črka Q" + +msgid "Letter R" +msgstr "Črka R" + +msgid "Letter S" +msgstr "Črka S" + +msgid "Letter T" +msgstr "Črka T" + +msgid "Letter U" +msgstr "Črka U" + +msgid "Letter V" +msgstr "Črka V" + +msgid "Letter W" +msgstr "Črka W" + +msgid "Letter X" +msgstr "Črka X" + +msgid "Letter Y" +msgstr "Črka Y" + +msgid "Letter Z" +msgstr "Črka Z" + +msgid "Letter a" +msgstr "Črka a" + +msgid "Letter b" +msgstr "Črka b" + +msgid "Letter c" +msgstr "Črka c" + +msgid "Letter d" +msgstr "Črka d" + +msgid "Letter e" +msgstr "Črka e" + +msgid "Letter f" +msgstr "Črka f" + +msgid "Letter g" +msgstr "Črka g" + +msgid "Letter h" +msgstr "Črka h" + +msgid "Letter i" +msgstr "Črka i" + +msgid "Letter j" +msgstr "Črka j" + +msgid "Letter k" +msgstr "Črka k" + +msgid "Letter l" +msgstr "Črka l" + +msgid "Letter m" +msgstr "Črka m" + +msgid "Letter n" +msgstr "Črka n" + +msgid "Letter o" +msgstr "Črka o" + +msgid "Letter p" +msgstr "Črka p" + +msgid "Letter q" +msgstr "Črka q" + +msgid "Letter r" +msgstr "Črka r" + +msgid "Letter s" +msgstr "Črka s" + +msgid "Letter t" +msgstr "Črka t" + +msgid "Letter u" +msgstr "Črka u" + +msgid "Letter v" +msgstr "Črka v" + +msgid "Letter w" +msgstr "Črka w" + +msgid "Letter x" +msgstr "Črka x" + +msgid "Letter y" +msgstr "Črka y" + +msgid "Letter z" +msgstr "Črka z" + +msgid "Ligatures" +msgstr "Ligature" + msgid "Lithuanian" msgstr "litovščina" @@ -74,6 +257,12 @@ msgstr "makedonščina" msgid "Maltese" msgstr "malteščina" +msgid "Metric" +msgstr "Metrično" + +msgid "Modified" +msgstr "Spremenjeno" + msgid "Moldavian – Cyrillic" msgstr "moldavščina – cirilica" @@ -83,12 +272,54 @@ msgstr "moldavščina – latinica" msgid "Norwegian" msgstr "norveščina" +msgid "Number 0" +msgstr "Številka 0" + +msgid "Number 1" +msgstr "Številka 1" + +msgid "Number 2" +msgstr "Številka 2" + +msgid "Number 3" +msgstr "Številka 3" + +msgid "Number 4" +msgstr "Številka 4" + +msgid "Number 5" +msgstr "Številka 5" + +msgid "Number 6" +msgstr "Številka 6" + +msgid "Number 7" +msgstr "Številka 7" + +msgid "Number 8" +msgstr "Številka 8" + +msgid "Number 9" +msgstr "Številka 9" + +msgid "Numbers" +msgstr "Številke" + +msgid "Numbers - Circled" +msgstr "Številke - obkroženo" + +msgid "Parentheses" +msgstr "Oklepaji" + msgid "Polish" msgstr "poljščina" msgid "Portuguese" msgstr "portugalščina" +msgid "Quotes" +msgstr "Narekovaji" + msgid "Romanian" msgstr "romunščina" @@ -113,9 +344,54 @@ msgstr "lužiščini" msgid "Spanish" msgstr "španščina" +msgid "Special Characters" +msgstr "Posebni znaki" + +msgid "Strokes" +msgstr "Poševnica" + +msgid "Surrounded" +msgstr "Obkroženi" + msgid "Swedish" msgstr "švedščina" +msgid "Symbol !" +msgstr "Simbol !" + +msgid "Symbol (" +msgstr "Simbol (" + +msgid "Symbol )" +msgstr "Simbol )" + +msgid "Symbol +" +msgstr "Simbol +" + +msgid "Symbol ," +msgstr "Simbol ," + +msgid "Symbol -" +msgstr "Simbol -" + +msgid "Symbol :" +msgstr "Simbol :" + +msgid "Symbol ;" +msgstr "Simbol ;" + +msgid "Symbol <" +msgstr "Simbol <" + +msgid "Symbol =" +msgstr "Simbol =" + +msgid "Symbol >" +msgstr "Simbol >" + +msgid "Symbol ?" +msgstr "Simbol ?" + msgid "Turkish" msgstr "turščina"