💡

【Roblox開発】LocalizationServiceを使ってみた

2024/08/14に公開

はじめに

今回はLocalizationService

公式Reference

https://create.roblox.com/docs/ja-jp/reference/engine/classes/LocalizationService

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" の場合、プレイヤーはカナダからのユーザーと判断できます。

実行

https://youtu.be/-U2wsxwE_hc

まとめ

LocalizationServiceを使用することで、簡単にゲームを多言語化することができます。
プレイヤーの言語に合わせてテキストを表示することで、より多くのプレイヤーに楽しんでもらうことができます。

地域ごとによってコンテンツを出し分けるみたいなこともできそう、、、

Landelテックブログ

Discussion