Преобразование NSLocalizedString в NSAttributedString в верхнем регистре текста

Действия по воспроизведению:

let testString  = NSLocalizedString("test", comment: "string for test")
let testStringAttributed = NSAttributedString(string: testString)

print(testStringAttributed)

ожидаемый результат: тест

фактический результат: ТЕСТ

Я использую 7.3.1, свифт 2.2

Вы можете видеть, что я даже не устанавливал атрибуты, даже с атрибутами (с обычным стилем шрифта) результат тот же. Это неожиданное поведение, и я должен иметь возможность локализовать свои атрибутированные строки в своем приложении (в основном текст, который я установил в метке со ссылками). Любое известное обходное решение?

P.S.: Установка строки в нижнем регистре удаляет верхний регистр, НО заставляет меня потерять все атрибуты, которые я установил. Здесь не рабочий вариант.


person thibaut noah    schedule 14.12.2016    source источник
comment
Это может быть вызвано отсутствием перевода для этого ключа.   -  person Timur Bernikovich    schedule 14.12.2016
comment
Вы можете изменить его с помощью Where sillyString -> input string print(sillyString.uppercaseString) print(sillyString.lowercaseString)   -  person Vivek Gajbe    schedule 14.12.2016


Ответы (1)


Ошибка была из-за отсутствия перевода, как предположил Тимур Берникович.

Предполагается, что NSLocalizedString возвращает ключ в случае отсутствия перевода, но он появляется в случае преобразования в NSAttributedString, строка становится прописной.

Помещение правильного перевода в Localizable.string и вызов ключа устранили проблему.

person thibaut noah    schedule 14.12.2016