Открытый семинар для студентов в компании CUSTIS (26 марта 2015 года).
Лектор: Владислав Иофе, архитектор.
Аннотация: В современном глобальном мире разработку софта невозможно представить без его адаптации к локальным стандартам. Все глобальные сервисы, ведущие вендоры и разработчики, стремящиеся выйти со своими продуктами на международный рынок, стараются сделать ПО максимально удобным и полезным для пользователей во всем мире. Однако этот процесс таит в себе немало сложностей и требует от разработчика понимания нетривиальных особенностей культуры, языка, письменности, стандартов и норм того или иного региона. На семинаре мы разберемся с типичными «ловушками» интернационализации ПО и попробуем вместе решить конкретные задачи, с которыми сталкиваются разработчики в процессе адаптации IT-систем.
Видеозапись семинара: https://vimeo.com/123722099.
Открытый семинар для студентов в компании CUSTIS (3 апреля 2014 года).
Лектор: Владислав Иофе, руководитель группы в отделе технологического развития.
Аннотация: Тестирование — один из самых важных процессов обеспечения качества ПО. На этом семинаре мы разберемся, что такое тесты, зачем они нужны и какими они бывают. Мы рассмотрим случаи, когда нужны автоматические тесты, поговорим о том, какие для этого есть инструменты, а также ответим на насущный вопрос, кто должен заниматься написанием тестов. А во второй, практической части семинара мы попробуем отловить дефекты небольшой программки при помощи тестов.
Видеозапись семинара: https://vimeo.com/91396326.
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системахCUSTIS
Открытый семинар для студентов в компании CUSTIS (22 октября 2015 года).
Лектор: Владислав Иофе, архитектор.
Аннотация: При проектировании и реализации корпоративных систем всегда возникает целый ряд вопросов: нужно ли самим разрабатывать систему контроля доступа? Как аутентификация и авторизация встраиваются в архитектуру приложения? Возможно ли сделать вход в систему одновременно простым, удобным и безопасным? Что делать с паролями от сотен сайтов?
На семинаре мы рассмотрим разные методы аутентификации и авторизации, попробуем обойти их, а также познакомимся с промышленными стандартами и современными трендами в этой сфере применительно к корпоративным системам. Мы дадим ответы на уже заданные и многие другие вопросы не с точки зрения специалиста по безопасности, а с позиций проектировщика, пользователя, разработчика, тестировщика и инженера сопровождения, и уделим особое внимание архитектуре и юзабилити.
Видеозапись семинара: https://vimeo.com/143727329.
Открытый семинар для студентов в компании CUSTIS (30 мая 2013 года).
Лектор: Юрий Солдаткин, ведущий разработчик C#.
Аннотация: UML — это средство графического моделирования объектов при проектировании ПО. Из этого семинара вы узнаете, что из себя представляет этот инструмент, где он необходим, в каких случаях применяется, а также получите конкретные примеры его использования в разработке ИТ-систем.
Видеозапись семинара: https://vimeo.com/67624786.
Открытый семинар для студентов в компании CUSTIS (3 апреля 2014 года).
Лектор: Владислав Иофе, руководитель группы в отделе технологического развития.
Аннотация: Тестирование — один из самых важных процессов обеспечения качества ПО. На этом семинаре мы разберемся, что такое тесты, зачем они нужны и какими они бывают. Мы рассмотрим случаи, когда нужны автоматические тесты, поговорим о том, какие для этого есть инструменты, а также ответим на насущный вопрос, кто должен заниматься написанием тестов. А во второй, практической части семинара мы попробуем отловить дефекты небольшой программки при помощи тестов.
Видеозапись семинара: https://vimeo.com/91396326.
«Стой! Кто идет?»: аутентификация и авторизация в корпоративных системахCUSTIS
Открытый семинар для студентов в компании CUSTIS (22 октября 2015 года).
Лектор: Владислав Иофе, архитектор.
Аннотация: При проектировании и реализации корпоративных систем всегда возникает целый ряд вопросов: нужно ли самим разрабатывать систему контроля доступа? Как аутентификация и авторизация встраиваются в архитектуру приложения? Возможно ли сделать вход в систему одновременно простым, удобным и безопасным? Что делать с паролями от сотен сайтов?
На семинаре мы рассмотрим разные методы аутентификации и авторизации, попробуем обойти их, а также познакомимся с промышленными стандартами и современными трендами в этой сфере применительно к корпоративным системам. Мы дадим ответы на уже заданные и многие другие вопросы не с точки зрения специалиста по безопасности, а с позиций проектировщика, пользователя, разработчика, тестировщика и инженера сопровождения, и уделим особое внимание архитектуре и юзабилити.
Видеозапись семинара: https://vimeo.com/143727329.
Открытый семинар для студентов в компании CUSTIS (30 мая 2013 года).
Лектор: Юрий Солдаткин, ведущий разработчик C#.
Аннотация: UML — это средство графического моделирования объектов при проектировании ПО. Из этого семинара вы узнаете, что из себя представляет этот инструмент, где он необходим, в каких случаях применяется, а также получите конкретные примеры его использования в разработке ИТ-систем.
Видеозапись семинара: https://vimeo.com/67624786.
Почему стоит использовать TypeScript в Angular2, какие есть фишки и особенности. Полезем под капот синтаксиса декораторов, разберем Reflect metadata API, и многое другое
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
В этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...HappyDev-lite
Новые технологии и инструменты программирования появляются каждый год. Какие-то умирают быстро, а какие-то приходят надолго. Не хочется тратить время на изучение того, что быстро окажется ненужным.
В докладе будут рассказаны причины возникновения бесполезных технологий, почему они сначала кажутся хорошими, а потом наступает разочарование, а также как научиться самому выбирать правильные.
1. Организационные и формальные вопросы.
2. Пользователь всегда прав!
3. Что такое язык программирования?
4. Краткая история развития языков программирования: машинные коды, ассемблер, языки высокого уровня.
5. Способы трансляции: компиляция и интерпретация.
6. Виртуальные машины.
7. Ученье — свет, неученье — тьма (для программиста: потеря работы).
Translation Technology in Russia: 10 tools most popular with large LSPsKonstantin Dranch
Presentation for 3.mpk.club event. Contents:
- Top-10 CAT-tools used by large translation and localization companies in Russia
- Top translation management systems
- Terminology management and QA-tools
- Technology trends
Локализационное тестирование - это не только переводVitebsk Miniq
Презентация подготовлена по материалам выступления Павла Климченко на витебском Miniq QA Day, который был проведен 28 мая 2020 года:
https://community-z.com/events/miniq-qa .
Про доклад:
В рамках выступления "Локализационное тестирование - это не только перевод" я расскажу об этом интересном виде тестирования, который нередко обделяют вниманием. Поясню разницу между глобализацией, интернационалией и локализацией.
Также я поделюсь деталями как можно быстро подготовить приложение к переводу на разные локали, на что должен обращать внимание QA-инженер в рамках тестирования помимо перевода и обязательно приведу примеры как происходит тестирование локализации у нас проекте.
Выступление Владимира Рахтеенко, нашего генерального директора, и Германа Алексеева, ИТ-директора ГК «Спортмастер», на Неделе российского ритейла (7 июня 2017 года, Москва).
Будущее уже наступило: от Agile к бирюзовым организациямCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на форуме «Дни PR и маркетинга на Юге» (1 июня 2017 года, Ростов-на-Дону).
Диаграммы учета как средство для наглядного и целостного отображения правил у...CUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на конференции «Соколовские чтения «Бухгалтерский учет: взгляд из прошлого в будущее» (22 апреля 2017 года, Санкт-Петербург).
More Related Content
Similar to Интернационализация ПО: тонкости культуры в разработке
Почему стоит использовать TypeScript в Angular2, какие есть фишки и особенности. Полезем под капот синтаксиса декораторов, разберем Reflect metadata API, и многое другое
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
В этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...HappyDev-lite
Новые технологии и инструменты программирования появляются каждый год. Какие-то умирают быстро, а какие-то приходят надолго. Не хочется тратить время на изучение того, что быстро окажется ненужным.
В докладе будут рассказаны причины возникновения бесполезных технологий, почему они сначала кажутся хорошими, а потом наступает разочарование, а также как научиться самому выбирать правильные.
1. Организационные и формальные вопросы.
2. Пользователь всегда прав!
3. Что такое язык программирования?
4. Краткая история развития языков программирования: машинные коды, ассемблер, языки высокого уровня.
5. Способы трансляции: компиляция и интерпретация.
6. Виртуальные машины.
7. Ученье — свет, неученье — тьма (для программиста: потеря работы).
Translation Technology in Russia: 10 tools most popular with large LSPsKonstantin Dranch
Presentation for 3.mpk.club event. Contents:
- Top-10 CAT-tools used by large translation and localization companies in Russia
- Top translation management systems
- Terminology management and QA-tools
- Technology trends
Локализационное тестирование - это не только переводVitebsk Miniq
Презентация подготовлена по материалам выступления Павла Климченко на витебском Miniq QA Day, который был проведен 28 мая 2020 года:
https://community-z.com/events/miniq-qa .
Про доклад:
В рамках выступления "Локализационное тестирование - это не только перевод" я расскажу об этом интересном виде тестирования, который нередко обделяют вниманием. Поясню разницу между глобализацией, интернационалией и локализацией.
Также я поделюсь деталями как можно быстро подготовить приложение к переводу на разные локали, на что должен обращать внимание QA-инженер в рамках тестирования помимо перевода и обязательно приведу примеры как происходит тестирование локализации у нас проекте.
Similar to Интернационализация ПО: тонкости культуры в разработке (17)
Выступление Владимира Рахтеенко, нашего генерального директора, и Германа Алексеева, ИТ-директора ГК «Спортмастер», на Неделе российского ритейла (7 июня 2017 года, Москва).
Будущее уже наступило: от Agile к бирюзовым организациямCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на форуме «Дни PR и маркетинга на Юге» (1 июня 2017 года, Ростов-на-Дону).
Диаграммы учета как средство для наглядного и целостного отображения правил у...CUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на конференции «Соколовские чтения «Бухгалтерский учет: взгляд из прошлого в будущее» (22 апреля 2017 года, Санкт-Петербург).
Опыт построения микросервисной архитектуры в цифровом банкеCUSTIS
Выступление Андрея Солощака, ведущего архитектора «Бинбанка», на профессиональной встрече CUSTIS Meetup: Микросервисы в Enterprise (16 марта 2017 года, Москва).
Золотая лихорадка MSA: почему нам не подошли микросервисы?CUSTIS
Выступление Юрия Веретельникова, сооснователя и технического директора Solit Clouds, на профессиональной встрече CUSTIS Meetup: Микросервисы в Enterprise (16 марта 2017 года, Москва).
Выступление Игоря Беспальчука, нашего руководителя проектов, на профессиональной встрече CUSTIS Meetup: Микросервисы в Enterprise (16 марта 2017 года, Москва).
От монолитных моделей предметной области — к модульнымCUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на World Information Architecture Day (18 февраля 2017 года, Санкт-Петербург).
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыCUSTIS
Выступление Артема Казакова, директора по маркетингу Retail Rocket, на бизнес-завтраке «К 2017 готовы: продвинутые инструменты маркетинга для интернет-магазинов» (13 декабря 2016 года, Москва).
This document summarizes Adam Sitnik's presentation on .NET performance. It discusses new features in C# 7 like ValueTuple, ref returns and locals, and Span. It also covers .NET Core improvements such as ArrayPool and ValueTask that reduce allocations. The presentation shows how these features improve performance through benchmarks and reduces GC pressure. It provides examples and guidance on best using new features like Span, pipelines, and unsafe code.
Опыт применения метода ATAM для оценки архитектурыCUSTIS
Выступление Игоря Беспальчука, нашего руководителя проектов дирекции архитектуры, на заседании русского отделения INCOSE (9 ноября 2016 года, Москва).
Видеозапись выступления:
https://vimeo.com/190918892
Process и Case Management в информационной системе: от автоматизации As Is к ...CUSTIS
Выступление Максима Цепкова, нашего главного архитектора дирекции развития решений, на ежегодной конференции CEE-SECR – 2016 (29 октября 2016 года, Москва).
RBAC & ABAC: гибридное решение для управления правами доступаCUSTIS
Выступление Вячеслава Муравлева, нашего ведущего разработчика, на международной выставке InfoSecurity Russia (20 сентября 2016 года, Москва).
Видеозапись выступления:
https://vimeo.com/183804752
RBAC & ABAC: гибридное решение для управления правами доступа
Интернационализация ПО: тонкости культуры в разработке
1. 26 марта 2015 года
Интернационализация ПО:
тонкости культуры в разработке
Владислав Иофе
Архитектор
2. План
О компании и о себе
Hello, world!
Кодировки и наборы символов
The Turkish Test
Языковые и региональные стандарты
Кофе-брейк
i18n, g11n, l10n, NLS
Locale
Дата и время. Практическое задание
Многозвенные приложения
Отказ от интернационализации
2/68
3. О себе
В 2005 окончил мехмат
Ташкентского государственного университета
С 2004 занимаюсь корпоративным
программным обеспечением
В 2008 пришел в CUSTIS
Работал разработчиком, техлидом,
тимлидом, сейчас занимаюсь архитектурой
3/68
12. Знаки препинания
en Are you sure you want to quit? Yes, of course.
ar ﺑﺎﻟطﺑﻊ ﻧﻌم إﻧﮭﺎء؟ ﺗرﯾد أﻧك ﻣﺗﺄﻛد أﻧت ھل.
zh-Hans 您确定要退出吗?是的,当然。
es ¿Seguro que quieres salir? Sí, por supuesto.
el Είστε σίγουροι ότι θέλετε να κλείσετε; Ναι, φυσικά.
12/68
13. Hello, world! Выводы
Не зашивать в код строки Выносить строки в ресурсы
Внешнее по отношению к коду
хранение (текстовые или xml-
файлы, БД и прочее)
Не конкатенировать строки Использовать строки
форматирования
Знаки препинания и разрывы
строк держать также в строке
форматирования
Писать комментарии
для переводчиков
Даже для нелокализуемого
софта это правила
хорошего тона
Не относится
к программным
константам
13/68
15. Кодировки и наборы символов
(Encodings and Character Sets)
Начало…
ASCII – 7-битная кодировка
В нее не помещаются даже все европейские символы
(é, ß, ü, ä, ö и др.)
Extended-ASCII – использует 8-й бит
Для группы языков (набора символов) нужна
собственная кодировка (codepage). Часто их несколько:
для русского – cp866, KOI-8R, Windows-1251
А в китайском – около 3000 общеупотребимых
иероглифов, а всего – более 80000
15/68
17. KOI-8R – код обмена информацией,
8 битов
Основана на русской морзянке
Русская морзянка построена на
сходстве звуков
Как следствие:
символы кириллицы в таблице
расположены не по алфавиту
зато при отсекании старшего
бита текст остается читаемым
11000001 а 01000001 A · −
11000010 б 01000010 B − · · ·
11010111 в 01010111 W · − −
11000111 г 01000111 G − − ·
11000100 д 01000100 D − · ·
11000101 е 01000101 E ·
11010110 ж 01010110 V · · · −
11011010 з 01011010 Z − − · ·
Да здравствует Юникод!
dA ZDRAWSTWUET `NIKOD!
17/68
19. Что такое ?
Это – стандарт кодирования символов…
1 114 112 символов, для которых определены
уникальные коды. Коды записываются
с префиксом U+. Сам набор символов
частенько называют Юникодом
Семейство кодировок UTF
19/68
21. Символ рубля U+20BD
Официально утвержден 11 декабря 2013 года
Появился в стандарте Юникода 16 июня 2014 года
Новые шрифты Windows входят в обновление
KB2970228 от 2 сентября 2014 года
Которого у многих пользователей нет
Многие разработчики не парятся
Ну а остальные придумывают способы
(«тащат» с собой шрифты или используют CSS)
21/68
23. The Turkish Test
Англоязычному или русскоязычному
пользователю редко важна
регистрочувствительность*
Совершенно естественной выглядит
возможность вводить, получать, искать
информацию без учета регистра букв
* Есть языки, где нет регистра символов
23/68
26. Case Folding – изменение регистра
Не во всех языках изменение регистра
такое же, как в латинском алфавите
Изменение регистра может привести
к изменению числа символов
немецкий: ToUpper(“groß”) == “GROSS”
Unicode содержит правила для Case Folding
и специальных случаев
Использовать ToUpper() все же чуть
безопаснее, чем ToLower()
26/68
28. Языковые и региональные стандарты
Примеры
Английский
(США)
Английский
(Индия)
Русский
(Россия)
Немецкий
(Германия)
Итальянский
(Италия)
Персидский
3/26/2015 7:30:12
PM
26.03.2015 19:30 26.03.2015 19:30 26.03.2015 19:30
26/03/2015
19.30.12
26/03/2015
07:30:12ب.ظ
($12,345,678.90) ₹ -123,45,678.90 -12 345 678,90 ₽ -12.345.678,90 € -€ 12.345.678,90 ﷼12،345،678/90-
13.00 % 13.00% 13,00% 13,00% 13,00% 13/00 %
28/68
29. Почитайте о нормализации строк в Unicode
Заостряйте внимание на том, какая локаль
используется при сравнении строк и case folding’e
(в том числе сортировке и поиске), форматировании:
Явно указывайте инвариантную («пустую», «корневую»,
US English) для внутренних нужд, взаимодействия
с другими системами
либо
используйте специальный формат, например XML’ный
(2015-03-26T19:00:12+03:00)
Используйте пользовательскую (можно неявно),
когда результат увидит пользователь
Промежуточные итоги
29/68
36. Локализация – не только перевод
Какие элементы подлежат локализации?
Строки
Медиа (изображения, звуки, видео)
UI Layout
Все это мы будем называть ресурсами
локализации
А еще специфическими могут быть
алгоритмы. Правда, нечасто
Грамматика языка
36/68
41. Языковые и региональные стандарты
Язык и система письма (письменность)
Алфавит, правила сравнения
Числа
Календарь, дата и время
Валюта
Система мер
Структура почтового адреса, телефонного
номера
Формат бумаги по умолчанию
Печатные формы, отчеты
...
41/68
42. Описание языковых и региональных
стандартов
Locale («локаль»), в .NET – Culture («культура»)
Имеет два компонента:
Язык (обязательный)
Регион (необязательный)
42/68
43. Locale
Можно выделить три использования:
Для языка отображения пользовательского
интерфейса
Для форматирования дат, чисел и т. д.
и сравнения строк (сортировка, поиск, правила
case folding’а)
Для пользовательского ввода (IME)
43/68
44. Locale
Обычно локали UI и форматирования
Наследуются от системных
Могут быть переопределены программно
Применяются на приложение (Java)
или даже отдельный поток (Windows)
44/68
50. Процесс поиска подходящих ресурсов
(Resource Fallback Process)
Переводить для всех вариантов языка может быть
неоправданно или будет просто дублированием
Пустой текст у пользовательского элемента UI
недопустим
Ресурсы для ведущего
языка (языка по умолчанию,
языка разработки) всегда
актуальны и непусты
Локализация часто
не успевает за версиями
софта, и часто используется
предыдущая версия
локализации
50/68
52. Locale
Не все встречающиеся в жизни сочетания
«язык – регион» существуют в операционных
системах в виде локалей
Молдавия (Молдова) говорит по-молдавски
(или на молдавском диалекте румынского)
Локалей ro-MD, ro-MD-TRI в Windows нет
А раньше даже были локали ru-MO, ro-MO
Тем не менее, запись на латинице одних и тех же румынских
слов различается
Можно программно создавать собственные локали
Пользователи поступают проще, указывая локаль
ro-RO
52/68
53. Особенности окружения
Folder name Folder path Language
Program Files C:Program Files English
Programme C:Programme German
Archivos de programa
C:Archivos de
programa
Spanish
Programmes C:Programmes French
Programmi C:Programmi Italian
Arquivos de Programas
C:Arquivos de
Programas
Portuguese
Program C:Program Swedish
Programmer C:Programmer Danish
Programfiler C:Programfiler Norwegian
Fisiere Program C:Fisiere Program Romanian
Program Files C:Program Files
Dutch / Russian /
Polish / Czech /
Chinese
53/68
55. Корреспондент Василий Пупкин
отправился в длительную
командировку по провинциям
стран Ближнего Востока.
Оплата прокатной машины
почасовая, 1 долл/час.
Дата и время. Задача
1 марта 2015 в полдень Вася
выехал из офиса в Тегеране,
в полдень 22 марта подъехал
к границе Ирана и Азербайджана
в Астаре, а в полдень 29 марта
2015 будет уже в Баку.
Сколько заплатит Вася
за аренду авто?
55/68
56. Дата и время. Задача. Подсказки
Иран и Азербайджан находятся в разных
часовых поясах
А еще есть летнее время
В разных странах переход на летнее время
(и обратно) происходит в разные дни
В Азербайджане в последнее воскресенье
марта
В Иране в третью субботу марта
56/68
58. Дата и время. Выводы
Надо различать термины «часовой пояс»
(timezone) и «смещение» (offset)
В Гринвиче (район Лондона)
тоже переходят на летнее время
UTC и GMT – не одно и то же (GMT устарел)
58/68
59. Дата и время. Выводы
В году не всегда 365 дней
В сутках не всегда 24 часа
В часе 60 минут
В минуте не всегда 60 секунд
Один и тот же момент времени может
случиться не единожды или не случиться
вообще
59/68
60. Хранение даты-времени
Журналирование
прошедшие события
логично хранить с часовым
поясом/смещением
Календарь/напоминания
Нельзя хранить время
со смещением
Не рекомендуется хранить
время с часовым поясом
Лучше хранить местоположение
Универсального рецепта нет,
все зависит от специфики задачи
60/68
61. Веб-приложения
Браузер использует заголовок Accept-Language
Указываются языки (code или code-Subcode) с весами
Сервер решает, может ли и хочет ли он предоставить
контент на одном из запрошенных языков
Других стандартных средств нет
61/68
62. Веб-приложения
А нам еще нужна информация о местоположении
Геолокация? Неуниверсально, ненадежно…
Датчики мобильных устройств
Анализ баз IP- и MAC-адресов
JavaScript
► Поэтому приложение должно предоставлять
возможность изменить язык и/или регион
► Огромное количество приложений игнорирует
локаль пользователя (настройки форматирования),
что делает затруднительным, например, копипаст
в Excel
62/68
63. Веб-приложения
Кстати, W3C не рекомендует использовать
флаги для обозначения языков
“In addition, flags have
nationalistic connotations that
may be unwelcome
for people of other countries,
even though they speak the
same language.”
63/68
66. Отказ от интернационализации
Style
Герои серии игр говорят на искусственном
языке
На Simlish (симском) даже есть песни
GitHub
В 2011 году команда отказалась от поддержки
многоязычности и сосредоточилась на том,
чтобы сделать GitHub быстрым и надежным
66/68
67. О чем мы не говорили?
Работа с исключениями
Нормализация в Unicode
Шрифты
Полнотекстовый поиск
Взаимодействие с переводчиками
…
67/68