Pull to refresh

Comments 32

Приложение на C#, а словари на php. Мсье знает толк в извращениях.
Сбора сообщений? Всё быстро.
Как показала практика дефолтный poEdit легко осваивается переводчиками.
Перевести приложение, использующее gettext, можно при помощи Pootle, а также массой прочих редакторов для десктопа и веба. Совершенно непонятно, зачем очередной велосипед.

Опыт переизобретений велосипедов показывает, что они получаются намного менее удобными, чем gettext и утилиты для работы с ним. Был вполне конкретный опыт, когда в большой компании я предлагал gettext, но меня не послушали и написали велосипед с квадратными колесами.
Да, переводчиков можно научить юзать gettext, а вот мои пользователей навряд ли :)
Простое приложение с двумя кнопками — это то что им нужно.
UFO just landed and posted this here
UFO just landed and posted this here
Разве gettext может так делать?.. Мне казалось только единственное/множественное…
UFO just landed and posted this here
Надо внимательнее глянуть… Почему-то когда программировал под cakePHP, не смог там найти функцию реализующую подобный функционал, может не очень внимателен был…
Редактировать то можно, а вот как Вы будете создавать *.mo файлы на сервере пользователя?

Пример — CMS (форум, блог, и тд. и тп.) в которой пользователи могут сами изменять перевод, в этом случае PHP файлы будут удобнее и проще, чем объяснять простым пользователям, что делать с *.po файлами.
из PHP можно генерить mo файлы. Либо напрямую через пхп (формат открытый, есть даже реализации), либо с помощью сторонних средств (msgfmt, например).
> из PHP можно генерить mo файлы

А рабочим примером не поделитесь? Хотелось бы посмотреть на реализацию редактирования через админку простым пользователем — просто когда у меня возникает вопрос «что же использовать?» я вспоминаю про проблемы *.mo файлов

> формат открытый, есть даже реализации
Пока нашел только File_Gettext, последний релиз 2007 год…

И, кроме этого, в мануале можно найти:
ru2.php.net/manual/en/gettext.requirements.php:

The GNU gettext library works on a per-process, not per-thread basis. This means that in a multi-user setting such as the Apache web server it will only work with a prefork MPM (i.e. one process per user). Worker and other threaded MPMs will not work.

In addition, many users control GNU gettext by setting system environment variables such as LANG. This is not a good solution for a web server environment due to an obvious race condition.

ru2.php.net/manual/en/function.gettext.php#58310
Gettext translations are cached. If you change *.mo files your page may not be translated as expected.

Учитывая это, свой велосипед уже не кажется таким плохим. Числительные при желании тоже можно реализовать наподобие того, как это сделано в gettext-е.

ни к чему не призываю, это просто мои соображения
Я использовал File_Gettext для работы с po файлами — работает нормально. Правда множественное число я не проверял как работает. С генерацией mo файлов были какие-то косяки (последний перевод не всегда работал), не стал разбираться генерил с помощью вызова из шела msgfmt.

На счет встроенного gettext, пока проблем нет, но проект еще в тесте, поэтому говорить рано. В крайнем случае есть php реализация в Zend Framework (Zend_Translate она поддерживает кучу форматов, вся реализация на php), которая должна снять указанные ограничения, правда, она будет, конечно, медленнее и прожорливее (нативная реализация оочень быстро работает даже на больших словарях).
UFO just landed and posted this here
Кстати, формат po файлов gettext'а не слоднее чем php массив. Более того я почти уверен, что для большинства популярных языков есть написанные библиотеки для чтения/генерации po и mo файлов.
По меньшей мере в cakephp это дело реализовано.
Если говорить про php, я юзал pear класс, правда с mo файлами проблемы какие-то были.
вам нравится только потому что вы любите c#? а если бы в топике ХеллоВолрд на нём написан был бы?
ничего не имею против решения или автора, но аргументация, почему нравится — некорректная.
Аргументация чего? Вы цензор интернета? Вы определяете когда чего кому должно нравиться и по какой причине? Для меня то что это написано на c# является причиной того, почему мне это нравиться. Корректно это или нет, к сожалению, но это факт и ничего поделать не могу.
Несмотря общую ненужность программы лично мне (и на то, что на моём последнем дотнете она не запустилась), программа нравится святой простотой интерфейса.
«Вы еще не достигли конца», «Попробуйте еще раз», «Предел превышен», «Конец», «Поздравляем! Вы вошли в десятку!», «Поздравляем! Вы самый лучший!»

зы: Можно узнать что за проект?
Что-то вроде браузерной игры на основе чата :)
> Написано оно на C# и умеет при помощи Google Translate переводить сообщения.

Ага, я на прошлой неделе как раз получил обратно файлы локализации для своей программы. Подключил, пробежался по меню… В традиционном пункте «Help->About...» красовалось: «Помощь->Приблизительно...»

А вообще спасибо, я почерпнул пару идей.
Сейчас кто-то подсуетится и быстренько зарегает elfchat.ru
наши клиенты в упор отказываются работать с gettext, они хотят менять текст без участия людей фирмы, после сдачи проекта. Написали контент на MYSQL+memcached. Администратор\Менеджер сам решает что хранить в кеше, а что нет (к примеру большие странички), кроме того клиенты любят использовать wysiwyg редакторы, с текущим CSS. Ну и еще сделали так: переводишь сайт в development mode и пользователи определенной группы видят кнопочку на странице, по нажатию на которую можно редактировать контент, который видишь. По сути все берется из кеша, так что работает довольно быстро.
Реализовано на кейке, используется в коде просто: $t10n->t('links', 'Hide') где первое значени — группа, второе токен. Можно и без группы, но с группами удобно, могут быть одинаковые токены в разных группах.
Еще мы переделали стандартную i18n чтобы отображать данные модели дефолтного языка, если данных модели текущего языка отсутствуют.
Sign up to leave a comment.

Articles