diff --git a/Lang-src/en/locale.xml b/Lang-src/en/locale.xml index aa7ffb16c..461d3ffe2 100644 --- a/Lang-src/en/locale.xml +++ b/Lang-src/en/locale.xml @@ -18,12 +18,16 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ diff --git a/Lang-src/ja/locale.xml b/Lang-src/ja/locale.xml index 99f1bc9a1..5648e11e3 100644 --- a/Lang-src/ja/locale.xml +++ b/Lang-src/ja/locale.xml @@ -3,22 +3,59 @@ - + あいうえぉお + アイウエォオ + + かがきぎくぐけげこご + カガキギクグケゲコゴ + + さざしじすずせぜそぞ + サザシジスズセゼソゾ + + っただちぢつづてでとど + ッタダチヂツヅテデトド + + なにぬねの + ナニヌネノ + + はばぱひびぴふぶぷへべぺほぼぽ + ハバパヒビピフブプヘベペホボポ + + まみむめも + マミムメモ + + ゃやゆよ + ャヤユヨ + + らラりリるルれレろロ + + ゎわゐゑを + ヮワヰヱヲ + + ん__ゔ + ンヷヸヴヹヺ ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz - ____________________Ü_____ - ____________________ü_____ - + + + + + + + + + + + + + + + + + + diff --git a/Lang-src/ru/locale.xml b/Lang-src/ru/locale.xml index 4a0892384..0407adf07 100644 --- a/Lang-src/ru/locale.xml +++ b/Lang-src/ru/locale.xml @@ -16,9 +16,12 @@ - —АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ - _абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz - _á____é_________ó___________________________________________ + —АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ + _абвгдеёжзийклмнопрстуфхцчшщъыьэюя + _á____é_________ó_________________ + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + abcdefghijklmnopqrstuvwxyz diff --git a/Lang-src/uk/locale.xml b/Lang-src/uk/locale.xml index ac91ddc1f..5573903f1 100644 --- a/Lang-src/uk/locale.xml +++ b/Lang-src/uk/locale.xml @@ -4,10 +4,13 @@ - АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ - абвгдеєжзиіїйклмнопрстуфхцчшщьюяabcdefghijklmnopqrstuvwxyz - á__ґ_é____í______ó________________________________________ - ___Ґ______________________________________________________ + АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ + абвгдеєжзиіїйклмнопрстуфхцчшщьюя + á__ґ_é____í______ó______________ + ___Ґ____________________________ + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + abcdefghijklmnopqrstuvwxyz diff --git a/Unicodia/LocList.cpp b/Unicodia/LocList.cpp index 06db74496..85bccaf26 100644 --- a/Unicodia/LocList.cpp +++ b/Unicodia/LocList.cpp @@ -180,11 +180,18 @@ namespace { r.sortOrder.clear(); auto hAlphaSort = hLocale.child("alpha-sort"); + int base = 0, greatest = -1; for (auto& v : hAlphaSort.children("alp")) { + if (v.attribute("follow").as_bool(false)) { + base = greatest + 1; + } auto alph = mojibake::toS(v.text().as_string()); for (size_t i = 0; i < alph.length(); ++i) { - if (auto c = alph[i]; c != '_') - r.sortOrder[c] = i; + if (auto c = alph[i]; c != '_') { + int newCode = base + i; + r.sortOrder[c] = newCode; + greatest = std::max(greatest, newCode); + } } } diff --git a/Unicodia/Uc/UcData.cpp b/Unicodia/Uc/UcData.cpp index 1e3a78e0b..049a578af 100644 --- a/Unicodia/Uc/UcData.cpp +++ b/Unicodia/Uc/UcData.cpp @@ -1636,10 +1636,16 @@ void uc::finishTranslation( std::u8string_view keyName = blk.loc.name; if (blk.alphaKey.ecScript != EcScript::NONE) { keyName = script.loc.name; - if (script.mainBlock) + if (script.mainBlock) { + if (auto q = alphaFixup.find(script.mainBlock->startingCp); q != alphaFixup.end()) { + buildSortKey(q->second, SpecialSort::NO, sortOrder, blk.loc.sortKey); + goto alreadyBuilt; + } keyName = script.mainBlock->loc.name; + } } buildSortKey(keyName, SpecialSort::NO, sortOrder, blk.loc.sortKey); + alreadyBuilt: ; } } diff --git a/Unicodia/Uc/UcData.h b/Unicodia/Uc/UcData.h index 99afada79..800813d41 100644 --- a/Unicodia/Uc/UcData.h +++ b/Unicodia/Uc/UcData.h @@ -766,10 +766,10 @@ namespace uc { DEFINE_ENUM_OPS(Bfg) - enum class MyName { INST }; + enum class MyName : unsigned char { INST }; /// - /// \brief The BlockAlpha struct + /// Use someone’s else name for sorting /// struct AlphaKey { EcScript ecScript = EcScript::NONE;