Go (Golang) में अंतर्राष्ट्रीयकरण (i18n): go-i18n लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) में go-i18n लाइब्रेरी के साथ अंतर्राष्ट्रीयकरण (i18n)

अंतर्राष्ट्रीयकरण (i18n) सॉफ़्टवेयर को इस तरह डिज़ाइन करने की प्रक्रिया है कि उसे स्रोत कोड में बदलाव किए बिना विभिन्न भाषाओं और क्षेत्रों के लिए आसानी से अनुकूलित किया जा सके। Go (Golang) भाषा में i18n लागू करने के लिए सबसे लोकप्रिय और शक्तिशाली लाइब्रेरी go-i18n है। यह लाइब्रेरी डेवलपर्स को अनुवाद प्रबंधित करने, एकाधिक रूपों (pluralization) को सपोर्ट करने और संदर्भ के साथ काम करने के लिए सुविधाजनक टूल प्रदान करती है।

इस लेख में, हम विस्तार से जानेंगे कि अपने Go एप्लिकेशन को अंतर्राष्ट्रीयकृत करने के लिए go-i18n का उपयोग कैसे करें: इंस्टॉलेशन से लेकर पूर्ण लोकलाइज़ेशन सिस्टम बनाने तक।

go-i18n लाइब्रेरी की स्थापना

go-i18n के साथ शुरुआत करने के लिए, Go डिपेंडेंसी मैनेजर का उपयोग करके पैकेज इंस्टॉल करें:

go get github.com/nicksnyder/go-i18n/v2/i18n

आपको अनुवाद फ़ाइलों को पार्स करने के लिए एक पैकेज (जैसे JSON या YAML) की भी आवश्यकता होगी:

go get github.com/nicksnyder/go-i18n/v2/i18n/bundle
go get github.com/nicksnyder/go-i18n/v2/i18n/localizer

लोकेल फ़ाइलों की संरचना

go-i18n लाइब्रेरी JSON, YAML या TOML फ़ॉर्मेट में अनुवाद संग्रहीत करने का समर्थन करती है। प्रत्येक भाषा के लिए अलग फ़ाइलें बनाने की अनुशंसा की जाती है। डायरेक्टरी संरचना का उदाहरण:

locales/
  active.en.json   # अंग्रेज़ी भाषा
  active.hi.json   # हिंदी भाषा
  active.fr.json   # फ़्रेंच भाषा

अनुवाद फ़ाइल का उदाहरण (active.en.json)

एक संदेश और एकाधिक रूपों के समर्थन के साथ अंग्रेज़ी भाषा के लिए फ़ाइल बनाएं:

{
  "hello_world": {
    "other": "Hello, World!"
  },
  "messages_count": {
    "one": "You have {{.Count}} new message.",
    "other": "You have {{.Count}} new messages."
  }
}

अनुवाद फ़ाइल का उदाहरण (active.hi.json)

हिंदी भाषा के लिए समान फ़ाइल, एकाधिक रूपों के नियमों को ध्यान में रखते हुए:

{
  "hello_world": {
    "other": "नमस्ते, दुनिया!"
  },
  "messages_count": {
    "one": "आपके पास {{.Count}} नया संदेश है।",
    "other": "आपके पास {{.Count}} नए संदेश हैं।"
  }
}

कोड में आरंभीकरण और उपयोग

अब Go में कोड लिखें जो अनुवाद फ़ाइलों को लोड करता है और चयनित भाषा के आधार पर संदेश प्रदर्शित करने के लिए उनका उपयोग करता है।

package main

import (
    "fmt"
    "github.com/nicksnyder/go-i18n/v2/i18n"
    "golang.org/x/text/language"
)

func main() {
    // बंडल (अनुवाद भंडार) बनाएं
    bundle := i18n.NewBundle(language.English)
    bundle.RegisterUnmarshalFunc("json", json.Unmarshal)

    // अनुवाद फ़ाइलें लोड करें
    bundle.MustLoadMessageFile("locales/active.en.json")
    bundle.MustLoadMessageFile("locales/active.hi.json")

    // हिंदी भाषा के लिए लोकलाइज़र बनाएं
    localizer := i18n.NewLocalizer(bundle, language.Hindi.String())

    // सरल संदेश के साथ उदाहरण
    helloMsg, _ := localizer.Localize(&i18n.LocalizeConfig{
        MessageID: "hello_world",
    })
    fmt.Println(helloMsg) // आउटपुट: नमस्ते, दुनिया!

    // एकाधिक संख्याओं के साथ उदाहरण
    for _, count := range []int{1, 2, 5, 10} {
        msg, _ := localizer.Localize(&i18n.LocalizeConfig{
            MessageID: "messages_count",
            PluralCount: count,
            TemplateData: map[string]interface{}{
                "Count": count,
            },
        })
        fmt.Println(msg)
    }
}

एकाधिक रूपों का समर्थन (Pluralization)

go-i18n की प्रमुख विशेषताओं में से एक एकाधिक रूपों का सही प्रबंधन है। लाइब्रेरी Unicode CLDR (Common Locale Data Repository) नियमों का उपयोग करती है, जो विभिन्न भाषाओं में शब्दों को सही ढंग से विभक्त करने की अनुमति देती है।

अनुशंसाएँ