💡
【Roblox開発】LocalizationServiceを使ってみた
はじめに
今回はLocalizationService
公式Reference
LocalizationServiceを使ってみよう
まず翻訳先の言葉を登録する
クリエイターハブから多言語化
タブを押します。
そして、翻訳先の言語をクリック。今回は英語 -> 日本語
以下の画像のようなページに行きます。そこで文字列タブをクリックし入力を追加
をクリック。
翻訳する文字列とその文字列がどの文脈で使用されるのか指定し保存します。
翻訳先の言語を書き込み準備完了!
RobloxStudioの設定
ホームタブからゲームの設定をクリック
翻訳済みのコンテンツを使用をチェック
これで準備完了!
仮UIの配置
翻訳後の文字列を取得する
local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")
local gui = script.Parent
-- 翻訳したいテキストを表示するGUI
local helloTextLabel = gui.HelloTextLabel
local worldTextLabel = gui.WorldTextLabel
-- プレイヤーごとの翻訳機能を取得
local success, translator = pcall(function()
return LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer)
end)
if success then
-- 翻訳の実行
local helloResult = translator:Translate(helloTextLabel, "Hello")
local worldResult = translator:Translate(worldTextLabel, "World")
-- 翻訳結果を出力
print("Hello: " .. helloResult)
print("World: " .. worldResult)
else
print("翻訳に失敗しました: " .. translator)
end
- GetTranslatorForPlayerAsync でプレイヤーごとの翻訳機能を取得します。
- Translate メソッドで、指定したテキストをプレイヤーの言語に翻訳します。
- pcall を使用して、エラーが発生した場合でも適切に処理できるようにしています。
プレイヤーのリージョンを取得する
local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- プレイヤーのリージョンを取得
local result, code = pcall(LocalizationService.GetCountryRegionForPlayerAsync, LocalizationService, player)
if result and code == "CA" then
print("プレイヤーはカナダからです")
else
print("リージョンの取得に失敗しました: " .. code)
end
- GetCountryRegionForPlayerAsync で、プレイヤーのリージョンコードを取得します。
- 取得したコードが "CA" の場合、プレイヤーはカナダからのユーザーと判断できます。
実行
まとめ
LocalizationServiceを使用することで、簡単にゲームを多言語化することができます。
プレイヤーの言語に合わせてテキストを表示することで、より多くのプレイヤーに楽しんでもらうことができます。
地域ごとによってコンテンツを出し分けるみたいなこともできそう、、、
Discussion