Is there a way to have one base localizable.strings file for multiple targets within a project, and also have a second localizable.string file for each target that will override
For Swift 4 users that come across this issue...
func localizedString(
for key: String, tableName: String = "OverrideLocalizable",
bundle: Bundle = .main, comment: String = ""
) -> String {
let defaultValue = NSLocalizedString(key, comment: comment)
return NSLocalizedString(
key, tableName: tableName, bundle: bundle,
value: defaultValue, comment: comment
)
}
Here is the solution I found:
NSString *PSILocalizedString(NSString *key, NSString *comment)
{
return NSLocalizedStringWithDefaultValue(key,
@"OverrideLocalizable",
[NSBundle mainBundle],
NSLocalizedString(key, nil),
comment);
}
What this will do is search a file called OverrideLocalizable.strings
for the key
. If the value for key
is not found in OverrideLocalizable.strings
, it will search localizable.strings
for key
. NSLocalizedString(key, nil)
by default will search localizable.strings
Pretty simple and elegant solution