Пишу, по большей части, про историю, свою жизнь и немного про программирование.

JavaScript и иврит

Выше прекрасный способ сломать мозг стыком трёх языков — английского, иврита и ДжаваСкрипта.

Как многим известно, в семитских языках текст записывается справа налево. Когда я лет 20 назад участвовал в разработке сайтов для некой арабской страны, это был тот ещё вызов моему внутреннему набору аксиом. Прокрутка слева, выделение текста в другую сторону, клавиша Backspace стирающая в противоположную сторону от стрелки, которая на ней нарисована, и прочие прелести.

Тогда кажется только Эксплорер умел поддерживать такое и переключался он атрибутом dir целиком, всем окном. Сейчас у нас есть Юникод и специальные коды смены направления текста. В одной строке можно сколько угодно его менять.

В ДжаваСкрипте выше именно это и сделано — английское const написано в привычном нам направлении, а дальше направление текста изменено и буквам иврита значения присваиваются справа налево. Выглядит психоделически, конечно.

Дополнение: в комментариях меня поправили. Оказывается коды смены направления тут не нужны — программы автоматически меняют направление, основываясь на том символы какого языка используются, просто в этот момент захватываются ещё и небуквенные символы — пунктуация, цифры и так далее.

3 комментария
GreLI 2018

Нет, коды смены направления текста — это специальные контрольные символы, которые указывают направление текста, например, для знаков пунктуации. А так, браузер применяет направление письма автоматически на основе того, какие используются символы, и когда встречаются символы из восточных алфавитов, с направлением письма справа-налево, автоматически применяет это направление. Но это направление захватывает и пунктуацию, поэтому выходит такое отображение, как на картинке. Это чисто визуальное отображение, с точки зрения синтаксиса языка всё соответствует правилам и число на самом деле записано после знака равно. Просто это «после» написано слева из-за другого направления текста.

Евгений Степанищев 2018

Спасибо за пояснение, не знал о таких подробностях. С семитскими языками все эти 20 лет больше не сталкивался.

Alexander 2018

Погуглил — и на Java похожие фокусы возможны :)