Как работать с локализацией для Сербии (регион RS) в Java?

«Как работать с локализацией для Сербии (регион RS) в Java?» — вопрос из категории Other, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java для корректной обработки региональных форматов (даты, числа, валюты, текста) для Сербии используется класс java.util.Locale.

1. Создание локали для Сербии:

// Код страны - RS (Сербия), язык - sr (сербский)
Locale serbianLocale = new Locale("sr", "RS");

// Можно также использовать константу, если доступна
// Locale serbianLocale = Locale.forLanguageTag("sr-RS");

System.out.println(serbianLocale.getDisplayCountry()); // "Сербия" (или "Serbia" в зависимости от локали системы)
System.out.println(serbianLocale.getCountry()); // "RS"
System.out.println(serbianLocale.getLanguage()); // "sr"

2. Применение локали в форматировании:

Форматирование чисел и валют:

import java.text.NumberFormat;
import java.util.Locale;

Locale localeRS = new Locale("sr", "RS");
double number = 1234567.89;

NumberFormat numFormat = NumberFormat.getInstance(localeRS);
System.out.println(numFormat.format(number)); // "1.234.567,89" (разделитель тысяч - точка, дробная часть - запятая)

NumberFormat currFormat = NumberFormat.getCurrencyInstance(localeRS);
System.out.println(currFormat.format(number)); // "1.234.567,89 RSD" (сербский динар)

Форматирование дат и времени:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

Locale localeRS = new Locale("sr", "RS");
LocalDate date = LocalDate.now();

DateTimeFormatter formatter = DateTimeFormatter
    .ofPattern("dd. MMMM yyyy.", localeRS); // Паттерн с полным названием месяца

String formattedDate = date.format(formatter);
System.out.println(formattedDate); // Например, "15. април 2024."
// Месяц будет выведен на сербском языке (кириллица).

3. Важные замечания:

  • Сербия использует кириллический (ћирлица) и латинский (latinica) алфавиты. В IT-системах чаще применяется латиница (sr-Latn-RS). Уточните требуемую кодировку.
  • Для правильной сортировки строк используйте Collator.getInstance(serbianLocale).
  • Убедитесь, что JVM имеет данные о локали sr-RS, или используйте библиотеки, такие как ICU4J, для расширенной поддержки.