Программирование на языке Ruby

На нашем литературном портале можно бесплатно читать книгу Программирование на языке Ruby, Фултон Хэл-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Программирование на языке Ruby
Название: Программирование на языке Ruby
Дата добавления: 16 январь 2020
Количество просмотров: 525
Читать онлайн

Программирование на языке Ruby читать книгу онлайн

Программирование на языке Ruby - читать бесплатно онлайн , автор Фултон Хэл
Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии. Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 55 56 57 58 59 60 61 62 63 ... 266 ВПЕРЕД
Перейти на страницу:

Предположим, что этот код сохранен в файле

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
), кодировка UTF-8».

Для начала скопируем файл

myapp.pot
в
myapp.ро
. При наличии набора GNU-утилит
gettext
лучше воспользоваться командой
msginit
, а не просто
cp
. Эта утилита учитывает переменные окружения и правильно устанавливает некоторые переменные в заголовке. В UNIX она вызывается следующим образом:

LANG=ja_JP.UTF-8 msginit -i myapp.pot -o myapp.po

Затем отредактируйте файл

myapp.ро
, как показано в листинге 4.3. Редактировать необходимо в той кодировке, которая указана в строке
Content-Type
.

Листинг 4.3. Файл myapp.ро после редактирования

# Пример приложения.

# Copyright (С) 2006 Foo Bar

# Файл распространяется по лицензии XXX.

#

# Ваше имя <[email protected]>, 2006. (Вся информация о переводчике)

#                                    (Удалите строку 'fuzzy')

msgid ""

1 ... 55 56 57 58 59 60 61 62 63 ... 266 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название