Глава 4. Интернационализация в Ruby
Глава 4. Интернационализация в Ruby
Посему дано ему имя: Вавилон, ибо там смешал Господь язык всей земли, и оттуда рассеял их Господь по всей земле.
Бытие, 11:9
Мы уже говорили, что тип символа, наверное, самый важный из всех. Но что такое символьные данные? Какие символы? Из какого алфавита? Какой язык? Какие культурные особенности?
В прошлом в вычислительной технике и информатике применялся исключительно английский язык. Традиция восходит, вероятно, еще к Чарльзу Беббиджу. Это не так уж и плохо, ведь надо же с чего-то начинать, а алфавит из 26 букв без диакритических знаков — неплохое начало.
Но теперь компьютеры распространились повсеместно. Наверное, в каждой стране есть хотя бы несколько компьютеров и тот или иной вид доступа в сеть. Естественно, любой человек предпочитает читать Web-страницы, электронную почту и прочие данные на своем родном языке, а не только на английском.
Человеческие языки поразительно разнообразны. Некоторые являются почти фонетическими, к другим это определение применимо с большой натяжкой. В одних есть настоящий алфавит, другие же предлагают набор из нескольких тысяч символов, ведущих происхождение от пиктограмм. В некоторых языках не один алфавит, а несколько. На каких-то языках пишут сверху вниз, на других — справа налево. Некоторые алфавиты очень просты, в других ряд букв украшен приводящими в трепет точечками, черточками, кружочками, галочками и штрихами… Есть языки, где при определенных условиях соседние буквы комбинируются; иногда это обязательно, а иногда и нет. В каких-то языках предусмотрено различение строчных и прописных букв, но большинство таких различий не устанавливает.
За 25 лет мы прошли длинный путь. Мы худо-бедно научились приводить в порядок хаотическое нагромождение символов и языков.
Если вам часто приходится иметь дело с программами, спроектированными для работы в различной языковой среде, то вы знаете, что такое интернационализация. Это способность программы поддерживать более одного естественного языка.
С интернационализацией тесно связаны мультиязычность и локализация. Почему-то принято сокращать эти слова, удаляя средние буквы и подставляя вместо них число, равное количеству удаленных букв:
def shorten(str)
(str[0..0] + str[1..-2].length.to_s + str[-1..-1]).upcase
end
shorten("internationalization") # I18N
shorten("multilingualization") # M17N
shorten("localization") # L10N
Термины I18N и M17N — практически синонимы; еще говорят «глобализация», но это слово имеет и другой смысл. Термин L10N более широкий: он подразумевает полную поддержку местной культуры и соглашений (например, символов обозначения валюты, способов форматирования даты и времени, использования точки или запятой для отделения целой и дробной частей в десятичном числе и многое другое).
Начнем с терминологии, поскольку в этой области широко используется жаргон. Заодно совершим небольшой экскурс в историю, так как текущее состояние дел становится понятным, лишь если рассмотреть его в контексте медленной эволюции. Уроки истории будут сведены к минимуму.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Глава 13 Интернационализация и локализация
Глава 13 Интернационализация и локализация Ранние вычислительные системы обычно для своего вывода (приглашений, сообщений об ошибках) и ввода (ответы на запросы, такие, как «да» и «нет») использовали английский язык. Это было верно для систем Unix вплоть до середины 1980-х. В
1.3. Локализация и интернационализация
1.3. Локализация и интернационализация Для того чтобы иметь успех на международном рынке, программные продукты должны быть локализованы, т.е. приспособлены к культурным и языковым нормам потенциальных покупателей.Для многих программных приложений локализация может быть
Глава 17. Интернационализация
Глава 17. Интернационализация Кроме латинского алфавита, используемого для английского и многих европейских языков, Qt 4 обеспечивает широкую поддержку остальных мировых систем записи:• Qt применяет Unicode в программном интерфейсе и во внутренних операциях. В приложении
17.6. Интернационализация
17.6. Интернационализация Детальное рассмотрение интернационализации кода — разработки программы так, чтобы ее интерфейс легко вмещал в себя несколько языков и справлялся с причудами различных наборов символов — выходит за рамки тематики данной книги. Однако опыт Unix
17.6. Интернационализация
17.6. Интернационализация Детальное рассмотрение интернационализации кода — разработки программы так, чтобы ее интерфейс легко вмещал в себя несколько языков и справлялся с причудами различных наборов символов — выходит за рамки тематики данной книги. Однако опыт Unix
Глава 1. Обзор Ruby
Глава 1. Обзор Ruby Язык формирует способ нашего мышления и определяет то, о чем мы можем размышлять. Бенджамин Ди Уорф Стоит напомнить, что в новом языке программирования иногда видят панацею, особенно его адепты. Но ни один язык не сможет заменить все остальные. Не
Глава 11. ООП и динамические механизмы в Ruby
Глава 11. ООП и динамические механизмы в Ruby Как введение иррациональных чисел… стало удобным мифом упростившим законы арифметики… так физические объекты и постулированные сущности делают наше восприятие реальности более простым и завершенным… Концептуальная схема
Глава 12. Графические интерфейсы для Ruby
Глава 12. Графические интерфейсы для Ruby Нет ничего хуже четкого образа нечеткой идеи. Апсель Адамс Нет смысла отрицать, что мы живем в век графических интерфейсов (ГИ). В обозримом будущем тот или иной вид графического интерфейса станет основным способом взаимодействия с
Глава 13. Потоки в Ruby
Глава 13. Потоки в Ruby Он тянет нить своего красноречия искуснее, чем развивает свои доводы. Шекспир, «Бесплодные усилия любви», акт V, сцена 1[15] Потоки еще иногда называют облегченными процессами. Это просто способ обеспечить параллельное выполнение без накладных расходов,
Глава 15. Ruby и форматы данных
Глава 15. Ruby и форматы данных — Ваша информация, сэр, — говорит Библиотекарь. — Сможешь увязать эту информацию с утилитой «ВЫ ЗДЕСЬ»? — говорит Хиро. — Я посмотрю, что можно сделать, сэр. Форматы представляются совместимыми. Нил Стивенсон, «Лавина» В этой главе мы
Глава 19. Ruby и Web-приложения
Глава 19. Ruby и Web-приложения Как ловко мы сплетаем сеть… Сэр Вальтер Скотт, «Мармион» Ruby — универсальный язык, его ни в коей мере нельзя считать исключительно «языком Web». Но, несмотря на это, одно из наиболее типичных его применений — создание приложений (да и вообще
Глава 20. Распределенный Ruby
Глава 20. Распределенный Ruby Меньше — это больше. Робер Браунинг, «Андреа дель Сарто» В настоящее время имеется немало технологий, поддерживающих распределенную обработку: различные варианты RPC, а также COM, CORBA, DCE и Java RMI.Одни проще, другие сложнее, но в принципе все делают
Глава 21. Инструменты разработки для Ruby
Глава 21. Инструменты разработки для Ruby Человек — это животное, создающее инструменты. Бенджамин Франклин Среда разработки включает не только интерпретатор. У каждого хорошего разработчика под рукой всегда есть целый набор средств, облегчающих жизнь. Некоторые из них
Глава 22. Сообщество пользователей Ruby
Глава 22. Сообщество пользователей Ruby …Тот, кто не способен вступить в общение или, считая себя существом самодовлеющим, не чувствует потребности ни в чем, уже не составляет элемента государства, становясь либо животным, либо божеством. Аристотель, «Политика»[19] Уже было
Глава 13 Интернационализация
Глава 13 Интернационализация 13.0. Введение В данной главе приводятся решения некоторых задач, которые обычно возникают при интернационализации программ С++. Обеспечение возможности работы программы в различных регионах (это обычно называется локализацией), как правило,