2014-07-07 3 views
0

Мы используем креветку для создания PDF-файлов, и иногда мы получаем контент на иностранных языках, таких как иврит, которые работают справа налево. Я могу указать направление текста в Prawn, но у меня нет никакого способа узнать, когда этот язык требует. Можно ли определить, какой языковой текст написан с использованием Ruby, чтобы принять соответствующее решение о том, какое направление использовать?Обнаружение языкового сценария текста с помощью Ruby

ответ

1

Используя технику в этом answer, я был в состоянии проверить легко для иврит и арабский, по крайней мере (требуется рубин 1.9+):

if unknown_text.match(/\p{Hebrew}|\p{Arabic}/) 
    text_direction = :rtl 
end 

Другим способом было бы проверить диапазоны Unicode полукокса текста в речь, как описано here.

+0

Это '\ p {... } 'трюк довольно умный. Я бы использовал' match' в предпочтении '= ~', так как этот оператор является причудливым удержанием от Perl такого рода мух в лице хорошей читаемости Ruby. Также тестирование того, что что-то не 'nil?' является избыточным. Просто проверьте, определено ли это: 'if (text.match (...))' достаточно. – tadman

+0

@tadman да очистил это, спасибо – Yarin

1

Я нашел драгоценный камень, который может делать то, что вы ищете. У меня нет опыта использования его самого, так что вам, возможно, придется заглянуть в ридй, чтобы увидеть, как установить его или использовать его в коде

https://github.com/peterc/whatlanguage/tree/master

+0

Thanks - К сожалению, этот проект по-прежнему имеет способ пойти (см. Https://github.com/peterc/whatlanguage/issues/27). Однако разработчик реагирует и улучшает планирование, поэтому стоит посмотреть. Но прямо сейчас не решение ... – Yarin

+0

Gotcha, извините :(У меня это было на моем радаре, но у меня не было причин использовать его или попробовать, поэтому не было уверенности, насколько хорошо это сработало. – Mayshar

Смежные вопросы