Что такое интернационализация (i18n) в разработке ПО?

«Что такое интернационализация (i18n) в разработке ПО?» — вопрос из категории Основы тестирования, который задают на 22% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Интернационализация (Internationalization, i18n) — это практика проектирования и разработки программного приложения таким образом, чтобы его можно было легко адаптировать для различных языков, регионов и культур без внесения изменений в исходный код.

Основные принципы i18n:

  1. Отделение локализуемого контента от кода: Вынос всех текстовых строк, форматов дат/чисел/валют в отдельные ресурсные файлы (например, .properties, .json, .yml).
  2. Поддержка Unicode: Использование UTF-8 для корректного отображения символов всех языков.
  3. Гибкость макета: Учет разной длины текста и направленности письма (слева-направо LTR, справа-налево RTL).
  4. Абстрагирование форматов: Использование встроенных библиотек для форматирования дат, чисел, адресов в зависимости от локали.

Пример i18n на Java (Spring):

// Код использует MessageSource
@RestController
public class GreetingController {
    @Autowired
    private MessageSource messageSource;

    @GetMapping("/greet")
    public String greet(@RequestHeader("Accept-Language") Locale locale) {
        // Сообщение ищется в ресурсных файлах по ключу и локали
        return messageSource.getMessage("greeting.message", null, locale);
    }
}

Файлы ресурсов:

messages_en.properties

greeting.message=Hello, World!
welcome.text=Welcome, {0}!  # Параметризация

messages_ru.properties

greeting.message=Привет, мир!
welcome.text=Добро пожаловать, {0}!

Отличие от локализации (l10n):

  • i18n — это подготовительная техническая работа (архитектура, инфраструктура).
  • l10n — это сам процесс адаптации продукта под конкретный регион: перевод текстов, адаптация изображений, правовое соответствие.

Для тестировщика: Необходимо проверять корректность подстановки переводов, работу с RTL-языками, переполнение текстовых полей и форматирование данных.