Лучшие практики ICU Resource bundle - PullRequest
       40

Лучшие практики ICU Resource bundle

0 голосов
/ 20 сентября 2011

Мне было интересно узнать, как лучше всего писать и в основном поддерживать пакет ресурсов ICU.Точнее говоря, лучший способ обработки повторяющихся строк.

Например, скажем, у вас есть следующий ресурсный пакет:

root:table {
  remove_page:string { "Remove this page" }
  remove_widget:sring { "Remove this widget" }
}

Конечно, это минимально, но я предполагаю большой проект с большим количествомпохожих строк и «подстолов».Будет ли лучше держать это так, а именно.использование определенной строки для каждого действия в коде, или лучше объединить строки, например, следующим образом:

root:table {
  remove_this:string { "Remove this " }
  page:string { "page" }
  widget:string { "widget" }
}

Будучи любителем, у меня пока нет большого опыта работы с пакетами ресурсов ICU, но если они построены правильно, они должны быть очень удобны для i18n и обслуживания, поэтому возникает вопрос.

Большое спасибо заранее за ваше время.

Редактировать: Информация ICU о формате набора ресурсов - Эти форматы также могут быть полезны при структурировании пакета ресурсов, например, массивы занимают меньше памяти, чем таблицы.Конечно, это «безымянные», что может быть огромной болью для чтения кода.

1 Ответ

1 голос
/ 22 сентября 2011

См. Форматирование сообщений MessageFormat :: format () с именованными аргументами .Вы не хотите быть «объединяющими» строки.Вместо этого вы можете сделать что-то вроде этого:

root {
  remove_this  { "Remove this {thing}." }
  page { "page" }
  widget { "widget" }
}

Обратите внимание, что из-за правил на разных языках может быть проще перевести «Remove: {thing}», потому что слово «this» может потребоватьсяв зависимости от пола, регистра, номера и т. д., см. SelectFormat .

...