Jasper Reports не может использовать resourceBundle - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу применить интернационализацию в своем отчете о яшме.Может кто-нибудь сказать мне, что я делаю неправильно?

У меня есть два пакета ресурсов:

balance_de.properties

balance_en.properties

Мой пакет ресурсов выглядит следующим образом:

mainTitle = title

primaryTitle = вторичный заголовок

Я загружаю комплект ресурсов:

HashMap<String, Object> parameters = new HashMap<>();
ResourceBundle resourceBundle = ResourceBundle.getBundle("balance", new Locale("de", "DE"));
parameters.put("REPORT_RESOURCE_BUNDLE", resourceBundle);

В jrxml отчете я пытаюсь получить mainTitle значение из пакета ресурсов:

             <textField>
                <reportElement x="0" y="0" width="798" height="20" uuid="0b25b17c-b0f4-4d46-975d-ffea5c518f28"/>
                <box>
                    <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression class="java.lang.String">
                    <![CDATA[$R{mainTitle}]]>
                </textFieldExpression>
            </textField>

Однако это не работает, и я понятия не имею, почему.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

попробуйте с этим.

HashMap<String, Object> parameterMap = new HashMap<String, Object>();

parameterMap.put(JRParameter.REPORT_LOCALE, new Locale("en")); // for English

parameterMap.put(JRParameter.REPORT_LOCALE, new Locale("de")); // for German
0 голосов
/ 14 декабря 2018

Попробуй это.Кажется, мы помещаем дополнительную информацию в Map<Locale, Properties>.Вы, кажется, вместо этого набираете тип ResourceBundle.

Я заранее извиняюсь, у меня есть только этот пример, и для нас это работает, но я не могу объяснить, как именно.Вы можете дать ему шанс, однако:

    //Load bundle
    ResourceBundle bundle = null;
    try{
        bundle = ResourceBundle.getBundle(PROPERTY_BASE_NAME, locale);
    } catch (java.util.MissingResourceException e){
        //Not found, not avalable.
        globalProperties.put(locale, null);
        return;
    }

    Properties additionalProperties = new Properties();
    for(String key : bundle.keySet()){
        additionalProperties.put(key, bundle.getString(key));
    }

    //Store properties
    globalProperties.put(locale, additionalProperties);
...