Я хочу перейти на xliff вместо того, чтобы переводить файлы Localizable.strings
и Main.strings
, но обнаружил, что использую NSLocalizedString
неправильным образом (и я делал это в течение 5 лет на самом деле...).
Мне не нравится иметь переводы непосредственно внутри моего кода, поэтому я использую общий ключ и не пишу никаких комментариев:
NSLocalizedString("general.error", comment: "")
Затем я включаю строку в Localizable.strings.
"general.error" = "An error occured";
Пока все хорошо (возможно). Теперь, когда я экспортирую xliff-файлы, я вижу, что source
— это просто мой общий ключ, и, очевидно, переводчик не может угадать, что писать как target
для этого ключа:/
Итак, мой вопрос: единственное решение - переместить все переводы непосредственно внутрь NSLocalizedString
?
NSLocalizedString("An error occured", comment: "")
или внутри комментария... (мне действительно не нравится это решение)
А что, если строка действительно длинная? кажется таким странным помещать строку из 3 строк прямо в код:/
Любое другое интересное решение там?
РЕДАКТИРОВАТЬ
Я уже пытался использовать константы, но кажется, что это решение не работает в быстром режиме. Я создал файл String.swift
, в который добавил константы:
let thisIsMyLonStringID = "An here I can put the long translation";
И я могу использовать его следующим образом:
NSLocalizedString(thisIsMyLonStringID, comment: "")
Когда я экспортирую в XLIFF, эта строка недоступна в файлах xliff :(