Pull to refresh
  • by relevance
  • by date
  • by rating

Идея: падежи в pygettext

Lumber room
В русском языке, для получения приемлемого перевода, нужно при подстановке склонять существительные и прилагательные. Gettext сам по-себе такого не умеет (кроме числительных), но, похоже, в python это ограничение можно обойти.

Для этого в строках перевода нужно добавить указатель падежа, например:
«Удалить %s[в]» — «в» в квадратных скобках указывает на винительный падеж.

Ну и в самих подставляемых словах нужно указать окончания для всех падежей, например:
verbose_name = u«стать[я, и, е, ю, ёй, е]»

Далее необходимо модифицировать функции gettext и ngettext, так чтобы они вместо объекта unicode возвращали специальный объект, в котором метод __mod__ подставляет значения в нужном падеже.

С последним у меня пока возникли вопросы, так как я хочу применить это в Django, и пока не знаю, в какое место (django.utils.translation?) это вставить.

Заранее благодарю за комментарии. Ещё лучше — если этот велосипед уже где-то существует.
Total votes 4: ↑3 and ↓1 +2
Views 523
Comments 2

Вопрос: gettext и ключи на кириллице

Lumber room
По следам темы:
http://habrahabr.ru/blogs/zend_framework/64115/

Автор очень удачно использует ключи на кириллице, например:
_('Главная страница'), _('Добавить пользователя')

Очень бы хотелось узнать: какими методами происходит сканирование исходных файлов и распознавание ключей на кириллице.
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 577
Comments 5

Международные ягнята

Python *
Несмотря на то, что мировая культура в лице Википедии и Пола Маккартни уверяет нас, что Mary had a little lamb, на территории одной восьмой части суши продолжают считать, что на самом деле «У Мэри был ягнёнок». Кто же на самом деле был у Мэри, и как записать это на разных языках мира? Попробуем выяснить это (а также понять, что думают по этому поводу японцы) вместе с нашим любимым Python-ом и встроенным в него модулем поддержки многоязычных переводов gettext.

Читать дальше →
Total votes 44: ↑38 and ↓6 +32
Views 14K
Comments 30

PHPText — простая локализация

PHP *
Для локализации программ существует много решений и конечно же gettext. Однако объяснить рядовому пользователю windows, как при помощи его перевести программу, составляет большую трудность.
Поэтому я решил написать небольшое приложение для простой локализации.

Подробности
Total votes 78: ↑60 and ↓18 +42
Views 3.4K
Comments 32

Локализация интерфейса сайта с использованием PHP, Smarty и Gettext

PHP *
Все началось с того, что к существующему сайту понадобилось добавить русскую локализацию. После того как я изучал в течение нескольких дней эту тему и наступил множественные грабли, я в конце-концов получил рабочий сайт. А теперь хочу поделиться рецептом многоязычной локализации.
Проверено и отработано на PHP 5.3.3 (Linux)/PHP 5.3.1 (Windows) + Smarty 3.0.7. В данном случае для существующего сайта на английском создавалась русскоязычная версия.
Я не провожу ликбеза на тему «как это работает» (он есть на phpclub), но предлагаю простую инструкцию и описание возможных проблем, с которыми я сталкивался во время реализации.
Погрузиться в дебри локализации
Total votes 42: ↑31 and ↓11 +20
Views 25K
Comments 39

Django своими руками часть 2: Интернационализация

Python *
Часть 1.

Введение.


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

Все переводы можно разделить на две части:
a) Те что непосредственно в файлах с расширением .py — с ними все просто.
b) И те что в шаблонах — к ним придется написать небольшой велосипед :).
Ну и далее нужно автоматизировать процесс управления переводами.
Итак добро пожаловать под кат.

Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Views 3.7K
Comments 8

Локализация приложений Node.js. Часть 1

Нордавинд corporate blog JavaScript *Node.JS *
Translation
Tutorial
От переводчика: Это девятая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona.





image

Знаете ли вы, что продукты и сервисы Mozilla локализованы для 90 языков? Локализация включает в себя:

  • текст, переведённый на региональные вариации и диалекты языков;
  • рендеринг страниц с учётом написания справа налево;
  • пуленепробиваемый дизайн, способный вместить тексты любой длины;
  • заголовки, метки и текст на кнопках, подобранные для локальных аудиторий.

В этой серии из трёх статей, посвящённых локализации, я расскажу о технических аспектах создания многоязычного приложения Node.js.

Мы будем использовать общепринятые термины «интернационализация» (i18n) и «локализация» (l10n). Интернационализация — это набор технических приёмов, делающих возможной последующую локализацию, то есть собственно перевод и адаптацию для конкретного языка.

Mozilla Persona — веб-сервис на Node.js, локализованный для множества локалей. У нашей команды были весьма специфические запросы, и поэтому мы не стали использовать существующие библиотеки для локализации.
Читать дальше →
Total votes 36: ↑28 and ↓8 +20
Views 13K
Comments 1

Локализация приложений Node.js. Часть 2: инструментарий и процесс

Нордавинд corporate blog JavaScript *Node.JS *
Translation
Tutorial
От переводчика: Это деcятая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona.





В прошлой статье о локализации приложений Node.js мы узнали, как использовать модуль i18n-abide в нашем коде. Наша работа, как программистов, фактически закончилась на том, что мы обернули строки в шаблонах и коде приложения в вызовы gettext(). Но работа по локализации и переводу приложения только начинается.

Инструментарий


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

Проекту Mozilla уже почти 15 лет, и наша команда локализаторов и переводчиков одна из самых больших (и клёвых) в мире Open Source. Поэтому у нас широко используются давно привычные, можно даже сказать старинные и причудливые инструменты.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Views 6.2K
Comments 3

Локализация приложений Node.js. Часть 3: локализация в действии

Нордавинд corporate blog JavaScript *Node.JS *
Translation
Tutorial
От переводчика: Это одиннадцатая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona.





Использование строк


Итак, сначала мы подключили к нашему приложению модуль i18n-abide и обернули строки в вызовы gettext. Затем наша команда переводчиков перевела эти строки и у нас есть готовый перевод для каждого языка.

Теперь давайте заставим наше приложение Node.js работать с локализованными строками. Переводы в виде po-файлов лежат в файловой системе в таком виде:

locale
  en
    LC_MESSAGES
      messages.po
  de
    LC_MESSAGES
      messages.po
  es
    LC_MESSAGES
      messages.po

Во время выполнения нашего приложения нужно извлекать переведённые строки из этих файлов. Есть два способа сделать это:

  • на стороне сервера с помощью всё той же функции gettext из модуля i18n-abide;
  • на стороне клиента с помощью скрипта gettext.js, который также входит в состав i18n-abide.

Оба этих метода требуют, чтобы строки были в формате JSON. При переводе на стороне сервера они загружаются при старте приложения, а клиент загружает их с помощью HTTP-запросов (или можно включить их в минифицированный файл JavaScript в процессе сборки).

Так как наша система перевода совместима с GNU Gettext, есть ещё и третий путь — модуль node-gettext. Он довольно эффективен при переводе на стороне сервера.

Дальше мы будем рассматривать первый способ, так как это наиболее привычный способ использования i18n-abide.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 5.8K
Comments 2

po.js — супер простая утилита для i18n

JavaScript *
Когда я разрабатываю системы на Zend Framework, то всегда использую gettext и Zend_Translate. Всё лаконично просто и обычно не возникает никаких проблем с переводом даже больших проектов. Для каждого языка генерируются свои файлы .po и .mo, переводы пляшут от дефолтного языка, ключи тоже на этом же языке. Переводчикам удобно передать эти файлы, которые они могут открыть в POEdit и удобно всё перевести. Так вот, на стороне сервера всё очень просто, но часто нужно переводить какие-то сообщения «на лету» в JavaScript, а он не понимает ваши .mo файлы. Но хотелось бы пользоваться именно ими, чтобы не разделять перевод одного проекта на 2 части (backend, frontend). И я начал искать. В Интернете существует достаточно большое количество таких решений, но все они почему-то обрастают зависимостями:

code.google.com/p/gettext-js (Prototype)
angular-gettext.rocketeer.be (Angular)
github.com/jakob-stoeck/jquery-gettext (jQuery)

А хотелось иметь именно «pure-js» решение. Ок, напишем своё.
Читать дальше →
Total votes 27: ↑22 and ↓5 +17
Views 14K
Comments 18

DxGetText — GNU Gettext for Delphi and C++ Builder

C++ *Delphi *
Tutorial
Посчастливилось мне как-то работать под руководством СТО, который по совместительству соавтор одного интересного проекта — GNU Gettext for Delphi and C++ Builder. Заценил я его только в Delphi, но этого достаточно чтоб понять принцип работы и разобрать какими фичами он обладает.
Вкратце это библиотека, позволяющая внедрять качественную локализацию в продукт общепринятым способом, работает так:
  1. пишем код, почти как обычно;
  2. запускаем приложение, сканирующее исходники на предмет текста, который нужно перевести;
  3. генерим РО файлы;
  4. переводим их в любом удобном редакторе;
  5. компилим РО файлы в МО файлы;
  6. на выбор либо внедряем перевод прямо в ЕХЕ либо кладём МО файлы рядом;
  7. наслаждаемся результатом — язык приложения можно менять даже без перезапуска.

Чем этот способ крут:
  • минимум изменений в коде приложения;
  • никаких DLL и сторонних компонентов, всё OpenSource;
  • РО файлы — достаточно распространенный инструмент перевода, что значит перевод можно даже отдать на аутсорс, и переводчик знает что с этим делать;
  • перевод всего — формы, фреймы, месседжбоксы, и всё что угодно;
  • корректный перевод слов в множественном числе в любом языке;
  • полная поддержка Unicode.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Views 11K
Comments 10

.NET — локализация без боли. (N)gettext + poedit

.NET *C# *Language localisation *
Tutorial


Создавая новый проект, мне приходилось использовать либо *.resx для WinForms, либо I2Localization для Unity, либо другие решения для локализации приложений. Все эти решения похожи тем, что приходится придумывать ключ-локализации, вставлять его в код и в словарь. Поначалу все хорошо, но со временем этот процесс начинает раздражать. Вместе с тем, смотря на ключ в коде не всегда понятно о чем речь.

О ситуации когда нужно добавить локализацию в большой проект где её вообще не было, я даже говорить не буду как это сложно.

Не знаю почему, но оказывается существует уже давно такое готовое решение как gnu/gettext. Расспрашивая своих знакомых и коллег (тех кто работает с .NET), большинство даже и не слышал о таком. Поэтому решил поделиться с этим удобным инструментом.

Принцип прост. Вы пишите код со строками на английском языке, запускаете утилиту, которая сканирует исходники и предоставляет вам возможность перевода. Никаких ключей придумывать не надо. Текст на английском и есть ключ.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 8.2K
Comments 28

Различия Fluent и gettext

Open source *Language localisation *
Translation

Продолжая дискуссию о преимуществах Fluent перед привычным gettext, публикую официальную позицию создателей Fluent в переводе.

Gettext — это система локализации, глубоко укоренившаяся в проект GNU и сопутствующие ему архитектурные решения. Fluent Project рассматривает gettext как хороший пример полноценной низкоуровневой платформонезависимой экосистемы библиотек и инструментов для управления полным циклом выпуска продукта с файлами локализации в удобочитаемом формате. В то же время парадигма Fluent приводит нас к другим архитектурным решениям в важных локализационных аспектах, которые, в свою очередь, приводят к совершенно разным API и жизненным циклам.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 3.4K
Comments 32

Как Youtube и Instagram: интернационализация и локализация приложения на Python

SimbirSoft corporate blog Python *Language localisation *
Язык Python лежит в основе всемирно известных приложений, таких как Youtube, Instagram и Pinterest. Для продвижения на мировом рынке приложению необходима локализация, то есть адаптация к особенностям той или иной страны, и интернационализация – перевод контента. В статье мы поделимся опытом, как ускорить автоматизацию перевода и решить некоторые типичные проблемы в этой области.

Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views 3.8K
Comments 3

Почему интернационализация и локализация имеют значение

OTUS corporate blog Python *
Translation

Хабр, отличного всем времени суток! Скоро в OTUS стартует курс «Python Web-Developer»: мы приглашаем на бесплатный Demo-урок «Паттерны Page Controller и Front Controller: реализация в Django» и публикуем перевод статьи Nicolle Cysneiros — Full Stack Developer (Labcodes).

Согласно всегда правдивой информации на Википедии, в мире насчитывается около 360 миллионов носителей английского языка. Мы, как разработчики, настолько привыкли писать код и документацию на английском языке, что не осознаем, что это число – это всего. 4,67% населения всего мира. Единый язык общения между разработчиками – это, конечно, хорошо, но это не значит, что пользователь должен чувствовать дискомфорт при использовании вашего продукта.

Прочитать
Total votes 9: ↑9 and ↓0 +9
Views 2K
Comments 1

Интернационализация и локализация приложения на Kotlin/Native

Programming **nix *Language localisation *Kotlin *Learning languages
Sandbox

こんにちは, или добрый день по-японски.

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

Поэтому далее мы пошагово рассмотрим процесс адаптации консольного приложения для Linux на Kotlin/Native к русской и английской локали.

Поможет нам в этом старый-добрый GNU gettext.

В итоге убедимся, что это совсем не страшно.

Заодно посмотрим интеграцию с библиотеками на C, которая значительно расширяет возможности Kotlin/Native.

Что напишем: переводчик количественных числительных на японский язык.

Что ожидается от читателя: знание языков программирования Kotlin, C, базовый уровень знакомства с ОС Linux (в частности Bash).

Что понадобится в процессе: любой дистрибутив Linux, любая версия IntelliJ IDEA, установленный пакет gettext-devel или аналогичный.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Views 1.5K
Comments 0
1