Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Предположим, что этот код сохранен в файле
myapp/person.rbbindtextdomain"myapp"PersonВ методе
showgettext_Первое обращение просто выводит локализованное сообщение, соответствующее строке
"Information"Отметим также, что параметры отделены от текста сообщения, поэтому при необходимости могут подставляться в другом порядке. Ведь иногда при переводе на другой язык приходится переставлять слова.
Тот же метод можно вызвать и короче:
puts _("Name: %s, Age: %d") % [@name, @age]Однако мы рекомендуем более длинную запись. Она понятнее и дает больше информации переводчику.
Метод
n_@children_numPlural-FormsОтметим, что сообщения по умолчанию обязаны быть англоязычными (даже если родной язык программиста не английский). Нравится вам это или нет, но английский ближе всего к универсальному языку с точки зрения большинства переводчиков.
Я сказал, что нам пригодится программа
rakeRakefilemyapprequire 'gettext/utils'desc "Update pot/po files."task :updatepo do GetText.update_pofiles("myapp", ["person.rb"], "myapp 1.0.0")enddesc "Create mo-files"task :makemo do GetText.create_mofilesendЗдесь мы воспользовались библиотекой
gettext/utilsupdate_pofilesmyapp/ро/myapp.potperson.rbmyapp/po/myapp.potmyapp/po/#{lang}/myapp.роGetText.update_pofiles("myapp",Dir.glob("{lib,bin}/**/*.{rb,rhtml}"), "myapp 1.0.0")Вызов метода
GetText.create_mofilesdata/locale/Итак, выполнив команду
rake updatepomyapp/роmyapp.potТеперь отредактируем заголовок файла
po/myapp.pot# Пример приложения. (Осмысленное название)# Copyright (С) 2006 Foo Bar (Автор приложения)# Файл распространяется по лицензии XXX. (Лицензия)## FIRST AUTHOR <[email protected]>, YEAR. (Информация о переводчике)# #, fuzzymsgid ""msgstr """Project-Id-Version: myapp 1.0.0n" (ID и версия проекта)#...Что такое маркер
fuzzyФайл
myapp.potПредположим, что вы переводите на японский язык. На машине установлена локаль
ja_jp.UTF-8jaJPДля начала скопируем файл
myapp.potmyapp.роgettextmsginitcpLANG=ja_JP.UTF-8 msginit -i myapp.pot -o myapp.poЗатем отредактируйте файл
myapp.роContent-Type# Пример приложения.# Copyright (С) 2006 Foo Bar# Файл распространяется по лицензии XXX.## Ваше имя <[email protected]>, 2006. (Вся информация о переводчике)# (Удалите строку 'fuzzy')msgid ""
