Batch allows you to set a custom region or a custom language that will override the value detected by the SDK. By default, Batch collects the language and the country of your users' devices.
Setting a custom region/language is useful if:
You don't want to use the values detected by Batch.
Your users can choose their own language or region for localization purposes.
Custom locale
Writing custom region/language
BatchProfile.editor { editor in
try? editor.setLanguage("en") // Language must be 2 chars, lowercase, ISO 639 formatted
try? editor.setRegion("US") // Region must be 2 chars, uppercase, ISO 3166 formatted
// If you prefer to use BatchProfile.editor() with local variable instead of usiong a closure,
// remember to use editor.save() afterwards so that the changes are taken into account.
}
[BatchProfile editWithBlock:^(BatchProfileEditor * _Nonnull editor) {
[editor setRegion:@"en" error:nil]; // Language must be 2 chars, lowercase, ISO 639 formatted
[editor setRegion:@"US" error: nil]; // Region must be 2 chars, uppercase, ISO 3166 formatted
// If you prefer to use [BatchProfile editor] instead of `editWithBlock`,
// remember to use [editor save] afterwards so that the changes are taken into account.
}];
If you call editor method before startWithAPIKey it will return nil. You should always call it after you started the SDK, and check nullity to be safe.
Reading custom region/language
Keep in mind that the data returned is only about your installation and not your Profile since it may be updated from another source.
// This is how you retrieve your custom values. Values are nil by default.
let language = BatchUser.language()
let region = BatchUser.region()
// This is how you retrieve your custom values. Values are nil by default.
NSString *language = [BatchUser language];
NSString *region = [BatchUser region];