Ответ
Интернационализация (Internationalization, i18n) — это практика проектирования и разработки программного приложения таким образом, чтобы его можно было легко адаптировать для различных языков, регионов и культур без внесения изменений в исходный код.
Основные принципы i18n:
- Отделение локализуемого контента от кода: Вынос всех текстовых строк, форматов дат/чисел/валют в отдельные ресурсные файлы (например,
.properties,.json,.yml). - Поддержка Unicode: Использование UTF-8 для корректного отображения символов всех языков.
- Гибкость макета: Учет разной длины текста и направленности письма (слева-направо LTR, справа-налево RTL).
- Абстрагирование форматов: Использование встроенных библиотек для форматирования дат, чисел, адресов в зависимости от локали.
Пример 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-языками, переполнение текстовых полей и форматирование данных.