Ми розробляємо великий додаток, що складається з безлічі невеликих пакетів. Кожен пакет має власний набір файлів ресурсів для локалізації.
Який найкращий підхід до організації та називання рядків локалізації?
Ось мої думки поки що:
Поводження з дублікатами
Один і той же текст (скажімо, "поштовий індекс") може виникати кілька разів у межах певного пакету. Інстинкт програмування (DRY) підказує мені створити єдиний рядовий ресурс, спільний для всіх подій .
Потім перекладач може захотіти вибрати довгий переклад ("Postleitzahl") в деяких місцях і коротший ("PLZ") в місцях з меншим простором. Або ми можемо вирішити додати двокрапку до деяких подій ("Поштовий індекс:"), але не до інших. Або нам може знадобитися інша капіталізація ("поштовий індекс") в деяких місцях. Усі ці аргументи вказують на створення одного ресурсу за використання, навіть якщо їхній вміст однаковий .
Іменування
Якщо ми прагнемо усунути дублікати, має сенс називати ресурси за вмістом , можливо, натякаючи на тип використання за допомогою префікса. Таким чином, у нас може бути labelOK
= "ОК" , messageFileTooLarge
= "Файл перевищує максимальний розмір файлу." , і labelZipCode
= "Поштовий індекс" .
Ім'я за вмістом має перевагу природним чином обробляти аргументи формату: ресурс messageFileHas_0_MBWhileMaximumIs_1_MB
чітко приймає два аргументи форматування, фактичний розмір файлу та максимальний розмір файлу.
Якщо ми дозволяємо дублікати, однак називати лише вмістом не має сенсу. Для того, щоб отримати унікальні імена ресурсів, нам потрібно якось включити місце використання у ім’я ресурсу. Це працює для графічних елементів керування, хоча ідентифікатори мають тенденцію отримати трохи довгі: fileSelectionConfirmationButtonText
= "ОК" , customerDetailsTableColumnZipCode
= "Поштовий індекс" . Однак для невізуальних файлів коду стає складніше. Як ви називаєте конкретне використання рядка, якщо ви не знаєте, де воно в кінцевому підсумку відображатиметься? За кодовим файлом та назвою функції? Мені здається досить незграбним і крихким.
Загалом, я схиляюся до дозволу дублікатів, але я намагаюся знайти послідовну схему іменування, яка це підтримує.
Редагувати: Це запитання має два аспекти: як організувати ресурси (DRY проти дублікатів) та як їх називати . Поки відповіді були зосереджені на першому аспекті. Буду вдячний за відгуки щодо конвенцій про іменування!