mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix string fallback
This commit is contained in:
parent
7a9ce3fbe5
commit
340c063468
@ -243,7 +243,7 @@ def generate(header_path: str, implementation_path: str, data_path: str, entries
|
|||||||
formatted_accessors += '''
|
formatted_accessors += '''
|
||||||
static _FormattedString * _Nonnull getFormatted{num_arguments}(_PresentationStrings * _Nonnull strings,
|
static _FormattedString * _Nonnull getFormatted{num_arguments}(_PresentationStrings * _Nonnull strings,
|
||||||
uint32_t keyId{arguments_string}) {{
|
uint32_t keyId{arguments_string}) {{
|
||||||
NSString *formatString = getSingle(strings, strings->_idToKey[@(keyId)]);
|
NSString *formatString = getSingle(strings, strings->_idToKey[@(keyId)], nil);
|
||||||
NSArray<_FormattedStringRange *> *argumentRanges = extractArgumentRanges(formatString);
|
NSArray<_FormattedStringRange *> *argumentRanges = extractArgumentRanges(formatString);
|
||||||
return formatWithArgumentRanges(formatString, argumentRanges, @[{arguments_array}]);
|
return formatWithArgumentRanges(formatString, argumentRanges, @[{arguments_array}]);
|
||||||
}}
|
}}
|
||||||
@ -421,8 +421,8 @@ static _FormattedString * _Nonnull formatWithArgumentRanges(
|
|||||||
return [[_FormattedString alloc] initWithString:result ranges:resultingRanges];
|
return [[_FormattedString alloc] initWithString:result ranges:resultingRanges];
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString * _Nonnull getPluralizationSuffix(_PresentationStrings * _Nonnull strings, int32_t value) {
|
static NSString * _Nonnull getPluralizationSuffix(uint32_t lc, int32_t value) {
|
||||||
NumberPluralizationForm pluralizationForm = numberPluralizationForm(strings.lc, value);
|
NumberPluralizationForm pluralizationForm = numberPluralizationForm(lc, value);
|
||||||
switch (pluralizationForm) {
|
switch (pluralizationForm) {
|
||||||
case NumberPluralizationFormZero: {
|
case NumberPluralizationFormZero: {
|
||||||
return @"_0";
|
return @"_0";
|
||||||
@ -445,11 +445,15 @@ static NSString * _Nonnull getPluralizationSuffix(_PresentationStrings * _Nonnul
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString * _Nonnull getSingle(_PresentationStrings * _Nonnull strings, NSString * _Nonnull key) {
|
static NSString * _Nonnull getSingle(_PresentationStrings * _Nullable strings, NSString * _Nonnull key,
|
||||||
NSString *result = strings.primaryComponent.dict[key];
|
bool * _Nullable isFound) {
|
||||||
|
NSString *result = nil;
|
||||||
|
if (strings) {
|
||||||
|
result = strings.primaryComponent.dict[key];
|
||||||
if (!result) {
|
if (!result) {
|
||||||
result = strings.secondaryComponent.dict[key];
|
result = strings.secondaryComponent.dict[key];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!result) {
|
if (!result) {
|
||||||
static NSDictionary<NSString *, NSString *> *fallbackDict = nil;
|
static NSDictionary<NSString *, NSString *> *fallbackDict = nil;
|
||||||
static dispatch_once_t onceToken;
|
static dispatch_once_t onceToken;
|
||||||
@ -472,18 +476,31 @@ static NSString * _Nonnull getSingle(_PresentationStrings * _Nonnull strings, NS
|
|||||||
}
|
}
|
||||||
if (!result) {
|
if (!result) {
|
||||||
result = key;
|
result = key;
|
||||||
|
if (isFound) {
|
||||||
|
*isFound = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isFound) {
|
||||||
|
*isFound = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString * _Nonnull getSingleIndirect(_PresentationStrings * _Nonnull strings, uint32_t keyId) {
|
static NSString * _Nonnull getSingleIndirect(_PresentationStrings * _Nonnull strings, uint32_t keyId) {
|
||||||
return getSingle(strings, strings->_idToKey[@(keyId)]);
|
return getSingle(strings, strings->_idToKey[@(keyId)], nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString * _Nonnull getPluralized(_PresentationStrings * _Nonnull strings, NSString * _Nonnull key,
|
static NSString * _Nonnull getPluralized(_PresentationStrings * _Nonnull strings, NSString * _Nonnull key,
|
||||||
int32_t value) {
|
int32_t value) {
|
||||||
NSString *parsedKey = [[NSString alloc] initWithFormat:@"%@%@", key, getPluralizationSuffix(strings, value)];
|
NSString *parsedKey = [[NSString alloc] initWithFormat:@"%@%@", key, getPluralizationSuffix(strings.lc, value)];
|
||||||
NSString *formatString = getSingle(strings, parsedKey);
|
bool isFound = false;
|
||||||
|
NSString *formatString = getSingle(strings, parsedKey, &isFound);
|
||||||
|
if (!isFound) {
|
||||||
|
// fall back to English
|
||||||
|
parsedKey = [[NSString alloc] initWithFormat:@"%@%@", key, getPluralizationSuffix(0x656e, value)];
|
||||||
|
formatString = getSingle(nil, parsedKey, nil);
|
||||||
|
}
|
||||||
NSString *stringValue = formatNumberWithGroupingSeparator(strings.groupingSeparator, value);
|
NSString *stringValue = formatNumberWithGroupingSeparator(strings.groupingSeparator, value);
|
||||||
NSArray<_FormattedStringRange *> *argumentRanges = extractArgumentRanges(formatString);
|
NSArray<_FormattedStringRange *> *argumentRanges = extractArgumentRanges(formatString);
|
||||||
return formatWithArgumentRanges(formatString, argumentRanges, @[stringValue]).string;
|
return formatWithArgumentRanges(formatString, argumentRanges, @[stringValue]).string;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user