- PVSM.RU - https://www.pvsm.ru -

Проект по переводу языка Wolfram Language (Mathematica) на различные языки

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 1

Перевод поста Eila Stiegler "The Wolfram Language Worldwide Translations Project [1]".

Код, приведенный в статье, можно скачать здесь [2], дополнительный код для поста можно скачать здесь [3].
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko [4] за помощь в переводе и подготовке публикации


Довольно много времени прошло с тех пор, как я закончила колледж в Германии. И я до сих пор хорошо помню те длинные бессонные ночи, что проводила за выполнением трудных домашних заданий, исследований, и почти полное отсутствие свободного времени. Но так же я хорошо помню и занятия по программированию. Я старалась приступить к ним как можно позже. Но когда программирование уже вошло в список моих обязательных предметов, у меня уже не было возможности его игнорировать. И так как английский — не мой родной язык, мне тяжело давались принципы программирования, которые были для меня чем-то уж очень абстрактным; я постоянно терялась среди названий различных функций, которые приводились на английском. И пускай мне далось всё это весьма тяжело, я с успехом закончила обучение, и вот теперь, годы спустя, я являюсь частью проекта, который мог бы тогда мне сильно помочь — проекта по переводу Wolfram Language на различные языки.

Проект по переводу Wolfram Language представляет любым неанглоговорящим программистам лёгкий вход в изучение Wolfram Language. Проект служит для того, чтобы иметь возможность работать с Wolfram Language вне зависимости от навыков владения английским языком.

Как обычно обучаются программированию? Судя по моему опыту, студентам дают кусок кода и объясняют для чего он нужен. Таким образом, у них появляется возможность познакомиться со структурой и различными функциями. Чтобы облегчить этот процесс, Wolfram Research добавила функционал, который проставляет к коду на языке Wolfram Language аннотации на предпочтительном для вас языке. Мы постоянно развиваем это направление и стараемся добавить максимально возможное количество языков. На данный момент уже имеется поддержка японского, китайского традиционного и упрощенного, корейского, испанского, русского, украинского, польского, немецкого, французского и португальского.

Также в рамках этого проекта мы добавили перевод меню на традиционный китайский, испанский языки, добавив их к уже реализованным японскому и упрощенному китайскому.

Аннотации к коду

Снова возвращаясь к своему студенчеству: если бы у меня был код демонстрации “Major Multinational Languages [5]”, — пример с сайта Wolfram Demonstrations Project [6] — я смогла бы увидеть этот код, аннотированный на немецком. Аннотации никак не изменяют код и не ограничивают его функциональность. Он по-прежнему вычисляемый и может редактироваться, а аннотации к нему изменяются на лету:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 2

Эксперимента ради, я могла бы вспомнить свои восемь лет занятия русским и попробовать следующее:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 3

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

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 4

Немного о разных длинах строк

Один из первых вопросов, который возник при старте этого проекта, заключался в разных длинах слов на разных языках. Описательные конструкции и имена функций в CamelCase (ВерблюжьемРегистре [7]) на английском добавляют проблем при попытке сохранить разумную длину для переводов.

Чтобы проиллюстрировать эту проблему, давайте возьмём испанский. Функция String [8] была переведена как "cadena de caracteres". Этот перевод получился значительно длиннее, чем оригинал на английском. А теперь примем во внимание то, что это слово часто встречается в названиях различных функций, как пример StringFreeQ [9] и StringReplacePart [10]; можно представить, какой длины получатся переводы.

Давайте сравним русский и японский переводы символа $FrontEnd. [11] Переводы доступны не только в интерактивном режиме, но и программно через WolframLanguageData [12] с опцией «Translations»:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 5

Длины строк для двух переводов отличаются на 66 символов. Возникает вопрос: как наши переводы соотносятся по длине с их английскими оригиналами? Для начала, давайте загрузим все зарезервированные имена в Wolfram Language, а так же их переводы.

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 6

А теперь рассмотрим, как соотносятся переводы с их оригиналами:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 7

Очевидно, что азиатские письменные системы дают значительно более сжатый по длине перевод. С другой стороны, исследуя глубже максимумы и минимумы в разнице между английским и польским, мы увидим следующее (наведите курсор на ListPlot [13] для появления подсказки о сравнении названий на английском и польском):

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 8

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 9

Мы получаем 251 случай соответствий элементов в длину. Вот несколько примеров:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 10

Вот пара с самой большой разницей — аж в 75 символов:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 11

Давайте рассмотрим разницы по длинам на различных языках:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 12

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 13

Учитывая эти расхождения, мы можем найти некоторые интересные моменты о языках и их связи в этом наборе данных.

К примеру, каков top 5 имён, наиболее близких по длине к оригиналу для всех языков? Это Here [14], Byte [15], ColorQ [16], ListQ [17] и Ball [18]:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 14

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 15

В каком языке больше всего пробелов? В корейском:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 16

И в каком языке строки самые длинные? В немецком:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 17

Проиллюстируем это:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 18

Как мы учтём расхождения в длинах переводов в нашем интерфейсе? Вернёмся к коду из примера “Major Multinational Languages” со включенными аннотациями на немецком. В случаях, когда длина аннотации превышает длину оригинала на английском, мы заменяем заголовок на •••. При наведении курсора на аннотацию она разворачивается и выделяется жирным.

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 19

Облака из слов

Используя новую функцию Wolfram Language WordCloud [19], мы можем получить графическое представление переводов, в котором размеру слов соответствует частота их использования. Взяв переводы 120 наиболее популярных имён, а так же задействовав недавно добавленную функцию GeoGraphics [20], мы можем построить облака из слов по контурам границ этих стран. Вот, к примеру, Германия и Португалия:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 20

Можем пойти дальше и изобразить облака из слов на фигуре, которая описывает границы этой страны. И получается весьма симпатично; вот, к примеру, Испания:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 21

Полные переводы

Поигравшись с переводами и рассмотрев их под разными углами, логично было бы продолжить это и попытаться представить переводы не просто в виде аннотаций, а вместо оригинального кода Wolfram Language на английском. Конечно, имея под рукой функцию TranslateCodeCompletely, осуществить подобное не составляет труда. Передав функции фрагмент кода и требуемый язык в качестве аргумента, наша новая функция возвращает полный перевод. И вот этот код в полном виде:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 22

Вот код, который выдаёт гистограмму с различными длинами имён, приведённую выше — теперь на корейском. Определённые пользователям имена находятся там же, где и были, а системные имена полностью переводятся и выделяются серым. В прилагаемом ниже CDF-файле можно наводить курсор мыши на переведённые функции и наблюдать их исходные названия.

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 23

Забавный побочный эффект для тех, кто уже хорошо знаком с Wolfram Language: если вы уже достаточно ориентируетесь в именах функций языка, то с помощью нового функционала можете улучшить свои знания в каком-то новом естественном языке.

Надеюсь, этот функционал поможет большому количеству новых пользователей освоиться в мире Wolfram Language. В дальнейшем мы не собирается останавливаться на одном лишь расширении количества языков. Мы планируем добавить переводы и для других разделов Wolfram Language — меню, горячие клавиши и прочее. Будем рады услышать о желаемых для перевода языках, которые бы вы хотели увидеть в Wolfram Language, а так же будем рады услышать ваши пожелания и отзывы.

Автор: Wolfram Research

Источник [21]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/interfejsy/107729

Ссылки в тексте:

[1] The Wolfram Language Worldwide Translations Project: http://blog.wolfram.com/2015/12/18/the-wolfram-language-worldwide-translations-project/

[2] здесь: http://blog.wolfram.com/data/uploads/2015/12/WL-Worldwide-Translations-Project-Post.cdf

[3] здесь: http://blog.wolfram.com/data/uploads/2015/12/Additional-code.cdf

[4] KirillGuzenko: http://habrahabr.ru/users/kirillguzenko/

[5] Major Multinational Languages: http://demonstrations.wolfram.com/MajorMultinationalLanguages/

[6] Wolfram Demonstrations Project: http://demonstrations.wolfram.com/

[7] ВерблюжьемРегистре: https://ru.wikipedia.org/wiki/CamelCase

[8] String: http://reference.wolfram.com/language/ref/String.html

[9] StringFreeQ: http://reference.wolfram.com/language/ref/StringFreeQ.html

[10] StringReplacePart: http://reference.wolfram.com/language/ref/StringReplacePart.html

[11] $FrontEnd.: http://reference.wolfram.com/language/ref/$FrontEnd.html

[12] WolframLanguageData: http://reference.wolfram.com/language/ref/WolframLanguageData.html

[13] ListPlot: http://reference.wolfram.com/language/ref/ListPlot.html

[14] Here: http://reference.wolfram.com/language/ref/Here.html

[15] Byte: http://reference.wolfram.com/language/ref/Byte.html

[16] ColorQ: http://reference.wolfram.com/language/ref/ColorQ.html

[17] ListQ: http://reference.wolfram.com/language/ref/ListQ.html

[18] Ball: http://reference.wolfram.com/language/ref/Ball.html

[19] WordCloud: http://reference.wolfram.com/language/ref/WordCloud.html

[20] GeoGraphics: http://reference.wolfram.com/language/ref/GeoGraphics.html

[21] Источник: http://habrahabr.ru/post/274281/