stackoverflow.com/questions/5130844/...

м текущем приложении у меня есть код, который отображает сообщение, например, "Обработано 5 предметов." Чтобы сохранить грамматически правильную фразу, т. Е. Должна ли она быть «5 позиций» или «5 позиций», я использую следующий код:

int numItems = 5;
NSString *myString = [[NSString alloc] initWithFormat:@"%d Item%@ Processed", numItems, (numItems == 1 ? @"" : @"s")];

Это работает отлично на данный момент. Но я локализую свое приложение и хочу убедиться, что текст грамматически корректен на всех языках, на которые я перевожу приложение. ямог сделать что-то вроде этого:

int numItems = 5;
NSString *myString = (numItems == 1 ? 
NSLocalizedStringWithTable(@"%d Item Processed", @"myApp", @"singular version") :
NSLocalizedStringWithTable(@"%d Items Processed", @"myApp", @"plural version"));

Однако не во всех языках действуют одинаковые правила работы множественного числа! Например, (простите мой очень конкретный пример здесь) на русском языке, существительные, измененные числами, заканчивающимися последней цифрой 1 (то есть 21, 31, ноне 11) взять падеж именительного падежа, числа, оканчивающиеся на 2-4, - родительный падеж единственного числа, а 5+ - падеж множественного числа. Это потребовало бы гораздо более серьезной логики для обработки того, как приумножить определенное существительное грамматически правильным образом, и эта логика не соответствовала бы английской логике. Поэтому, теоретически, я не могу иметь грамматическую логику в своем коде Objective-C, а должен иметь грамматическую логику в файле строк. Есть ли способ сделать это?Как люди переводят динамический текст для своих приложений, чтобы он оставался грамматически правильным?

Ответы на вопрос(4)

Ваш ответ на вопрос