Re: [Lug-bg] български езикови настройки
- Subject: Re: [Lug-bg] български езикови настройки
- From: Roumen Petrov <help@xxxxxxxxxxxxxxxxx>
- Date: Mon, 15 Mar 2010 01:14:13 +0200
Vladimir Vitkov wrote:
Здравей Румене,
Аз лично не съм особенно добър в четенето на този файл, та за да се
завърти дискусията какви са точно разликите с текущата реализация?
Охх , де да знаех след две години, кои точните промени....
2010/3/14 Roumen Petrov<help@xxxxxxxxxxxxxxxxx>:
Здравейте ,
Какво мислите за следното предложение за нови български езикови настройки в
ГНУ Си библиотеката (прикачено е като файл bg_BG )?
Румен
И така първоначало всичко започна с темата "речниково сортиране:
кирилица и български езикови настройки" (моля вижте архите).
Май започнах темата след като направих в libxslt xsl:sort lang да
работи на microsoft windows без ограничение (виж
http://xmlsoft.org/XSLT/news.html за версия 1.1,25).
Технически в реализацията на xsl:sort lang се ползват методи, които
работят на Линукс и Мак ОС X(трябва да работят?). Същите методи може би
работят и на Microsort Windows, но българския не е включен в списъка за
setlocale и т.н. Затова направих "заобикаляне" и с него и българския
работи ( би трябвало и с останалите не влючени в списъка за setlocale,
но те не ме интересуват).
Проблема, бе че не се получават съвместими резултати и затова бе
отворена гореспоменатата тема.
Второ се оказа лиценцията и предишния автор, защото горното в момента ми
изглежда блокирано -
http://sourceware.org/bugzilla/show_bug.cgi?id=9865. Е след две години
опити, ни вест, ни кост от предишния автор.
Други разлики:
А) видими:
1) дата/час
- основната, и лесно видима, трябва да е в представянето на часа -
запетайките са променени на двоеточия.
- обърнете внимание на подреждането на ден месец година при различните
начини за представяне на дата.
- добавих и възможност за ера, .т.е "пр н.е" и "сл н.е.". За да проверя,
използвах приложената към писмото програма "test-strftime-E.c"(бел.
когато се тества дата около новата ера деня от седмицата не е верен,
просто не съм указал правилната величина - все пак е за тест на
преди/след новата ера). С командата date съм ограничен в тестовете(виж
прикачения файл test-bg-locale.sh). Работи ми за дати до 1901-12-14 и
отказва за последния петък, 13-ти в 1901 и по-ранни.
- описание(документация) на "флаговете" използвани за задаване на форматите.
- преди/след обяд не се поддържа вече. По памет старата версия не задава
знаци на преди/след обяд (американските са твърде кратки пък и ние не
казваме преди обяд). Оставих го на 24-часово представяне, за да се
избегне двусмислие - 07:01:02 е сутринта или след обяд ? Предложение за
съкращения ?
2) числа с плаваща запетая и пари
Ние не разделяме на тройки числата, нали ? Премахнато е. Един милион
лева си го изписваме 100000,00 лв.
Б) скрити (май никой не ги ползва):
Тези няма как да се тестват, защото липсват методи в бибиотеката. Ако
знаете как, кажете.
- представане на телефонни номера : вече без кръгли скоби
- межд. номер за София трябва да се изписва +359 2 XXXXXX;
- м-у градски за София трябва да се изписва 02 XXXXXX.
( по памет знам само кода на София - 2 );
- представяне на имена:
- съкращението "г-нин" е променено на "г-н";
- име, което трява да се предхожда от "доктор"/"инженер" и т.н, че
се предпочита съкратена форма;
- адреси:
тук ударих малко на камък - за %n localedef ми се оплаква, но всичко
е описано в файла bg_BG.
Със сигурност, съм изпуснал нещо, но съм готов да подръждам българските
езикови настройки и да отстанявам възникналите проблеми. Ако аз нещо съм
възпрепятсван, съм задал и други адреси за връзка :
% Contact: Linux Users Group - Bulgaria
% Email: lug-bg@xxxxxxxxxxxxxxxxxx
% Contact: Bulgarian translators' team
% Email: <dict@xxxxxxxxxx>
Освен това предлагам правата да се дадат и на ФСФ(Free Software
Foundation), за да не възникват проблеми с подръжката.
Румен
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <locale.h>
void
do_test(const char *tm_fmt, const struct tm *tm) {
char s[1024];
size_t l;
l = strftime(s, sizeof(s)-1, tm_fmt, tm);
printf("l=%d\ttm_fmt='%s'\ts='%s'\n", l, tm_fmt, s);
}
int main() {
time_t t = 0;
struct tm *tm;
setlocale(LC_ALL, "");
tm = localtime(&t);
do_test("%c" , tm);
do_test("%Ec", tm);
do_test("%C" , tm);
do_test("%EC", tm);
do_test("%x" , tm);
do_test("%Ex", tm);
do_test("%X" , tm);
do_test("%EX", tm);
do_test("%y" , tm);
do_test("%Ey", tm);
do_test("%Y" , tm);
do_test("%EY", tm);
do_test("%C %EC", tm);
tm->tm_year = -1900;
do_test("%Ec", tm);
do_test("%EY", tm);
do_test("%C %EC", tm);
tm->tm_year = -1901;
do_test("%Ec", tm);
do_test("%EY", tm);
do_test("%C %EC", tm);
return(0);
}
#! /bin/sh
for MON in 01 04; do
for H in 01 13; do
DATE="2010-${MON}-01 ${H}:02:03"
echo === $DATE ===
#%E modifier - %Ec, %EC, %Ex, %EX, %Ey, %EY
printf 'long\t\t' ; date -d "$DATE"
printf 'short\t\t' ; date -d "$DATE" +%c
printf 'short+era\t' ; date -d "$DATE" +%Ec
printf 'cent+era\t' ; date -d "$DATE" '+%C %EC'
printf 'date\t\t' ; date -d "$DATE" +%x
printf 'date+era\t' ; date -d "$DATE" +%Ex
printf 'time\t\t' ; date -d "$DATE" +%X
printf 'time+era\t' ; date -d "$DATE" +%EX
printf 's-year\t\t' ; date -d "$DATE" +%y
printf 's-year+era\t' ; date -d "$DATE" +%Ey
printf 'year\t\t' ; date -d "$DATE" +%Y
printf 'year+era\t' ; date -d "$DATE" +%EY
printf '12-hour time\t' ; date -d "$DATE" +%r
printf 'rfc-2822\t' ; date -d "$DATE" --rfc-2822
printf 'rfc-3339+sec.\t' ; date -d "$DATE" --rfc-3339=seconds
done
printf 'long\t\t' ; date -d "1901-09-13"
printf 'long\t\t' ; date -d "1901-12-13"
printf 'long\t\t' ; date -d "1901-12-14"
done
_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg
|