Multi-line strings in objective-c localized strings file
Asked Answered
C

1

34

I have a template for an email that I've put in a localized strings file, and I'm loading the string with the NSLocalizedString macro.

I'd rather not make each line its own string with a unique key. In Objective-C, I can create a human-readable multiline string like so:

NSString *email = @"Hello %@,\n"
    "\n"
    "Check out %@.\n"
    "\n"
    "Sincerely,\n"
    "\n"
    "%@";

I tried to put that in a .strings file with:

"email" = "Hello %@,\n"
    "\n"
    "Check out %@.\n"
    "\n"
    "Sincerely,\n"
    "\n"
    "%@";

But I get the following error at build time:

CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary.
email-template.strings: Unexpected character " at line 1
Command /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copystrings failed with exit code 1

I can concatenate it all together like this:

"email" = "Hello %@,\n\nCheck out %@.\n\nSincerely,\n\n%@";

But that will be a mess to maintain, particularly as the email gets longer.

Is there a way to do this in a localized strings file? I've already tried adding backslashes at the end of each line, to no avail.

Comitia answered 3/6, 2010 at 18:18 Comment(0)
I
71

Just use the new lines directly.

"email" = "Hello %@,

Check out %@.

Sincerely,

%@";
Inversely answered 3/6, 2010 at 18:20 Comment(2)
But then, the colors of the text editor won't show correctly (the string is not completely in one color)Frenchy
The string does seem to be completely in one colour these days :)Brannan

© 2022 - 2024 — McMap. All rights reserved.