Мы наконец получили вокруг реализации локализации отчета. Загрузка Crystal Reports уже является самой отстающей/наихудшей частью пользовательского интерфейса в нашем приложении, поэтому мы хотели избежать влияния производительности. Другая идея, которая информировала наше решение, заключалась в том, что переводы не будут меняться в рамках отгруженной версии.
Мы разработали приложение, использующее API Crystal Reports (2008 - так что нет RDC) и работает в два этапа.
Первый этап - очистить весь текст и вывести его на английский .resx-файл. Самая жесткая часть этого заключается в выявлении переводного текста внутри функций и замене встроенных полей токенами, указывающими «не переводить».
После того, как локализованные версии resx вернутся, вторая фаза приложения принимает каждый отчет вместе с каждым resx и сохраняет новые отчеты с замененным на английский язык переведенным текстом. Это также позволило нам отключить шрифты только в японских отчетах MS Gothic, тем самым избегая необходимости лицензировать «универсальный» шрифт. Японские символы в «универсальных» шрифтах (например, Arial Unicode MS) имеют тенденцию выглядеть как дерьмо.
Crystal API является византийским, и вам нужно быть осторожным с краевыми случаями вокруг обнаружения переводимых строк внутри функций и встроенных полей.Будьте осторожны со встроенными полями, такими как PageNofM, они не заключены в фигурные скобки (не говоря уже о том, что вы должны заменить это полем {{}} {поле}, поэтому «страница» и «из» могут быть переведены). Один указатель использует контроллеры для замены существующих элементов клонированными/модифицированными копиями, вы не можете просто изменять текстовое содержимое элементов на месте. Удачи, если вы идете по этому маршруту, но в итоге мы считаем, что это лучший вариант.
# 2 будет с помощью RDC просканировать каждое текстовое поле и заменить с локализованным текстом? –
Да - Я никогда не делал этого, хотя я не уверен, какие головные боли участвуют. –
Что вы думаете о UFL, который возвращает локализованные строки? Потребовал бы, чтобы из каждого поля метки была проблема с производительностью? –