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