Рубрика «translation» - 3

Всем привет!

Мы занимаемся локализацией программного обеспечения и игр на 30+ языков и часто видим, как разработчики сталкиваются с одной и той же проблемой: в разных языках для передачи одной и той же информации требуется разное количество знаков. В итоге, в интерфейсе пользователя некоторые надписи “не влазят” и их приходится сокращать, либо изменять размеры контролов.

Известно, что, к примеру, немецкий язык “длиннее” английского, а китайский — “короче”. Однако вряд ли у кого-то получится сходу точно сказать на сколько один язык более “знакоёмкий”, чем другой.

Нам стало интересно, мы собрали статистику и получили вот такую табличку с коэффициентами для примерно двадцати языковых пар — под катом.

Померяемся языками, чей длиннее?
Читать полностью »

Доброго времени суток!

Хочу поделиться своей наработкой для перевода страниц сайта с помощью простейшего jQuery плагина и такой приятной новой плюшки html5, как data-* атрибуты.

Итак цель: возможность легко и быстро обеспечить поддержку нескольких языков для разрабатываемого веб приложения.

Теперь немного кода. Предположим у нас имеется вот такая вот нехитрая html разметка:

<h1 data-translate-key="HEADING-ONE">Heading 1</h1>
        
<p data-translate-key="SOME-TEXT">Some text in tag P</p>
        
<p data-translate-key="ANOTHER-TEXT">another text</p>

Читать полностью »

В этой главе сказа про дружбу C++ и Python будет на удивление мало использования Boost.Python. Передача исключений туда и обратно является по сути слабым местом данной библиотеки. Будем обходиться родным API языка Python, а где это возможно использовать Boost.Python.
Тем не менее Boost.Python создаёт окружение, в котором исключения из C++ попадают в Python в виде стандартного RuntimeError, а обратно из Python генерируется исключение C++ типа error_already_set, что означает «тебе что-то прилетело, сходи сам почитай что там». И вот здесь нам как раз будет не лишним использовать C-API языка Python, чтобы вычитать необходимую информацию об исключении и преобразовать в соответствующий класс сообразно логике приложения.
К чему такие сложности? — Дело в том, что в Python, в отличие от C++, кроме текста исключения и его типа приходит ещё и traceback — стек до места возникновения исключения. Давайте немного расширим стандартный std::exception дополнительным параметром для этого stacktrace, а заодно напишем конвертер исключений туда и обратно из классов C++ в классы исключений Python.
Читать полностью »

Делаем русский MSDN еще лучше!
Любой программист создающий решения на платформе Microsoft пользуется сайтом MSDN. В этой библиотеке находятся самые актуальные сведения о продуктах Microsoft и пути решения самых разнообразных задач. Для того чтобы сделать эту информацию еще доступнее, MSDN переводится на многие языки, в том числе и русский. Часть этого перевода осуществляется профессиональными переводчиками, а часть автоматически, с помощью машинной трансляции. Современные алгоритмы позволяют переводить специализированные тексты с очень высоким качеством, при этом очень точно соблюдая терминологическую базу. Но все же порой возникают досадные недоразумения даже в статьях переведенных вручную, которые «режут глаз» и которые хотелось бы поправить. С некоторых пор это можно легко осуществить с помощью «MSDN Translation WiKi».
Читать полностью »

GNU make — широко известная утилита для автоматической сборки проектов. В мире UNIX она является стандартом де-факто для этой задачи. Являясь не такой популярной среди Windows-разработчиков, тем не менее, привела к появлению таких аналогов, как nmake от Microsoft.

Однако, несмотря на свою популярность, make — во многом ущербный инструмент. Его надёжность вызывает сомнения; производительность низка, особенно для больших проектов; сам же язык файлов makefile выглядит заумно и при этом в нём отсутствуют многие базовые элементы, которые изначально присутствуют во многих других языках программирования.

Конечно, make — не единственнаяЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js