Go で国際化を使用するにはどうすればよいですか?

WBOY
リリース: 2023-05-10 13:55:36
転載
1870 人が閲覧しました

グローバリゼーションの発展に伴い、より多くのユーザーを引き付けるために複数の言語をサポートする必要があるアプリケーションがますます増えています。 Go 言語で国際化を使用するにはどうすればよいですか?この記事では、Go で国際化を実現するために標準ライブラリとサードパーティ ライブラリを使用する方法を紹介します。

1. 国際化を実現するための Go 標準ライブラリ

Go 標準ライブラリには、国際化を実現するためのメソッドがいくつか用意されています。

  1. fmt.Sprintf

fmt.Sprintf は、書式設定テンプレートを使用して文字列を生成でき、多言語書式文字列をサポートします。複数言語環境では、%q を使用して文字列を出力し、文字列出力の形式が正しいことを確認できます。

サンプル コード:

package main import "fmt" func main() { name := "world" msg := fmt.Sprintf("Hello, %q!", name) fmt.Println(msg) }
ログイン後にコピー

このコードは次のように出力します: "Hello, "world"!"

  1. errors.New
# # errors.New は新しいエラーを作成し、エラー メッセージを受け取ることができます。多言語環境では、errors.New を使用して多言語のエラー メッセージを作成できます。

サンプル コード:

package main import ( "errors" "fmt" ) func main() { err := errors.New("Something went wrong") fmt.Println(err) }
ログイン後にコピー

このコードは次のように出力します:「問題が発生しました」

    time.LoadLocation
time.LoadLocationファイルからタイムゾーン情報を読み取ることができます。アプリケーションがさまざまなタイム ゾーンの日付と時刻を処理する必要がある場合は、LoadLocation メソッドを使用してタイム ゾーン情報をロードできます。

サンプル コード:

package main import ( "fmt" "time" ) func main() { loc, err := time.LoadLocation("Asia/Shanghai") if err != nil { fmt.Println(err) return } t := time.Now().In(loc) fmt.Println(t) }
ログイン後にコピー

このコードは、中国上海の現在の時刻と日付を出力します。

2. サードパーティ ライブラリを使用して国際化を実現する

標準ライブラリで提供されるメソッドに加えて、より複雑な国際化を実装するために使用できるサードパーティ ライブラリもいくつかあります。機能。

    go-i18n
go-i18n は、翻訳ファイルを整理および管理する簡単な方法を提供する国際化用の Go ライブラリです。 go-i18n を使用して、翻訳ファイル、翻訳されたテキスト、または書式設定された文字列をインポートできます。

サンプル コード:

package main import ( "fmt" "github.com/nicksnyder/go-i18n/i18n" "os" ) func main() { i18n.MustLoadTranslationFile("en-US.all.json") i18n.MustLoadTranslationFile("zh-CN.all.json") lang := i18n.NewLocalizer(i18n.NewBundle(language.English)) fmt.Println(lang.MustLocalize(&i18n.LocalizeConfig{MessageID: "hello-world"})) }
ログイン後にコピー

このコードは、en-US.all.json および zh-CN.all.json から翻訳情報をインポートし、MustLocalize を使用して正しい翻訳情報を出力します。

    gotext
gotext は、国際化のためのもう 1 つの Go ライブラリです。翻訳ファイルのバージョンを追跡し、単純な API を通じて比較する方法を提供します。テキストは翻訳されます。 。 gotext ライブラリは、.po や .json などの複数の形式の翻訳ファイルをサポートしています。

サンプル コード:

package main import ( "fmt" "github.com/leonelquinteros/gotext" "golang.org/x/text/language" ) func main() { pofile := "./locales/en_US/LC_MESSAGES/messages.po" catalog, err := gotext.ParsePOFile(pofile) if err != nil { fmt.Println(err) return } lang := language.Make("en-US") translatedText, err := catalog.Get(lang, "Hello World!") if err != nil { fmt.Println(err) return } fmt.Println(translatedText) }
ログイン後にコピー
このコードは、翻訳ファイルから翻訳情報を読み込み、Get メソッドを使用して正しい翻訳結果を取得します。

結論

Go 言語は、高性能、クロスプラットフォーム、シンプルで使いやすいプログラミング言語であり、国際化も適切にサポートしています。 Go 標準ライブラリは、単純な国際化機能を実装するためのいくつかのメソッドを開発者に提供しますが、サードパーティのライブラリは、多言語サポートを実現するためのより複雑なメソッドを提供します。国際化のために標準ライブラリを使用する場合でも、サードパーティのライブラリを使用する場合でも、Go は非常に良い選択です。

以上がGo で国際化を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。