Use raw text when localization fails

// FREEBIE
pull/1/head
Michael Kirk 8 years ago
parent 7ccb2df331
commit af8ddf7bf0

@ -49,6 +49,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (NSComparator)comparatorSortingNamesByFirstThenLast:(BOOL)firstNameOrdering; + (NSComparator)comparatorSortingNamesByFirstThenLast:(BOOL)firstNameOrdering;
+ (NSString *)formattedFullNameWithCNContact:(CNContact *)cnContact NS_SWIFT_NAME(formattedFullName(cnContact:)); + (NSString *)formattedFullNameWithCNContact:(CNContact *)cnContact NS_SWIFT_NAME(formattedFullName(cnContact:));
+ (nullable NSString *)localizedStringForCNLabel:(nullable NSString *)cnLabel;
- (CNContact *)buildCNContactMergedWithNewContact:(CNContact *)newCNContact NS_SWIFT_NAME(buildCNContact(mergedWithNewContact:)); - (CNContact *)buildCNContactMergedWithNewContact:(CNContact *)newCNContact NS_SWIFT_NAME(buildCNContact(mergedWithNewContact:));

@ -395,6 +395,27 @@ NS_ASSUME_NONNULL_BEGIN
return [mergedCNContact copy]; return [mergedCNContact copy];
} }
+ (nullable NSString *)localizedStringForCNLabel:(nullable NSString *)cnLabel
{
if (cnLabel.length == 0) {
return nil;
}
NSString *_Nullable localizedLabel = [CNLabeledValue localizedStringForLabel:cnLabel];
// Docs for localizedStringForLabel say it returns:
// > The localized string if a Contacts framework defined label, otherwise just returns the label.
// But in practice, at least on iOS11, if the label is not one of CNContacts known labels (like CNLabelHome)
// kUnlocalizedStringLabel is returned, rather than the unadultered label.
NSString *const kUnlocalizedStringLabel = @"__ABUNLOCALIZEDSTRING";
if ([localizedLabel isEqual:kUnlocalizedStringLabel]) {
return cnLabel;
}
return localizedLabel;
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -610,9 +610,7 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
phoneNumber.phoneType = OWSContactPhoneType_Mobile; phoneNumber.phoneType = OWSContactPhoneType_Mobile;
} else { } else {
phoneNumber.phoneType = OWSContactPhoneType_Custom; phoneNumber.phoneType = OWSContactPhoneType_Custom;
if (phoneNumberField.label) { phoneNumber.label = [Contact localizedStringForCNLabel:phoneNumberField.label];
phoneNumber.label = [CNLabeledValue localizedStringForLabel:phoneNumberField.label];
}
} }
[phoneNumbers addObject:phoneNumber]; [phoneNumbers addObject:phoneNumber];
} }
@ -628,9 +626,7 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
email.emailType = OWSContactEmailType_Work; email.emailType = OWSContactEmailType_Work;
} else { } else {
email.emailType = OWSContactEmailType_Custom; email.emailType = OWSContactEmailType_Custom;
if (emailField.label) { email.label = [Contact localizedStringForCNLabel:emailField.label];
email.label = [CNLabeledValue localizedStringForLabel:emailField.label];
}
} }
[emails addObject:email]; [emails addObject:email];
} }
@ -656,9 +652,7 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
address.addressType = OWSContactAddressType_Work; address.addressType = OWSContactAddressType_Work;
} else { } else {
address.addressType = OWSContactAddressType_Custom; address.addressType = OWSContactAddressType_Custom;
if (addressField.label) { address.label = [Contact localizedStringForCNLabel:addressField.label];
address.label = [CNLabeledValue localizedStringForLabel:addressField.label];
}
} }
[addresses addObject:address]; [addresses addObject:address];
} }

Loading…
Cancel
Save