FXML ফাইলের সাথে ResourceBundle Binding

JavaFX এবং Swing এ i18n Support - জাভা ইন্টারন্যাশনালাইজেশন (Java Internalization) - Java Technologies

242

JavaFX-এ FXML ফাইলের সাথে ResourceBundle Binding ব্যবহার করে আপনি বিভিন্ন ভাষায় ইউজার ইন্টারফেস (UI) উপাদানগুলি কাস্টমাইজ করতে পারেন। এতে আপনি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় সহজে স্থানিকীকরণ (localization) করতে পারবেন। FXML একটি XML ভিত্তিক মার্কআপ ল্যাঙ্গুয়েজ যা JavaFX UI ডিজাইন করার জন্য ব্যবহৃত হয় এবং ResourceBundle Java এ আন্তর্জাতিককরণের জন্য ব্যবহৃত হয়।

FXML ফাইলের সাথে ResourceBundle Binding:

JavaFX এ FXML ফাইলের মাধ্যমে UI উপাদানগুলোর স্ট্রিং কনটেন্ট এবং অন্যান্য তথ্য নির্ধারণ করা হয়। এই কন্টেন্টগুলো স্থানিক (locale-specific) হতে পারে, যেমন ভাষা বা অঞ্চলের উপর ভিত্তি করে।

এই উদাহরণে, আমরা দেখবো কিভাবে FXML ফাইলের মাধ্যমে ResourceBundle ব্যবহার করে একটি মাল্টিলিঙ্গুয়াল JavaFX অ্যাপ্লিকেশন তৈরি করা যায়।

১. FXML ফাইল তৈরি করা

প্রথমে, একটি FXML ফাইল তৈরি করতে হবে যেখানে ইউজার ইন্টারফেসের উপাদানগুলি থাকবে। এখানে আমরা দুটি Label ব্যবহার করব যা greeting এবং farewell বার্তা প্রদর্শন করবে।

sample.fxml:

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Label?>

<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.MainController">
    <Label fx:id="greetingLabel" text="%greeting" />
    <Label fx:id="farewellLabel" text="%farewell" />
</VBox>

এখানে, %greeting এবং %farewell হচ্ছে ResourceBundle থেকে পাওয়া স্ট্রিংগুলির রেফারেন্স।

২. ResourceBundle তৈরি করা

ResourceBundle ব্যবহার করে FXML ফাইলের স্ট্রিংগুলি বিভিন্ন ভাষায় কাস্টমাইজ করা যেতে পারে। আপনি প্রতিটি ভাষার জন্য আলাদা .properties ফাইল তৈরি করবেন, যেমন বাংলা এবং ইংরেজি।

messages_en.properties (ইংরেজি ভাষার জন্য):

greeting=Welcome
farewell=Goodbye

messages_bn.properties (বাংলা ভাষার জন্য):

greeting=স্বাগতম
farewell=বিদায়

৩. Java কোডে ResourceBundle এবং FXML Binding সেটআপ করা

এখন, আপনার Java ক্লাসে FXML ফাইলটি লোড এবং ResourceBundle বেঁধে (bind) সেট করতে হবে।

Main.java (Java Application Class):

package com.example;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.util.Callback;

import java.util.Locale;
import java.util.ResourceBundle;

public class Main extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        // কাস্টম Locale সেট করা (বাংলা ভাষার জন্য)
        Locale locale = new Locale("bn", "BD");  // "bn" বাংলা, "BD" বাংলাদেশ
        
        // ResourceBundle লোড করা
        ResourceBundle resourceBundle = ResourceBundle.getBundle("messages", locale);

        // FXML লোড করা এবং ResourceBundle সেট করা
        FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
        loader.setResources(resourceBundle);
        
        // Scene তৈরি এবং স্টেজে সেট করা
        stage.setScene(new Scene(loader.load()));
        stage.setTitle("JavaFX Internationalization");
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}

৪. Controller ক্লাস তৈরি করা

MainController.java ক্লাসটি FXML ফাইলের মধ্যে লেবেলগুলিকে নিয়ন্ত্রণ করবে।

package com.example;

import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class MainController {

    @FXML
    private Label greetingLabel;

    @FXML
    private Label farewellLabel;

    public void initialize() {
        // FXML থেকে গ্রিটিং এবং ফেয়ারওয়েল লেবেলস ব্যান্ডিং করা হবে
    }
}

৫. FXML ফাইলের সাথে ResourceBundle Binding:

  • যখন আপনি অ্যাপ্লিকেশনটি চালাবেন, FXML লোডিংয়ের সময় FXMLLoader setResources() মেথড দিয়ে কাস্টম ResourceBundle সেট করবে।
  • এর মাধ্যমে, FXML ফাইলের %greeting এবং %farewell ট্যাগগুলো ResourceBundle থেকে পাঠানো স্ট্রিংগুলির মাধ্যমে প্রতিস্থাপিত হবে।
  • কাস্টম Locale ব্যবহার করে আপনি ভাষা পরিবর্তন করতে পারবেন।

৬. অ্যাপ্লিকেশন চালানো

আপনি যদি messages_bn.properties ফাইল ব্যবহার করেন, তাহলে বাংলা ভাষায় বার্তা দেখাবে। এবং যদি messages_en.properties ফাইল ব্যবহার করেন, তাহলে ইংরেজি ভাষায় বার্তা দেখাবে।

এই পদ্ধতিতে, JavaFX FXML ফাইলের সাথে ResourceBundle বেঁধে (bind) আপনি মাল্টিলিঙ্গুয়াল UI তৈরি করতে পারেন। FXML এবং ResourceBundle এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে স্থানিক (locale-specific) এবং বিভিন্ন ভাষায় কাস্টমাইজড করতে সক্ষম হবেন।

Content added By
Promotion

Are you sure to start over?

Loading...