2016-08-27 2 views
1

Я хочу, чтобы перевести эту строку с помощью plurar stringdict в стриже для прошивкиКак добавить регулярные строковые заполнители переведенного множественного числа .stringdict в быстрых КСНО

  • остается на% 1 $ @
  • пребывания в% 1 $ @

Использование простого множественного числа без PLACEHOLDERS работ, благодаря this question Но когда я добавить строку заполнитель я получаю сбой при доступе к нему.

В регулярные множественном работают, используя следующий XML:

<dict> 
<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected]</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps at your place</string> 
    <key>other</key> 
    <string>Sleep at your place</string> 
</dict> 
</dict> 

И используя этот быстрый код ссылки на множественное число выше без строки заполнителем:

let format = NSLocalizedString("key_to_plural_above", comment: "") 
let label = String.localizedStringWithFormat(format, kidsIds.count) 

Проблема заключается в том , когда я добавьте строковый заполнитель в перевод. Я получаю сообщение об ошибке, когда я пытаюсь его прочитать. Ниже xml генерируется инструментом перевода (lokalise), поэтому я предполагаю, что это правильно.

<dict> 
<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected]</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps at %[email protected]</string> 
    <key>other</key> 
    <string>Sleep at %[email protected]</string> 
</dict> 

Используя этот быстрый код, чтобы получить множественное число выше, я получаю неизвестные аварии без StackTrace:

let format = NSLocalizedString("key_to_plural_above", comment: "") 
let label = String.localizedStringWithFormat(format, kidsIds.count, "Name") 

ответ

2

Позиционных параметры n$ является один основой, поэтому в

let label = String.localizedStringWithFormat(format, kidsIds.count, "Name") 

"Name" - второй параметр, и вы ссылаетесь на него с %[email protected]:

<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected]</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps at %[email protected]</string> 
    <key>other</key> 
    <string>Sleep at %[email protected]</string> 
</dict> 

В коде %[email protected] относится к первому аргументу kidsIds.count. Это не строка, которая ведет к сбою.

Альтернативно, поместите его в NSStringLocalizedFormatKey:

<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected] at %@</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps</string> 
    <key>other</key> 
    <string>Sleep</string> 
</dict> 
+0

Спасибо! На андроиде множественное число не учитывается как помеха, таким образом, путаница. Это решение приведет к тому, что код Android станет нулевым, как первый placeholder..не идеален, но работает! –

Смежные вопросы