Localization with Parameter missing some String data

Viewed 28

I created a localisation file and it needed one string parameter

static var forget_title: String { 
return  NSLocalizedString("forget_title", value: "Forget \"%@\"?", comment: "forget title") 
}

localizable english file is having -

"forget_title" = "Forget \"%@\"?";

When trying to use it -

let name = "XYZ"
let bannerHeader = String(format: .forget_title, name)
print(bannerHeader)

result - Forget "XYZ

expected - Forget "XYX"?

So it missing some string Data

Additional Data -

let string = "hello \"%@\"?"
let someString = String(format: string, "test")
        
let newString = "hello %@?"
let someOtherString = String(format: newString, "\"test\"")
let bannerHeader = String(format: .forget_title, networkName)
print("Header - \(String.forget_title)")
print("Header - \(someString)")
print("Header - \(someOtherString)")
print("Header - \(bannerHeader)")

But if i print bannerHeader first as bellow -

print("Header - \(bannerHeader)")
print("Header - \(String.forget_title)")
print("Header - \(someString)")
print("Header - \(someOtherString)")

None of the below print statement result is shown in Xcode console. using xcode - 13.4, swift - Swift 5

1 Answers

As per @Sweeper suggestion, there were hidden characters in name property - "XYZ\0\0\0\0\0\0"

So used -

let name = name.filter { $0.isLetter }
let bannerHeader = String(format: .forget_title, name)
print("Header - (bannerHeader)"

Now getting Expected result - Forget "XYX"?

Related