Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan rangka kerja Gin untuk melaksanakan pengantarabangsaan dan fungsi sokongan berbilang bahasa

Gunakan rangka kerja Gin untuk melaksanakan pengantarabangsaan dan fungsi sokongan berbilang bahasa

WBOY
WBOYasal
2023-06-23 11:07:181281semak imbas

Dengan perkembangan globalisasi dan popularisasi Internet, semakin banyak laman web dan aplikasi mula berusaha untuk mencapai pengantarabangsaan dan fungsi sokongan berbilang bahasa untuk memenuhi keperluan kumpulan orang yang berbeza. Untuk merealisasikan fungsi ini, pembangun perlu menggunakan beberapa teknologi dan rangka kerja termaju. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan pengantarabangsaan dan keupayaan sokongan berbilang bahasa.

Rangka kerja Gin ialah rangka kerja web ringan yang ditulis dalam bahasa Go. Ia cekap, mudah digunakan dan fleksibel, dan telah menjadi rangka kerja pilihan bagi banyak pembangun. Selain itu, rangka kerja Gin juga menyediakan beberapa fungsi dan alatan yang berguna, termasuk penghalaan, perisian tengah, pengesahan parameter, pemprosesan permintaan dan pemprosesan tindak balas, dsb.

Pengantarabangsaan dan sokongan berbilang bahasa bermakna tapak web atau aplikasi yang sama boleh menyokong berbilang versi bahasa untuk lebih memenuhi keperluan pengguna di wilayah dan latar belakang bahasa yang berbeza. Berikut akan memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan fungsi ini.

Pertama, kita perlu menyediakan fail berbilang bahasa. Dalam rangka kerja Gin, pakej i18n boleh digunakan untuk melaksanakan pengantarabangsaan dan fungsi sokongan berbilang bahasa. Kami boleh menyusun perbendaharaan kata semua bahasa dalam satu folder, menggunakan nama fail yang berbeza untuk setiap versi bahasa. Contohnya, nama fail versi Inggeris ialah en-US.ini, nama fail versi Cina ialah zh-CN.ini, nama fail versi Jepun ialah ja-JP.ini, dsb.

Seterusnya, kita perlu menambah kod yang berkaitan dalam rangka kerja Gin. Pertama, semasa fasa permulaan, kita perlu memuatkan fail berbilang bahasa. Anda boleh menambah kod berikut pada fail main.go:

import (
  "github.com/gin-gonic/gin"
  "github.com/gin-gonic/contrib/i18n"
)

func main() {
  r := gin.Default()

  // 初始化多语言设置
  i18n.SetMessage("en-US", "path/to/en-US.ini")
  i18n.SetMessage("zh-CN", "path/to/zh-CN.ini")
  i18n.SetMessage("ja-JP", "path/to/ja-JP.ini")

  // 添加中间件,用于设置当前语言版本
  r.Use(i18n.Handler())

  // 添加路由和处理函数
  r.GET("/", func(c *gin.Context) {
    locale := i18n.Locale(c)
    message := i18n.GetMessage(locale, "hello")
    c.String(200, message)
  })

  r.Run(":8080")
}

Dalam kod di atas, dua pakej pertama kali diperkenalkan: gin dan i18n. Kemudian semasa fasa permulaan, kami menggunakan fungsi i18n.SetMessage() untuk memuatkan fail berbilang bahasa. Di sini, kami memuatkan fail dalam tiga bahasa: Inggeris, Cina, Jepun. Seterusnya, kami menambah tetapan berbilang bahasa pada middleware menggunakan fungsi i18n.Handler(), yang secara automatik mengesan versi bahasa semasa pada setiap permintaan. Akhir sekali, kami mendapat versi bahasa semasa dan mesej yang sepadan dalam fungsi pengendali utama, dan mengembalikan mesej kepada klien sebagai respons.

Dalam kod di atas, kami menggunakan fungsi GetMessage() untuk mendapatkan mesej Pelaksanaannya adalah seperti berikut:

func GetMessage(locale, key string) string {
  if messages, ok := Bundles[locale]; ok {
    if message, ok := messages[key]; ok {
      return message
    }
  }
  return key
}

Dalam fungsi GetMessage(), kami mula-mula mengesan sama ada bahasa semasa. versi dimuatkan. Jika ia dimuatkan, cuba dapatkan mesej yang sepadan. Jika mesej ditemui, mesej dikembalikan jika tidak, nilai kunci itu sendiri dikembalikan; Sebabnya adalah supaya apabila kita cuba mendapatkan mesej yang tidak wujud, kita boleh mengembalikan nilai lalai untuk memastikan aplikasi berfungsi dengan baik.

Berikut ialah contoh yang menunjukkan cara untuk memaparkan templat dalam persekitaran berbilang bahasa:

func main() {
  r := gin.Default()
  r.Use(i18n.Handler())

  // 加载模板文件
  tmpl := template.Must(template.ParseFiles("path/to/template.tmpl"))
  
  // 添加路由和处理函数
  r.GET("/", func(c *gin.Context) {
    locale := i18n.Locale(c)
    message := i18n.GetMessage(locale, "hello")
    tmpl.Execute(c.Writer, struct{ Message string }{ Message: message })
  })

  r.Run(":8080")
}

Dalam kod di atas, kami menggunakan fungsi Must() untuk cuba menghuraikan fail templat. Jika penghuraian gagal, program akan keluar terus jika tidak, kami akan mengikat perisian tengah berbilang bahasa yang ditambahkan ke laluan dan memanggil fungsi GetMessage() dalam fungsi pemprosesan untuk mendapatkan mesej. Akhir sekali, gunakan fungsi Execute() untuk memaparkan templat, menghantar mesej sebagai parameter kepada templat.

Dalam artikel ini, kami memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan pengantarabangsaan dan fungsi sokongan berbilang bahasa. Kita boleh mencapai fungsi ini dengan memuatkan fail berbilang bahasa dan menggunakan pakej i18n. Selain itu, kami menunjukkan cara menggunakan templat dalam berbilang bahasa. Jika tapak web atau aplikasi anda perlu menyokong versi bahasa yang berbeza, maka menggunakan rangka kerja Gin ialah pilihan yang baik.

Atas ialah kandungan terperinci Gunakan rangka kerja Gin untuk melaksanakan pengantarabangsaan dan fungsi sokongan berbilang bahasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn