JasperReports-এ text translation এবং text formatting ব্যবহার করে আপনি আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) সমর্থন করতে পারেন, যা বিভিন্ন ভাষায় রিপোর্ট তৈরি এবং প্রদর্শন করতে সহায়ক। এছাড়াও, text formatting ব্যবহার করে আপনি রিপোর্টে টেক্সটের ভিজ্যুয়াল প্রদর্শন কাস্টমাইজ করতে পারেন, যেমন ফন্ট সাইজ, স্টাইল, অ্যালাইনমেন্ট ইত্যাদি।
এই নিবন্ধে, আমরা JasperReports-এ text translation এবং text formatting এর কাস্টমাইজেশন নিয়ে বিস্তারিত আলোচনা করব।
1. Text Translation in JasperReports
Text Translation হল ব্যবহারকারীর ভাষার ভিত্তিতে রিপোর্টের টেক্সট পরিবর্তন করার প্রক্রিয়া। এটি মূলত i18n এবং l10n নিশ্চিত করতে ব্যবহৃত হয়, যেমন রিপোর্টের টেক্সট ব্যবহারকারীর নির্বাচিত ভাষায় প্রদর্শন করা।
JasperReports-এ Text Translation এর জন্য কনফিগারেশন:
- Resource Bundle ব্যবহার করে, আপনি বিভিন্ন ভাষার জন্য translated text রাখতে পারেন।
- TextField বা StaticText-এ Resource Bundle থেকে প্যারামিটার পাঠানো হয়, যাতে টেক্সট ভাষা অনুযায়ী পরিবর্তিত হয়।
Step 1: Create a Resource Bundle (Properties Files)
প্রথমে আপনাকে বিভিন্ন ভাষার জন্য .properties ফাইল তৈরি করতে হবে। এই ফাইলগুলিতে আপনি রিপোর্টের বিভিন্ন স্ট্যাটিক টেক্সটগুলি ট্রান্সলেট করতে পারবেন।
English (messages_en.properties):
reportTitle=Employee Report
nameLabel=Name
ageLabel=Age
Spanish (messages_es.properties):
reportTitle=Informe de empleados
nameLabel=Nombre
ageLabel=Edad
Step 2: Define Parameters in JRXML
এখন JRXML ফাইলের মধ্যে Resource Bundle ব্যবহার করে টেক্সট যোগ করুন।
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="EmployeeReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="515" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Set the resource bundle for text translation -->
<parameter name="RESOURCE_BUNDLE" class="java.util.ResourceBundle"/>
<!-- Title -->
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="515" height="50"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[$P{RESOURCE_BUNDLE}.getString("reportTitle")]]></text>
</staticText>
</band>
</title>
<!-- Column Header -->
<columnHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="170" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[$P{RESOURCE_BUNDLE}.getString("nameLabel")]]></text>
</staticText>
<staticText>
<reportElement x="170" y="0" width="170" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[$P{RESOURCE_BUNDLE}.getString("ageLabel")]]></text>
</staticText>
</band>
</columnHeader>
<!-- Detail -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="170" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_age}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Step 3: Pass Resource Bundle and Locale in Java Code
রিপোর্টে locale এবং resource bundle পাস করার জন্য Java কোডে নিম্নলিখিত কনফিগারেশন যুক্ত করুন।
import net.sf.jasperreports.engine.*;
import java.util.*;
import java.util.Locale;
public class ReportGenerator {
public static void main(String[] args) {
try {
// Define Locale (e.g., Spanish)
Locale locale = new Locale("es", "ES");
// Load the ResourceBundle for the selected locale
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
// Parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("RESOURCE_BUNDLE", bundle);
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/report.pdf");
System.out.println("Report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Explanation:
- ResourceBundle: messages_en.properties বা messages_es.properties ফাইল থেকে অনুবাদকৃত টেক্সটগুলো পাচ্ছে।
- Locale: এই সেটিংটি নির্ধারণ করে কোন ভাষা ব্যবহার হবে (ইংরেজি, স্প্যানিশ ইত্যাদি)।
- Text Elements: JRXML ফাইলে,
$P{RESOURCE_BUNDLE}.getString("key")দিয়ে ফাইল থেকে টেক্সট অনুবাদ করা হচ্ছে।
2. Text Formatting in JasperReports
Text Formatting JasperReports-এ টেক্সটের ভিজ্যুয়াল প্রেজেন্টেশন কাস্টমাইজ করতে ব্যবহৃত হয়। আপনি টেক্সটের font, size, color, alignment, bold, italic, underline ইত্যাদি পরিবর্তন করতে পারেন।
Text Formatting Examples:
Font Customization (Font Size, Color, and Style):
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textElement fontSize="12" fontName="Arial" isBold="true" isItalic="true" isUnderline="true" forecolor="#FF5733"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
- fontSize: ফন্টের আকার (এখানে 12px)।
- fontName: ফন্টের নাম (এখানে Arial)।
- isBold: টেক্সটকে bold করার জন্য।
- isItalic: টেক্সটকে italic করার জন্য।
- isUnderline: টেক্সটকে underline করার জন্য।
- forecolor: টেক্সটের রঙ (এখানে #FF5733 রঙ ব্যবহার করা হয়েছে)।
Text Alignment and Vertical Alignment:
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
- textAlignment: টেক্সটের অনুভূতি কাস্টমাইজ করতে (যেমন: Left, Center, Right)।
- verticalAlignment: টেক্সটের উল্লম্ব অবস্থান (যেমন: Top, Middle, Bottom)।
Text Background and Border:
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textElement backcolor="#FFFF99" isBold="true"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
<textElement>
<pen lineWidth="1" lineColor="#000000"/>
</textElement>
</textField>
- backcolor: টেক্সটের ব্যাকগ্রাউন্ড রঙ কাস্টমাইজ করতে (এখানে #FFFF99 হল হালকা হলুদ)।
- pen: টেক্সটের চারপাশে সীমানা তৈরি করতে।
3. Combining Text Translation and Formatting
আপনি text translation এবং text formatting একসঙ্গে ব্যবহার করে একটি আরও উন্নত রিপোর্ট তৈরি করতে পারেন, যা ব্যবহারকারীর ভাষা এবং প্রয়োজন অনুযায়ী কাস্টমাইজড হবে।
Example of Combining Both Translation and Formatting:
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="EmployeeReport" language="java" pageWidth="595" pageHeight="842"
columnWidth="515" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<parameter name="RESOURCE_BUNDLE" class="java.util.ResourceBundle"/>
<!-- Title -->
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="515" height="50"/>
<textElement textAlignment="Center" verticalAlignment="Middle" fontSize="14" isBold="true"/>
<text><![CDATA[$P{RESOURCE_BUNDLE}.getString("reportTitle")]]></text>
</staticText>
</band>
</title>
<!-- Column Header -->
<columnHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="170" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle" fontSize="12" isBold="true"/>
<text><![CDATA[$P{RESOURCE_BUNDLE}.getString("nameLabel")]]></text>
</staticText>
<staticText>
<reportElement x="170" y="0" width="170" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle" fontSize="12" isBold="true"/>
<text><![CDATA[$P{RESOURCE_BUNDLE}.getString("ageLabel")]]></text>
</staticText>
</band>
</columnHeader>
<!-- Detail -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textElement fontSize="10" isBold="false"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="170" y="0" width="170" height="20"/>
<textElement fontSize="10" isBold="false"/>
<textFieldExpression><![CDATA[$F{employee_age}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
এখানে, আপনি translation এবং formatting একসঙ্গে ব্যবহার করছেন, যেখানে রিপোর্টের শিরোনাম, কলাম হেডার এবং ডেটার ফরম্যাটিং সবই প্যারামিটার এবং ভাষার উপর ভিত্তি করে কাস্টমাইজড।
- Text Translation এবং Text Formatting JasperReports-এ আন্তর্জাতিকীকরণ এবং স্থানীয়করণ সক্ষম করতে ব্যবহৃত হয়।
- আপনি ResourceBundle ব্যবহার করে বিভিন্ন ভাষায় টেক্সট ট্রান্সলেট করতে পারেন এবং font, size, alignment,
color, bold, italic, underline ইত্যাদি ব্যবহার করে টেক্সট ফরম্যাট করতে পারেন।
- এই দুইটি ফিচার একসঙ্গে ব্যবহার করে আপনি আন্তর্জাতিকীকরণ এবং স্থানীয়করণ নিশ্চিত করতে পারেন, যা ব্যবহারকারীদের জন্য আরও উন্নত এবং কাস্টমাইজড রিপোর্ট তৈরি করতে সহায়ক।
Read more