From d7cc535e2875086fa816b5744dd5f496eb32c9ca Mon Sep 17 00:00:00 2001 From: chomobi Date: Mon, 16 Apr 2018 20:01:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B2=20=D0=BA=D0=BE=D0=B4=D0=B5=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B.=20=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D1=91=D0=BD=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=20=D1=80=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=D0=B0=20YAM?= =?UTF-8?q?L-=D0=BF=D0=BE=D0=B4=D0=BE=D0=B1=D0=BD=D0=BE=D0=B9=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D0=B0=20EU4?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NEWS | 4 + Recodenc.pm | 368 ++++++++++---------- encxs/MANIFEST | 6 +- encxs/lib/Encode/Recodenc.pm | 6 +- encxs/t/10_encode_recodenc.t | 18 +- encxs/ucm/{cp1252cp1251.ucm => cp1252a.ucm} | 0 encxs/ucm/{cp1252cyreu4.ucm => cp1252b.ucm} | 2 +- encxs/ucm/{cp1252cyrck2.ucm => cp1252c.ucm} | 2 +- recodenc-gui.pl | 48 +-- recodenc.pl | 22 +- 10 files changed, 232 insertions(+), 244 deletions(-) rename encxs/ucm/{cp1252cp1251.ucm => cp1252a.ucm} (100%) rename encxs/ucm/{cp1252cyreu4.ucm => cp1252b.ucm} (99%) rename encxs/ucm/{cp1252cyrck2.ucm => cp1252c.ucm} (99%) diff --git a/NEWS b/NEWS index bd680ce..be36c1f 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +0.6.3 2018-04-16 +- Кодировки в коде переименованы. В версии 0.6.2 был баг, который проявлялся, если вы собирали модуль кодировки на этой версии, а потом пытались использовать скрипт, из-за недопереименованных кодировок в коде. +- Заменён код разбора YAML-подобной строки файлов перевода EU4. + 0.6.2 2018-04-11 - Рекурсивный обход каталогов добавлены для всех функций, кроме распаковки локализации из архивов DLC и генератора lite-локализации CKII. diff --git a/Recodenc.pm b/Recodenc.pm index e881d61..06e6d97 100644 --- a/Recodenc.pm +++ b/Recodenc.pm @@ -24,11 +24,11 @@ package Recodenc; =head1 НАЗВАНИЕ -Recodenc — преобразование текстовых файлов и файлов специального формата между UTF8 и кодировками Recodenc (CP1252CYREU4, CP1252CYRCK2, CP1252CP1251) +Recodenc — преобразование текстовых файлов и файлов специального формата между UTF8 и кодировками Recodenc (CP1252A, CP1252B, CP1252C) =head1 СИНТАКСИС - my $flag = l10n_eu4($Recodenc::ENC_CP1252CYREU4, $dir1, $dir2); + my $flag = l10n_eu4($Recodenc::ENC_CP1252B, $dir1, $dir2); if ($flag == $Recodenc::FL_SRC_DIR_NOT_FOUND) {die 'Каталог с исходными данными не найден!'} elsif ($flag == $Recodenc::FL_DST_DIR_NOT_FOUND) {die 'Каталог для сохранения не найден!'} elsif ($flag == $Recodenc::FL_SRC_AND_DST_DIR_ARE_THE_SAME) {die 'Каталог с исходными данными и каталог назначения совпадают!'} @@ -49,13 +49,13 @@ use vars qw( $FL_DSTRU_DIR_NOT_FOUND $FL_SRC_AND_DST_DIR_ARE_THE_SAME $ENC_NULL - $ENC_CP1251 - $ENC_CP1252CYREU4 - $ENC_CP1252CYRCK2 + $ENC_CP1252A + $ENC_CP1252B + $ENC_CP1252C $ENC_TRANSLIT - $DEC_CP1251 - $DEC_CP1252CYREU4 - $DEC_CP1252CYRCK2 + $DEC_CP1252A + $DEC_CP1252B + $DEC_CP1252C ); use parent qw(Exporter); use File::Copy; @@ -74,24 +74,103 @@ use Encode::Recodenc; *FL_DSTRU_DIR_NOT_FOUND = \5; *FL_SRC_AND_DST_DIR_ARE_THE_SAME = \6; *ENC_NULL = \0; -*ENC_CP1251 = \1; -*ENC_CP1252CYREU4 = \2; -*ENC_CP1252CYRCK2 = \3; +*ENC_CP1252A = \1; +*ENC_CP1252B = \2; +*ENC_CP1252C = \3; *ENC_TRANSLIT = \4; -*DEC_CP1251 = \5; -*DEC_CP1252CYREU4 = \6; -*DEC_CP1252CYRCK2 = \7; +*DEC_CP1252A = \5; +*DEC_CP1252B = \6; +*DEC_CP1252C = \7; # Примечания к константам: # - FL_* — одно пространство имён # - ENC_* и DEC_* — одно пространтсво имён -# - ENC_FNT_* — кусок непересекающегося с ENC_* пространства имён ################################################################################ # КОД ДЛЯ ВЫПОЛНЕНИЯ ПЕРЕД ВЫЗОВАМИ ФУНКЦИЙ ################################################################################ # Объявление кодировок для FNT -my %cp1252cyreu4 = ( +my %cp1252a = ( + 8218 => '130', + 8222 => '132', + 8230 => '133', + 8249 => '139', + 8216 => '145', + 8217 => '146', + 8220 => '147', + 8221 => '148', + 8211 => '150', + 8212 => '151', + 8250 => '155', + 1040 => '192', + 1041 => '193', + 1042 => '194', + 1043 => '195', + 1044 => '196', + 1045 => '197', + 1025 => '168', + 1046 => '198', + 1047 => '199', + 1048 => '200', + 1049 => '201', + 1050 => '202', + 1051 => '203', + 1052 => '204', + 1053 => '205', + 1054 => '206', + 1055 => '207', + 1056 => '208', + 1057 => '209', + 1058 => '210', + 1059 => '211', + 1060 => '212', + 1061 => '213', + 1062 => '214', + 1063 => '215', + 1064 => '216', + 1065 => '217', + 1066 => '218', + 1067 => '219', + 1068 => '220', + 1069 => '221', + 1070 => '222', + 1071 => '223', + 1072 => '224', + 1073 => '225', + 1074 => '226', + 1075 => '227', + 1076 => '228', + 1077 => '229', + 1105 => '184', + 1078 => '230', + 1079 => '231', + 1080 => '232', + 1081 => '233', + 1082 => '234', + 1083 => '235', + 1084 => '236', + 1085 => '237', + 1086 => '238', + 1087 => '239', + 1088 => '240', + 1089 => '241', + 1090 => '242', + 1091 => '243', + 1092 => '244', + 1093 => '245', + 1094 => '246', + 1095 => '247', + 1096 => '248', + 1097 => '249', + 1098 => '250', + 1099 => '251', + 1100 => '252', + 1101 => '253', + 1102 => '254', + 1103 => '255' +); + +my %cp1252b = ( 352 => '138', 353 => '154', 338 => '140', @@ -148,7 +227,7 @@ my %cp1252cyreu4 = ( 1103 => '247' ); -my %cp1252cyrck2 = ( +my %cp1252c = ( 352 => '138', 353 => '154', 338 => '140', @@ -205,86 +284,6 @@ my %cp1252cyrck2 = ( 1103 => '247' ); -my %cp1251 = ( - 8218 => '130', - 8222 => '132', - 8230 => '133', - 8249 => '139', - 8216 => '145', - 8217 => '146', - 8220 => '147', - 8221 => '148', - 8211 => '150', - 8212 => '151', - 8250 => '155', - 1040 => '192', - 1041 => '193', - 1042 => '194', - 1043 => '195', - 1044 => '196', - 1045 => '197', - 1025 => '168', - 1046 => '198', - 1047 => '199', - 1048 => '200', - 1049 => '201', - 1050 => '202', - 1051 => '203', - 1052 => '204', - 1053 => '205', - 1054 => '206', - 1055 => '207', - 1056 => '208', - 1057 => '209', - 1058 => '210', - 1059 => '211', - 1060 => '212', - 1061 => '213', - 1062 => '214', - 1063 => '215', - 1064 => '216', - 1065 => '217', - 1066 => '218', - 1067 => '219', - 1068 => '220', - 1069 => '221', - 1070 => '222', - 1071 => '223', - 1072 => '224', - 1073 => '225', - 1074 => '226', - 1075 => '227', - 1076 => '228', - 1077 => '229', - 1105 => '184', - 1078 => '230', - 1079 => '231', - 1080 => '232', - 1081 => '233', - 1082 => '234', - 1083 => '235', - 1084 => '236', - 1085 => '237', - 1086 => '238', - 1087 => '239', - 1088 => '240', - 1089 => '241', - 1090 => '242', - 1091 => '243', - 1092 => '244', - 1093 => '245', - 1094 => '246', - 1095 => '247', - 1096 => '248', - 1097 => '249', - 1098 => '250', - 1099 => '251', - 1100 => '252', - 1101 => '253', - 1102 => '254', - 1103 => '255' -); - ################################################################################ # ЭКСПОРТИРУЕМЫЕ ФУНКЦИИ ################################################################################ @@ -298,11 +297,11 @@ sub l10n_eu4 { # r =head4 Параметр №1 - $ENC_CP1251 # кодировать из UTF8 в CP1251 - $ENC_CP1252CYREU4 # кодировать из UTF8 в CP1252CYREU4 + $ENC_CP1252A # кодировать из UTF8 в CP1252A + $ENC_CP1252B # кодировать из UTF8 в CP1252B $ENC_TRANSLIT # транслитерировать в рамках UTF8 - $DEC_CP1251 # декодировать из CP1251 в UTF8 - $DEC_CP1252CYREU4 # декодировать из CP1252CYREU4 в UTF8 + $DEC_CP1252A # декодировать из CP1252A в UTF8 + $DEC_CP1252B # декодировать из CP1252B в UTF8 =head4 Параметр №2 @@ -350,23 +349,23 @@ sub l10n_eu4 { # r # деление строки my ($tag, $num, $txt, $cmm) = &yml_string($str); # обработка строки - if ($cpfl == $ENC_CP1251) { - $txt = decode('cp1252', encode('cp1252cp1251', $txt)); + if ($cpfl == $ENC_CP1252A) { + $txt = decode('cp1252', encode('cp1252a', $txt)); } - elsif ($cpfl == $ENC_CP1252CYREU4) { - $txt = decode('cp1252', encode('cp1252cyreu4', $txt)); + elsif ($cpfl == $ENC_CP1252B) { + $txt = decode('cp1252', encode('cp1252b', $txt)); } elsif ($cpfl == $ENC_TRANSLIT) { &cyr_to_translit(\$txt); } - elsif ($cpfl == $DEC_CP1251) { - $txt = decode('cp1252cp1251', encode('cp1252', $txt)); + elsif ($cpfl == $DEC_CP1252A) { + $txt = decode('cp1252a', encode('cp1252', $txt)); } - elsif ($cpfl == $DEC_CP1252CYREU4) { - $txt = decode('cp1252cyreu4', encode('cp1252', $txt)); + elsif ($cpfl == $DEC_CP1252B) { + $txt = decode('cp1252b', encode('cp1252', $txt)); } # сохранение строки - if (length($cmm) > 0) { + if (defined($cmm)) { push(@strs, " $tag:$num \"$txt\" #$cmm\n"); } else { @@ -411,8 +410,8 @@ sub l10n_eu4_lite { # r =head4 Параметр №1 - $ENC_CP1251 # кодировать из UTF8 в CP1251 - $ENC_CP1252CYREU4 # кодировать из UTF8 в CP1252CYREU4 + $ENC_CP1252A # кодировать из UTF8 в CP1252A + $ENC_CP1252B # кодировать из UTF8 в CP1252B $ENC_TRANSLIT # транслитерировать в рамках UTF8 =head4 Параметр №2 @@ -464,17 +463,17 @@ sub l10n_eu4_lite { # r # деление строки my ($tag, $num, $txt, $cmm) = &yml_string($str); # обработка строки - if ($cpfl == $ENC_CP1251) { - $txt = decode('cp1252', encode('cp1252cp1251', $txt)); + if ($cpfl == $ENC_CP1252A) { + $txt = decode('cp1252', encode('cp1252a', $txt)); } - elsif ($cpfl == $ENC_CP1252CYREU4) { - $txt = decode('cp1252', encode('cp1252cyreu4', $txt)); + elsif ($cpfl == $ENC_CP1252B) { + $txt = decode('cp1252', encode('cp1252b', $txt)); } elsif ($cpfl == $ENC_TRANSLIT) { &cyr_to_translit(\$txt); } # сохранение строки - if (length($cmm) > 0) { + if (defined($cmm)) { push(@strs, " $tag:$num \"$txt\" #$cmm\n"); } else { @@ -521,14 +520,14 @@ sub l10n_eu4_lite { # r push(@strs, "$str\n"); next; } - if ($cpfl == $ENC_CP1251) { + if ($cpfl == $ENC_CP1252A) { # деление строки my ($tag, $num, $txt, $cmm) = &yml_string($str); # обработка строки $txt =~ y(ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ) (AAAAAAACEEEEIIIIDNOOOOOOUUUUYTsaaaaaaaceeeeiiiidnoooooouuuuyty); # сохранение строки - if (length($cmm) > 0) { + if (defined($cmm)) { push(@strs, " $tag:$num \"$txt\" #$cmm\n"); } else { @@ -709,11 +708,11 @@ sub l10n_ck2 { # r =head4 Параметр №1 - $ENC_CP1251 # кодировать из UTF8 в CP1251 - $ENC_CP1252CYRCK2 # кодировать из UTF8 в CP1252CYRCK2 + $ENC_CP1252A # кодировать из UTF8 в CP1252A + $ENC_CP1252C # кодировать из UTF8 в CP1252C $ENC_TRANSLIT # транслитерировать в CP1252 - $DEC_CP1251 # декодировать из CP1251 в UTF8 - $DEC_CP1252CYRCK2 # декодировать из CP1252CYRCK2 в UTF8 + $DEC_CP1252A # декодировать из CP1252A в UTF8 + $DEC_CP1252C # декодировать из CP1252C в UTF8 =head4 Параметр №2 @@ -738,13 +737,13 @@ sub l10n_ck2 { # r } # работа my ($reg_read, $reg_write); - if ($cpfl == $ENC_CP1251 or $cpfl == $ENC_CP1252CYRCK2 or $cpfl == $ENC_TRANSLIT) {$reg_read = ':unix:perlio:encoding(utf-8)'; $reg_write = ':crlf:perlio:encoding(cp1252)'} - elsif ($cpfl == $DEC_CP1251 or $cpfl == $DEC_CP1252CYRCK2) {$reg_read = ':crlf:perlio:encoding(cp1252)'; $reg_write = ':unix:perlio:encoding(utf-8)'} + if ($cpfl == $ENC_CP1252A or $cpfl == $ENC_CP1252C or $cpfl == $ENC_TRANSLIT) {$reg_read = ':unix:perlio:encoding(utf-8)'; $reg_write = ':crlf:perlio:encoding(cp1252)'} + elsif ($cpfl == $DEC_CP1252A or $cpfl == $DEC_CP1252C) {$reg_read = ':crlf:perlio:encoding(cp1252)'; $reg_write = ':unix:perlio:encoding(utf-8)'} my @filenames = grep { m/\.(?:csv|txt)$/ } flwc($dir1); foreach my $filename (@filenames) { if ($filename =~ m/\.csv$/) { open(my $filehandle, "<$reg_read", encode('locale_fs', "$dir1/$filename")); - if ($cpfl == $ENC_CP1251 or $cpfl == $ENC_CP1252CYRCK2 or $cpfl == $ENC_TRANSLIT) { + if ($cpfl == $ENC_CP1252A or $cpfl == $ENC_CP1252C or $cpfl == $ENC_TRANSLIT) { my $sof; # отбрасывание BOM, если он есть read($filehandle, $sof, 1); unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)} @@ -756,20 +755,20 @@ sub l10n_ck2 { # r # деление строки my ($tag, $txt) = split(/;/, $str, 3); # обработка строки - if ($cpfl == $ENC_CP1251) { - $txt = decode('cp1252', encode('cp1252cp1251', $txt)); + if ($cpfl == $ENC_CP1252A) { + $txt = decode('cp1252', encode('cp1252a', $txt)); } - elsif ($cpfl == $ENC_CP1252CYRCK2) { - $txt = decode('cp1252', encode('cp1252cyrck2', $txt)); + elsif ($cpfl == $ENC_CP1252C) { + $txt = decode('cp1252', encode('cp1252c', $txt)); } elsif ($cpfl == $ENC_TRANSLIT) { &cyr_to_translit(\$txt); } - elsif ($cpfl == $DEC_CP1251) { - $txt = decode('cp1252cp1251', encode('cp1252', $txt)); + elsif ($cpfl == $DEC_CP1252A) { + $txt = decode('cp1252a', encode('cp1252', $txt)); } - elsif ($cpfl == $DEC_CP1252CYRCK2) { - $txt = decode('cp1252cyrck2', encode('cp1252', $txt)); + elsif ($cpfl == $DEC_CP1252C) { + $txt = decode('cp1252c', encode('cp1252', $txt)); } # сохранение строки push(@strs, "$tag;$txt;x\n"); @@ -812,8 +811,8 @@ sub l10n_ck2_lite { =head4 Параметр №1 - $ENC_CP1251 # кодировать из UTF8 в CP1251 - $ENC_CP1252CYRCK2 # кодировать из UTF8 в CP1252CYRCK2 + $ENC_CP1252A # кодировать из UTF8 в CP1252A + $ENC_CP1252C # кодировать из UTF8 в CP1252C $ENC_TRANSLIT # транслитерировать в CP1252 =head4 Параметр №2 @@ -896,11 +895,11 @@ sub l10n_ck2_lite { } elsif (defined($loc_ru{$tag})) { my $trru = $loc_ru{$tag}; - if ($cpfl == $ENC_CP1251) { - $trru = decode('cp1252', encode('cp1252cp1251', $trru)); + if ($cpfl == $ENC_CP1252A) { + $trru = decode('cp1252', encode('cp1252a', $trru)); } - elsif ($cpfl == $ENC_CP1252CYRCK2) { - $trru = decode('cp1252', encode('cp1252cyrck2', $trru)); + elsif ($cpfl == $ENC_CP1252C) { + $trru = decode('cp1252', encode('cp1252c', $trru)); } elsif ($cpfl == $ENC_TRANSLIT) { &cyr_to_translit(\$trru); @@ -1036,9 +1035,9 @@ sub font { # r =head4 Параметр №1 $ENC_NULL # только очистить - $ENC_CP1251 # обработка CP1251 - $ENC_CP1252CYRCK2 # обработка CP1252CYRCK2 - $ENC_CP1252CYREU4 # обработка CP1252CYREU4 + $ENC_CP1252A # обработка CP1252A + $ENC_CP1252B # обработка CP1252B + $ENC_CP1252C # обработка CP1252C =head4 Параметр №2 @@ -1061,7 +1060,7 @@ sub font { # r } } # работа - my @filenames = grep { m/(\.fnt|\.tga|\.dds)$/ } flwc($dir1); + my @filenames = grep { m/(?:\.fnt|\.tga|\.dds)$/ } flwc($dir1); foreach my $filename (@filenames) { if ($filename =~ m/\.fnt$/) { open(my $filehandle, '<:unix:crlf', encode('locale_fs', "$dir1/$filename")); @@ -1131,7 +1130,7 @@ sub font { # r print $filehandle @strs; close $filehandle; } - elsif ($filename =~ m/\.(tga|dds)$/) { + elsif ($filename =~ m/\.(?:tga|dds)$/) { my $new_name = $filename; $new_name =~ s/_0\.tga$/\.tga/; $new_name =~ s/_0\.dds$/\.dds/; @@ -1161,8 +1160,8 @@ sub modexport { # r =head4 Параметр №1 - $ENC_CP1251 # локализация закодирована в CP1251 - $ENC_CP1252CYREU4 # локализация закодирована в CP1252CYREU4 + $ENC_CP1252A # локализация закодирована в CP1251 + $ENC_CP1252B # локализация закодирована в CP1252B =head4 Параметр №2 @@ -1225,7 +1224,7 @@ sub modexport { # r # обработка строки $txt =~ y(‚ѓ„…†‡€‰Љ‹ЊЋ‘’“”•–—˜™љ›њћџ ЎўҐ¦Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя) (‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢¥¦¨©ª«¬®¯°±²³´µ¶·¸¹º»¼¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ); - if ($cpfl == $ENC_CP1251) { + if ($cpfl == $ENC_CP1252A) { if ($filename =~ m/converted_cultures/) { $txt =~ s/\x7f\x11$/àÿ/; } @@ -1233,7 +1232,7 @@ sub modexport { # r $txt .= 'ñê'; } } - elsif ($cpfl == $ENC_CP1252CYREU4) { + elsif ($cpfl == $ENC_CP1252B) { $txt =~ y/^/€/; if ($filename =~ m/converted_cultures/) { $txt =~ s/\x7f\x11$/a÷/; @@ -1263,7 +1262,7 @@ sub modexport { # r } return 0; } -# Конвертирование файлов простого текста из UTF8 в CP1252CYR +# Конвертирование файлов простого текста из UTF8 в CP1252A/B/C sub plaintext { # r =head2 plaintext @@ -1273,13 +1272,14 @@ sub plaintext { # r =head4 Параметр №1 - $ENC_CP1251 # кодировать из UTF8 в CP1251 - $ENC_CP1252CYRCK2 # кодировать из UTF8 в CP1252CYRCK2 - $ENC_CP1252CYREU4 # кодировать из UTF8 в CP1252CYREU4 + $ENC_CP1252A # кодировать из UTF8 в CP1252A + $ENC_CP1252B # кодировать из UTF8 в CP1252B + $ENC_CP1252C # кодировать из UTF8 в CP1252C $ENC_TRANSLIT # транслитерировать в рамках UTF8 - $DEC_CP1251 # декодировать из CP1251 в UTF8 - $DEC_CP1252CYRCK2 # декодировать из CP1252CYRCK2 в UTF8 - $DEC_CP1252CYREU4 # декодировать из CP1252CYREU4 в UTF8 + $DEC_CP1252A # декодировать из CP1252A в UTF8 + $DEC_CP1252B # декодировать из CP1252B в UTF8 + $DEC_CP1252C # декодировать из CP1252C в UTF8 + =head4 Параметр №2 @@ -1303,13 +1303,13 @@ sub plaintext { # r }; # работа my ($reg_read, $reg_write); - if ($cpfl == $ENC_CP1251) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(cp1252cp1251)'} - elsif ($cpfl == $ENC_CP1252CYRCK2) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(cp1252cyrck2)'} - elsif ($cpfl == $ENC_CP1252CYREU4) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(cp1252cyreu4)'} - elsif ($cpfl == $ENC_TRANSLIT) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(utf-8)'} - elsif ($cpfl == $DEC_CP1251) {$reg_read = ':encoding(cp1252cp1251)'; $reg_write = ':encoding(utf-8)'} - elsif ($cpfl == $DEC_CP1252CYRCK2) {$reg_read = ':encoding(cp1252cyrck2)'; $reg_write = ':encoding(utf-8)'} - elsif ($cpfl == $DEC_CP1252CYREU4) {$reg_read = ':encoding(cp1252cyreu4)'; $reg_write = ':encoding(utf-8)'} + if ($cpfl == $ENC_CP1252A) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(cp1252a)'} + elsif ($cpfl == $ENC_CP1252C) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(cp1252c)'} + elsif ($cpfl == $ENC_CP1252B) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(cp1252b)'} + elsif ($cpfl == $ENC_TRANSLIT) {$reg_read = ':encoding(utf-8)'; $reg_write = ':encoding(utf-8)'} + elsif ($cpfl == $DEC_CP1252A) {$reg_read = ':encoding(cp1252a)'; $reg_write = ':encoding(utf-8)'} + elsif ($cpfl == $DEC_CP1252C) {$reg_read = ':encoding(cp1252c)'; $reg_write = ':encoding(utf-8)'} + elsif ($cpfl == $DEC_CP1252B) {$reg_read = ':encoding(cp1252b)'; $reg_write = ':encoding(utf-8)'} my @filenames = grep { !m/^\.\.?$/ } flwc($dir1); foreach my $filename (@filenames) { unless (-f encode('locale_fs', "$dir1/$filename")) {next} @@ -1348,23 +1348,7 @@ sub plaintext { # r # функция разбора правильной YAML-подобной строки файла локализации EU4 sub yml_string { my $str = shift; - $str =~ s/^\h//; # удаление начального пробела - $str =~ m/^[^:]+:[0-9]*/p; # нахождение тэга и номера - $str = ${^POSTMATCH}; # выбрасывание из строки найденной информации - my ($tag, $num) = split (/:/, ${^MATCH}); # приравнивание тэга и номера соответствующим переменным - $str =~ s/^\h+//; # удаление пробела между номером и текстом - $str =~ s/\\\"/\0/g; # замена экранированных кавычек на нулевые символы - $str =~ m/^"[^"]*"/p; # нахождение текста //в некоторых строках нет локализации - $str = ${^POSTMATCH}; # выбрасывание из строки найденной информации - my $txt = ${^MATCH}; # приравнивание текста соответствующей переменной - $txt =~ s/^"//; # удаление кавычки в начале текста - $txt =~ s/"$//; # удаление кавычки в конце текста - $txt =~ s/\0/\\\"/g; # замена нулевых символов на экранированные кавычки в тексте - $str =~ s/\0/\\\"/g; # замена нулевых символов на экранированные кавычки в исходной строке - my $cmm = $str; # приравнивание остатков строки комментарию - $cmm =~ s/ #//; # удаление обозначения комментария в начале комментария - #//в оригинальной локализации комментарий в строке всегда начинается последовательностью « #» - return $tag, $num, $txt, $cmm; + return $str =~ m/^ ([^:]+):(\d*) *"(.*?[^\\]?)"(?: *#(.*))?$/; } # функция помощи сортировки для функции модификации карт шрифтов @@ -1441,27 +1425,27 @@ sub id_to { =head4 Параметр №2 - $ENC_CP1252CYREU4 # заменить кодовые позиции Unicode на CP1252CYREU4 - $ENC_CP1252CYRCK2 # заменить кодовые позиции Unicode на CP1252CYRCK2 - $ENC_CP1251 # заменить кодовые позиции Unicode на CP1251 + $ENC_CP1252A # заменить кодовые позиции Unicode на CP1252A + $ENC_CP1252B # заменить кодовые позиции Unicode на CP1252B + $ENC_CP1252C # заменить кодовые позиции Unicode на CP1252C =cut my $str = shift; # №1 my $reg = shift; # №2 my @str = split(/=/, $$str, 2); - if ($reg == $ENC_CP1252CYREU4) { - if (defined($cp1252cyreu4{$str[1]})) { - $str[1] = $cp1252cyreu4{$str[1]} + if ($reg == $ENC_CP1252B) { + if (defined($cp1252b{$str[1]})) { + $str[1] = $cp1252b{$str[1]} } } - elsif ($reg == $ENC_CP1252CYRCK2) { - if (defined($cp1252cyrck2{$str[1]})) { - $str[1] = $cp1252cyrck2{$str[1]} + elsif ($reg == $ENC_CP1252C) { + if (defined($cp1252c{$str[1]})) { + $str[1] = $cp1252c{$str[1]} } } - elsif ($reg == $ENC_CP1251) { - if (defined($cp1251{$str[1]})) { - $str[1] = $cp1251{$str[1]} + elsif ($reg == $ENC_CP1252A) { + if (defined($cp1252a{$str[1]})) { + $str[1] = $cp1252a{$str[1]} } } $$str = "$str[0]=$str[1]"; diff --git a/encxs/MANIFEST b/encxs/MANIFEST index fd3c110..daa1c39 100644 --- a/encxs/MANIFEST +++ b/encxs/MANIFEST @@ -6,6 +6,6 @@ NEWS lib/Encode/Recodenc.pm t/00_compile.t t/10_encode_recodenc.t -ucm/cp1252cp1251.ucm -ucm/cp1252cyrck2.ucm -ucm/cp1252cyreu4.ucm +ucm/cp1252a.ucm +ucm/cp1252b.ucm +ucm/cp1252c.ucm diff --git a/encxs/lib/Encode/Recodenc.pm b/encxs/lib/Encode/Recodenc.pm index e68d5cc..c6e123f 100644 --- a/encxs/lib/Encode/Recodenc.pm +++ b/encxs/lib/Encode/Recodenc.pm @@ -38,9 +38,9 @@ Encode::Recodenc - encodings module for Recodenc use Encode qw(encode); use Encode::Recodenc; - $data = encode('cp1252cp1251', $data); - $data = encode('cp1252cyrck2', $data); - $data = encode('cp1252cyreu4', $data); + $data = encode('cp1252a', $data); + $data = encode('cp1252b', $data); + $data = encode('cp1252c', $data); =head1 SEE ALSO diff --git a/encxs/t/10_encode_recodenc.t b/encxs/t/10_encode_recodenc.t index b175b6b..518154e 100644 --- a/encxs/t/10_encode_recodenc.t +++ b/encxs/t/10_encode_recodenc.t @@ -4,15 +4,15 @@ use Test::More tests => 3; use Encode; use Encode::Recodenc; -my $se_cp1252cyreu4 = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; -my $sd_cp1252cyreu4 = 'A€B‚ƒEË„…†‡KˆMHO‰PCT‹‘X’“”•–—˜™›×a ¢¥¦e먩ª«¬®¯°o±pc²³´xµ¶·¸¹º»¼¾÷'; +my $se_cp1252a = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; +my $sd_cp1252a = 'ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäå¸æçèéêëìíîïðñòóôõö÷øùúûüýþÿ'; -my $se_cp1252cyrck2 = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; -my $sd_cp1252cyrck2 = 'A^B‚ƒEË„…†‡KˆMHO‰PCT‹‘X’“”•–—˜™›×a ¢¥¦e먩ª«¬®¯°o±pc²³´xµ¶·¸¹º»¼¾÷'; +my $se_cp1252b = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; +my $sd_cp1252b = 'A€B‚ƒEË„…†‡KˆMHO‰PCT‹‘X’“”•–—˜™›×a ¢¥¦e먩ª«¬®¯°o±pc²³´xµ¶·¸¹º»¼¾÷'; -my $se_cp1252cp1251 = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; -my $sd_cp1252cp1251 = 'ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäå¸æçèéêëìíîïðñòóôõö÷øùúûüýþÿ'; +my $se_cp1252c = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; +my $sd_cp1252c = 'A^B‚ƒEË„…†‡KˆMHO‰PCT‹‘X’“”•–—˜™›×a ¢¥¦e먩ª«¬®¯°o±pc²³´xµ¶·¸¹º»¼¾÷'; -is (decode('cp1252', encode('cp1252cyreu4', $se_cp1252cyreu4)), $sd_cp1252cyreu4, 'CP1252CYREU4: String encoded correctly'); -is (decode('cp1252', encode('cp1252cyrck2', $se_cp1252cyrck2)), $sd_cp1252cyrck2, 'CP1252CYRCK2: String encoded correctly'); -is (decode('cp1252', encode('cp1252cp1251', $se_cp1252cp1251)), $sd_cp1252cp1251, 'CP1252CP1251: String encoded correctly'); +is (decode('cp1252', encode('cp1252a', $se_cp1252a)), $sd_cp1252a, 'CP1252A: String encoded correctly'); +is (decode('cp1252', encode('cp1252b', $se_cp1252b)), $sd_cp1252b, 'CP1252B: String encoded correctly'); +is (decode('cp1252', encode('cp1252c', $se_cp1252c)), $sd_cp1252c, 'CP1252C: String encoded correctly'); diff --git a/encxs/ucm/cp1252cp1251.ucm b/encxs/ucm/cp1252a.ucm similarity index 100% rename from encxs/ucm/cp1252cp1251.ucm rename to encxs/ucm/cp1252a.ucm diff --git a/encxs/ucm/cp1252cyreu4.ucm b/encxs/ucm/cp1252b.ucm similarity index 99% rename from encxs/ucm/cp1252cyreu4.ucm rename to encxs/ucm/cp1252b.ucm index f33f624..2c49a48 100644 --- a/encxs/ucm/cp1252cyreu4.ucm +++ b/encxs/ucm/cp1252b.ucm @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ################################################################################ - "cp1252cyreu4" + "cp1252b" 1 3 \x3F diff --git a/encxs/ucm/cp1252cyrck2.ucm b/encxs/ucm/cp1252c.ucm similarity index 99% rename from encxs/ucm/cp1252cyrck2.ucm rename to encxs/ucm/cp1252c.ucm index f24a1ad..6d6844d 100644 --- a/encxs/ucm/cp1252cyrck2.ucm +++ b/encxs/ucm/cp1252c.ucm @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . ################################################################################ - "cp1252cyrck2" + "cp1252c" 1 3 \x3F diff --git a/recodenc-gui.pl b/recodenc-gui.pl index d0aac26..00f1e7d 100755 --- a/recodenc-gui.pl +++ b/recodenc-gui.pl @@ -81,7 +81,7 @@ BEGIN binmode(STDERR, ":encoding(console_out)"); *PROGNAME = \'Recodenc'; -*VERSION = \'0.6.2'; +*VERSION = \'0.6.3'; *LABEL_PADDING = \'3x3'; # загрузка конфигурации @@ -206,16 +206,16 @@ BEGIN IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::ENC_CP1252CYREU4); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::ENC_CP1252B); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Транслитерировать', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::ENC_TRANSLIT); return IUP_DEFAULT}) ] ), IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::DEC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::DEC_CP1252CYREU4); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::DEC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_eu4($Recodenc::DEC_CP1252B); return IUP_DEFAULT}), ] ) ] @@ -244,8 +244,8 @@ BEGIN IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1251', ACTION => sub{&w_recodenc_l10n_eu4_lite($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYR', ACTION => sub{&w_recodenc_l10n_eu4_lite($Recodenc::ENC_CP1252CYREU4); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1251', ACTION => sub{&w_recodenc_l10n_eu4_lite($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYR', ACTION => sub{&w_recodenc_l10n_eu4_lite($Recodenc::ENC_CP1252B); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Транслитерировать', ACTION => sub{&w_recodenc_l10n_eu4_lite($Recodenc::ENC_TRANSLIT); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Только тэгы', ACTION => sub{&w_recodenc_l10n_eu4_tags(); return IUP_DEFAULT}) ] @@ -299,16 +299,16 @@ BEGIN IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::ENC_CP1252CYRCK2); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Кодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::ENC_CP1252C); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Транслитерировать', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::ENC_TRANSLIT); return IUP_DEFAULT}) ] ), IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::DEC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::DEC_CP1252CYRCK2); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1251)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::DEC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Декодировать (CP1252CYR)', ACTION => sub{&w_recodenc_l10n_ck2($Recodenc::DEC_CP1252C); return IUP_DEFAULT}), ] ) ] @@ -337,8 +337,8 @@ BEGIN IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1251', ACTION => sub{&w_recodenc_l10n_ck2_lite($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYR', ACTION => sub{&w_recodenc_l10n_ck2_lite($Recodenc::ENC_CP1252CYRCK2); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1251', ACTION => sub{&w_recodenc_l10n_ck2_lite($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYR', ACTION => sub{&w_recodenc_l10n_ck2_lite($Recodenc::ENC_CP1252C); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Транслитерировать', ACTION => sub{&w_recodenc_l10n_ck2_lite($Recodenc::ENC_TRANSLIT); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Только тэгы', ACTION => sub{&w_recodenc_l10n_ck2_tags(); return IUP_DEFAULT}) ] @@ -367,9 +367,9 @@ BEGIN HOMOGENEOUS => 'YES', child => [ IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Очистить', ACTION => sub{&w_recodenc_font($Recodenc::ENC_NULL); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1251', ACTION => sub{&w_recodenc_font($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYREU4', ACTION => sub{&w_recodenc_font($Recodenc::ENC_CP1252CYREU4); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYRCK2', ACTION => sub{&w_recodenc_font($Recodenc::ENC_CP1252CYRCK2); return IUP_DEFAULT}) + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1251', ACTION => sub{&w_recodenc_font($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYREU4', ACTION => sub{&w_recodenc_font($Recodenc::ENC_CP1252B); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'CP1252CYRCK2', ACTION => sub{&w_recodenc_font($Recodenc::ENC_CP1252C); return IUP_DEFAULT}) ] ) ] @@ -395,8 +395,8 @@ BEGIN IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Конвертировать (CP1251)', ACTION => sub{&w_recodenc_modexport($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Конвертировать (CP1252CYR)', ACTION => sub{&w_recodenc_modexport($Recodenc::ENC_CP1252CYREU4); return IUP_DEFAULT}) + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Конвертировать (CP1251)', ACTION => sub{&w_recodenc_modexport($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Конвертировать (CP1252CYR)', ACTION => sub{&w_recodenc_modexport($Recodenc::ENC_CP1252B); return IUP_DEFAULT}) ] ) ] @@ -422,18 +422,18 @@ BEGIN IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Код. (CP1251)', TIP => 'Кодировать (CP1251)', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Код. (CP1252CYREU4)', TIP => 'Кодировать (CP1252CYREU4)', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_CP1252CYREU4); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Код. (CP1252CYRCK2)', TIP => 'Кодировать (CP1252CYRCK2)', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_CP1252CYRCK2); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Код. (CP1251)', TIP => 'Кодировать (CP1251)', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Код. (CP1252CYREU4)', TIP => 'Кодировать (CP1252CYREU4)', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_CP1252B); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Код. (CP1252CYRCK2)', TIP => 'Кодировать (CP1252CYRCK2)', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_CP1252C); return IUP_DEFAULT}), IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Транслитерировать', ACTION => sub{&w_recodenc_plaintext($Recodenc::ENC_TRANSLIT); return IUP_DEFAULT}) ] ), IUP::Hbox->new( HOMOGENEOUS => 'YES', child => [ - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Дек. (CP1251)', TIP => 'Декодировать (CP1251)', ACTION => sub{&w_recodenc_plaintext($Recodenc::DEC_CP1251); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Дек. (CP1252CYREU4)', TIP => 'Декодировать (CP1252CYREU4)', ACTION => sub{&w_recodenc_plaintext($Recodenc::DEC_CP1252CYREU4); return IUP_DEFAULT}), - IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Дек. (CP1252CYRCK2)', TIP => 'Декодировать (CP1252CYRCK2)', ACTION => sub{&w_recodenc_plaintext($Recodenc::DEC_CP1252CYRCK2); return IUP_DEFAULT}) + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Дек. (CP1251)', TIP => 'Декодировать (CP1251)', ACTION => sub{&w_recodenc_plaintext($Recodenc::DEC_CP1252A); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Дек. (CP1252CYREU4)', TIP => 'Декодировать (CP1252CYREU4)', ACTION => sub{&w_recodenc_plaintext($Recodenc::DEC_CP1252B); return IUP_DEFAULT}), + IUP::Button->new(EXPAND => 'HORIZONTAL', TITLE => 'Дек. (CP1252CYRCK2)', TIP => 'Декодировать (CP1252CYRCK2)', ACTION => sub{&w_recodenc_plaintext($Recodenc::DEC_CP1252C); return IUP_DEFAULT}) ] ) ] diff --git a/recodenc.pl b/recodenc.pl index 122981f..7d963aa 100755 --- a/recodenc.pl +++ b/recodenc.pl @@ -43,7 +43,7 @@ @ARGV = map {decode('locale', $_)} @ARGV; *PROGNAME = \'Recodenc'; -*VERSION = \'0.6.2'; +*VERSION = \'0.6.3'; *ACTION_ENCODE = \1; *ACTION_DECODE = \2; *ACTION_TRANSLIT = \3; @@ -117,14 +117,14 @@ sub det_enc { my $gam = shift; # игра: eu4 — EU4, ck2 — CK2 if ($actn == $ACTION_ENCODE) { if ($encoding eq 'cp1251') { - return $Recodenc::ENC_CP1251; + return $Recodenc::ENC_CP1252A; } elsif ($encoding eq 'cp1252cyreu4') { if ($gam eq 'ck2') { die "Задана неверная локализация кодировки CP1252CYR.\n"; } else { - return $Recodenc::ENC_CP1252CYREU4; + return $Recodenc::ENC_CP1252B; } } elsif ($encoding eq 'cp1252cyrck2') { @@ -132,15 +132,15 @@ sub det_enc { die "Задана неверная локализация кодировки CP1252CYR.\n"; } else { - return $Recodenc::ENC_CP1252CYRCK2; + return $Recodenc::ENC_CP1252C; } } elsif ($encoding eq 'cp1252cyr') { if ($gam eq 'eu4') { - return $Recodenc::ENC_CP1252CYREU4; + return $Recodenc::ENC_CP1252B; } elsif ($gam eq 'ck2') { - return $Recodenc::ENC_CP1252CYRCK2; + return $Recodenc::ENC_CP1252C; } else { die "CP1252CYR без указания движка игры в недопустимом месте.\n"; @@ -152,14 +152,14 @@ sub det_enc { } elsif ($actn == $ACTION_DECODE) { if ($encoding eq 'cp1251') { - return $Recodenc::DEC_CP1251; + return $Recodenc::DEC_CP1252A; } elsif ($encoding eq 'cp1252cyreu4') { if ($gam eq 'ck2') { die "Задана неверная локализация кодировки CP1252CYR.\n"; } else { - return $Recodenc::DEC_CP1252CYREU4; + return $Recodenc::DEC_CP1252B; } } elsif ($encoding eq 'cp1252cyrck2') { @@ -167,15 +167,15 @@ sub det_enc { die "Задана неверная локализация кодировки CP1252CYR.\n"; } else { - return $Recodenc::DEC_CP1252CYRCK2; + return $Recodenc::DEC_CP1252C; } } elsif ($encoding eq 'cp1252cyr') { if ($gam eq 'eu4') { - return $Recodenc::DEC_CP1252CYREU4; + return $Recodenc::DEC_CP1252B; } elsif ($gam eq 'ck2') { - return $Recodenc::DEC_CP1252CYRCK2; + return $Recodenc::DEC_CP1252C; } else { die "CP1252CYR без указания движка игры в недопустимом месте.\n";