Я понял это, и на основании проведенного исследования я думаю, что это единственный способ сделать это.
Я почти уверен, что символ не меняется намеренно. Следуя логике, согласно которой отчет используется только для одного типа валюты, даже если формат будет меняться в зависимости от культуры, фактическое значение валюты будет тем же. 100 долларов - это всегда 100 долларов, независимо от того, на каком языке просматривается отчет. Таким образом, отчет не должен беспокоиться о преобразовании данных в другое количество.
В моем приложении данные хранятся как просто числа, а валюта определяется другими значениями в базе данных и кодом.
Но чтобы добраться до сути, я указал локаль отчета на основе кода в моем вопросе. Затем, чтобы изменить валюту, я должен был перейти в дизайнер отчетов и отформатировать вопросы о валюте.
На вкладке «Число» редактора форматов убедитесь, что установлен флажок «Отображать символ валюты». Затем нажмите кнопку «Настроить» и вкладку «Символ валюты». Перейдите в Мастерскую формул для символа валюты и введите следующий код:
Local StringVar locale := LowerCase(ContentLocale);
if locale = "fr_fr" then
"€"
else if (locale = "en_gb") then
"£"
else if(locale = "en_us" OR locale = "en_ca") then
"$"
else
""
Это просто пример языков, которые я поддерживаю, но сейчас, но я думаю, что это понятно. Также обратите внимание, что Crystal использует подчеркивания в идентификаторах локали вместо дефисов.
Отчасти логичный ответ, но, надеюсь, это поможет кому-то еще.