Поддержка иврита в приложении C ncurses

У нас есть приложение на основе C Nurses (работает на большинстве разновидностей Unix, но мы предпочитаем RHEL). У нас есть поддержка Unicode, но теперь мы должны предоставить версию приложения на иврите. Кто-нибудь знает процесс, который мы могли бы пройти, чтобы преобразовать программу? В основном он получает и хранит данные от Oracle, который может поддерживать иврит, так что проблем быть не должно. На самом деле проблема только в отображении текста.


person Greg Reynolds    schedule 01.09.2009    source источник
comment
Если у вас есть данные и ваше приложение поддерживает Unicode, в чем проблема? Просто распечатайте его.   -  person    schedule 01.09.2009
comment
У меня возникли трудности с определением того, будет ли ncurses отображать данные справа налево (и любой пользовательский ввод таким же образом), или же он будет печатать глифы иврита, но в порядке слева направо.   -  person Greg Reynolds    schedule 01.09.2009
comment
Нет, не будет. Вы должны проверить, будут ли их терминалы (эмуляторы) выполнять эту работу, или включить их самостоятельно.   -  person    schedule 01.09.2009
comment
Хорошо - я не знаю, какие терминалы они будут использовать, поэтому мне, вероятно, нужно знать, как включить его самому - вы знаете, как это сделать?   -  person Greg Reynolds    schedule 01.09.2009


Ответы (1)


Важно знать, какой терминал они используют, потому что это определяет, как вы должны писать код. Некоторые терминалы поддерживают BiDi (т.е. двунаправленный текст). Это означает, что они автоматически переворачивают текст на иврите/арабском языке задом наперед.

У него есть свои проблемы, вы можете проверить, как будет выглядеть ваше приложение, используя mlterm. По сути, он переворачивает строки, содержащие текст на иврите, сохраняя при этом то, что интерпретируется как английские символы LTR. Еврейский символ, напечатанный до 10,70, появится в 10,10. Вы можете использовать Unicode LTR RTL, чтобы попытаться указать направление для вещей, которые нарушают ваше форматирование, но, по крайней мере, на mlterm, пока они работают, они печатают мусорные символы.

Однако, если они используют обычные терминалы с поддержкой юникода, вам следует самостоятельно сбрасывать символы. Тогда, конечно, если он запускается на двунаправленных терминалах, текст снова будет перевернутым, и формат будет потерян.

person Community    schedule 02.09.2009
comment
Спасибо - я думаю, мы направим нашего клиента к терминалам, которые делают это автоматически. Кажется, на это способна и шпатлевка. - person Greg Reynolds; 03.09.2009