Использование LOCALE для указания дней недели

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
ABBASoft
Активист
Сообщения: 115
Зарегистрирован: 15 Май 2006, 18:08

Использование LOCALE для указания дней недели

Сообщение ABBASoft »

Как с помощью LOCALE определить (указать) русские дни недели, как это делается, например, для названий месяцев:
LOCALE('CLAMONTH','Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь') или
LOCALE('CLAMON','Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек')
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Использование LOCALE для указания дней недели

Сообщение BOB »

Дык вроде в хелпе пример есть CLAMONTH="Январь","Февраль",....
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: Использование LOCALE для указания дней недели

Сообщение Admin »

BOB писал(а):Дык вроде в хелпе пример есть CLAMONTH="Январь","Февраль",....
Разговор о днях недели!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Использование LOCALE для указания дней недели

Сообщение BOB »

А ну да виноват , тогда ручками
execute data % 7 +1
return 'Понедельник'
....
end
или перейти на net
message(DateTime.Now.ToString('dddd')) , я бы перешел на net .
Кстати пример для месяцев не совпадает с хэлпом .
ABBASoft
Активист
Сообщения: 115
Зарегистрирован: 15 Май 2006, 18:08

Re: Использование LOCALE для указания дней недели

Сообщение ABBASoft »

Это для русификации втсавляли в Cla 6 из директории LibSrc файл AbLang_Rus.inc с помоoью оператора INCLUDE в модуль ABPROGRM.TPW после строк %NULL, CODE
INCLUDE('AbLang_Rus.inc') ! Русификация индексов, поисков (и т.п.). Тут же в AbLang_Rus.inc есть такие операторы:
LOCALE('CLAMONTH','Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь') или
LOCALE('CLAMON','Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек')
Или свой собственный порядок сортировки -- сначала латиница, затем кириллица
LOCALE('CLACOLSEQ','AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuWwXxYyZzАаБбВвГгДдЕеЁёЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя')
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Re: Использование LOCALE для указания дней недели

Сообщение Shur »

Как вариант:

Код: Выделить всё

DaysOfWeekString STRING  ('ВоскресеньеПонедельникВторник    Среда      Четверг    Пятница    Суббота    ') 
DaysOfWeek           STRING(11),DIM(7),OVER(DaysOfWeekString)
   CODE
   DayOfWeek" = CLIP(DaysOfWeek[(TODAY()%7)+1])
ABBASoft
Активист
Сообщения: 115
Зарегистрирован: 15 Май 2006, 18:08

Re: Использование LOCALE для указания дней недели

Сообщение ABBASoft »

Коллеги, имеется ввиду определение с помощью LOCALE() дней недели на русском языке. Затем они будут выводится (например, в статус-строке при выводе даты в формате <день, месяц, число, год>)
на русском. Сейчас выводится, например, так: Thursday, Июль, 26, 2012 в статус-строке.
За помощь - заранее благодарен.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Использование LOCALE для указания дней недели

Сообщение Дед Пахом »

Вообще-то в статусбар информацию заносит определённая строка кода. Нельзя ли на неё взглянуть? Это я к тому, что дату на русском выводит FORMAT(TODAY(), @D17), а вот день недели хз кто. И вам это хз надо переопределить. и LOCALE тут ни при чём, имхо.

ПС

хотя нет, не прав я, это не FORMAT(), это явно под американский вид даты сделано - какой русскоязычный скажет "сегодня вторник, июль, 25, 2012"? У нас FORMAt(@D17) выдал бы "25 июля 2012"
С уважением, ДП
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Использование LOCALE для указания дней недели

Сообщение muskin »

ABBASoft писал(а):Коллеги, имеется ввиду определение с помощью LOCALE() дней недели на русском языке. Затем они будут выводится (например, в статус-строке при выводе даты в формате <день, месяц, число, год>)
на русском. Сейчас выводится, например, так: Thursday, Июль, 26, 2012 в статус-строке.
За помощь - заранее благодарен.
Сейчас выводится, например, так: Thursday, Июль, 26, 2012 в статус-строке. Thursday, Июль, 26, 2012 - это что за формат?
Ты не чего не напутал? То, что преведено выше - это полный бред!!!!!!!!!!!!!
На счет Locale - забудь, в Виндах названия дня недели не используется в региональных настройках (единственное место - это Календарь, где дни недели просто вычисляются), используй ручное определение - den_tek_nedely" = Choose( today()%7+1, '(вс)', '(пн)', '(вт)', '(ср)', '(чт)', '(пт)', '(сб)' )
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
ABBASoft
Активист
Сообщения: 115
Зарегистрирован: 15 Май 2006, 18:08

Re: Использование LOCALE для указания дней недели

Сообщение ABBASoft »

В Cla 8 в Главном окне (Main) в режиме Extensions вставляется (Insert) Display the date and/or time in the window. ВЫбирается формат даты October, 31, 1959 и поле 3 в Status Bar строке.
В Cla 6 дата выдавалась: Июль, 26, 2012, а в Cla 8 выдается еще и день: Thursday, Июль, 26, 2012. Так для выдачи русского месяца применяется оператор LOCALE(), который вставляется так, как я описал выше.
А что делать с наименованием дня? Хочется тоже по-русски.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Использование LOCALE для указания дней недели

Сообщение Дед Пахом »

Ну посмотрите в сгенерённом CLW-файле, что там написано?
С уважением, ДП
ABBASoft
Активист
Сообщения: 115
Зарегистрирован: 15 Май 2006, 18:08

Re: Использование LOCALE для указания дней недели

Сообщение ABBASoft »

В исходном (сгенерированном) коде присутствует только INCLUDE('Ablang_Rus.inc'). По-видимому, информация берется отсюда на стадии генерации кода.
С уважением, ABBASoft. Заранее благодарен за помощь.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Использование LOCALE для указания дней недели

Сообщение Дед Пахом »

Так-таки одна строчка всего? Кто-то же должен сделать что-то вроде AppFrame{prop:StatusText, 3} = ... чтобы в статусной строке появился текст?
С уважением, ДП
ABBASoft
Активист
Сообщения: 115
Зарегистрирован: 15 Май 2006, 18:08

Re: Использование LOCALE для указания дней недели

Сообщение ABBASoft »

Да, действительно, по подсказке Деда Пахома -AppFrame{Prop:StatusText,3} =, большое ему спасибо!) нашел строку:
AppFrame{Prop:StatusText,3} = CLIP(DisplayDayText[(TODAY()%7)+1]) & ', ' & FORMAT(TODAY(),@D4)
AppFrame{PROP:StatusText,4} = FORMAT(CLOCK(),@T4)
А здесь, наверно, надо поменять ручками типа (как подсказал Muskin):
= Choose( today()%7+1, '(вс)', '(пн)', '(вт)', '(ср)', '(чт)', '(пт)', '(сб)' )
Большое спасибо Всем за помощь!!! С уважением, ABBASoft.
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Использование LOCALE для указания дней недели

Сообщение muskin »

Извиняюсь, но вначале не была указана версия Clarion-a.
В установочной директории Clarion-a найди два файла - ABWINDOW.TPW и EXTENS.TPW
Войди в каждый из файлов и по поиску найди, например, Thursday.
Найдешь нижеуказанную строку:

Код: Выделить всё

DisplayDayString STRING('Sunday   Monday   Tuesday  WednesdayThursday Friday   Saturday ')
Будь внимателен с редактированием шаблона, длина - 9 символов.
Если захочешь поэкспериментировать, смотри следующую строку

Код: Выделить всё

DisplayDayText   STRING(9),DIM(7),OVER(DisplayDayString)
А дальше будет все понятно, и ручками не надо ничего делать.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Ответить