Многострочные строки в Localizable.strings

У меня есть следующее в быстром файле, который загружается при первом использовании приложения:

        let descriptions = [NSLocalizedString("""
                                                 Hyperpolyglot will help you learn words and phrases in
                                                 up to 10 languages. Add languages, words and phrases
                                                 with the aid of phrase books. Learn a word in many
                                                 languages while learning it in one.

                                                 Use your native keyboard and transliteration, if you just
                                                 want to speak a language. Take it up a level! Switch
                                                 keyboard languages, and also learn to read and write.
                                              """, comment: "Welcome screen 1"),
                            NSLocalizedString("""
                                                 Associate a word with an image or drawing. Grab images
                                                 from your favourite search engine, or make your own line
                                                 drawings.

                                                 Do you really know the word? Answer foreign words
                                                 which have missing letters.

                                                 Tap the lightbulb if you need hints.
                                              """, comment: "Welcome screen 2"),
                            NSLocalizedString("""
                                                 Buy the full copy to add unlimited words and unlock the
                                                 drawing canvas!
                                              """, comment: "Welcome screen 3")]

Затем я пытаюсь создать немецкую локализацию в localizable.strings (немецкий):

/* Welcome screen 1 */
"""
   Hyperpolyglot will help you learn words and phrases in
   up to 10 languages. Add languages, words and phrases
   with the aid of phrase books. Learn a word in many
   languages while learning it in one.

   Use your native keyboard and transliteration, if you just
   want to speak a language. Take it up a level! Switch
   keyboard languages, and also learn to read and write.
""" = """
   Hyperpolyglot hilft Ihnen, Wörter und Sätze in bis zu
   10 Sprachen zu lernen. Fügen Sie Sprachen, Wörter und
   Sätze mit Hilfe von Sprachführern hinzu. Lernen Sie ein
   Wort in vielen Sprachen, während Sie es in einer lernen.

   Verwenden Sie Ihre native Tastatur und Transliteration,
   wenn Sie nur eine Sprache sprechen möchten. Bring es auf
   ein Level! Wechseln Sie die Tastatursprachen und lernen
   Sie auch, zu lesen und zu schreiben.
"""

Но я получаю следующую ошибку при компиляции:

Ошибка чтения: не удалось проанализировать список свойств, так как входные данные были в недопустимом формате.

Можно ли вообще использовать многострочные строки в локализуемых файлах?

Я хотел бы воспользоваться возможностью форматирования абзаца многострочных строк при локализации своих строк.


person Tirna    schedule 03.07.2021    source источник
comment
Возможно полезно: stackoverflow.com/q/51478373/1187415.   -  person Martin R    schedule 03.07.2021
comment
Как намекает Мартин в конце своего ответа, вы должны использовать короткие коды для ключей, а не фактический текст. В файле Strings сделайте что-то вроде "welcomescreen.label1" = "your text";, затем "welcomescreen.label2" = "some other text"; и т. д. для всех языков, включая базовый, и используйте этот закодированный ключ с NSLocalizedString вместо реального текста.   -  person Eric Aya    schedule 04.07.2021


Ответы (1)


Похоже, вы могли пропустить ; в конце объявления строки, и вам нужно использовать только 1 " при определении многострочных строк в локализуемом файле, поэтому попробуйте изменить его на:

/* Welcome screen 1 */
"
Hyperpolyglot will help you learn words and phrases in
up to 10 languages. Add languages, words and phrases
with the aid of phrase books. Learn a word in many
languages while learning it in one.

Use your native keyboard and transliteration, if you just
want to speak a language. Take it up a level! Switch
keyboard languages, and also learn to read and write.
" = "
Hyperpolyglot hilft Ihnen, Wörter und Sätze in bis zu
10 Sprachen zu lernen. Fügen Sie Sprachen, Wörter und
Sätze mit Hilfe von Sprachführern hinzu. Lernen Sie ein
Wort in vielen Sprachen, während Sie es in einer lernen.

Verwenden Sie Ihre native Tastatur und Transliteration,
wenn Sie nur eine Sprache sprechen möchten. Bring es auf
ein Level! Wechseln Sie die Tastatursprachen und lernen
Sie auch, zu lesen und zu schreiben.
";
person Ayrton CB    schedule 03.07.2021
comment
Добавлено, но то же сообщение об ошибке! - person Tirna; 03.07.2021
comment
Хм, хорошо, только что обновил свой ответ, я считаю, что вам не нужно использовать три, вы можете просто использовать 1 - person Ayrton CB; 03.07.2021
comment
Это работает с вашим предложением, но только если я также использую одинарные кавычки в исходном файле экрана приветствия. Это означает, что текст теряет форматирование абзаца! - person Tirna; 03.07.2021