Mayaの使い方

【Maya】バッチファイルで簡単に言語を切り替えてみよう【コピペでOK】

Mayaの英語版と日本語版をバッチファイルで切り替える方法のサムネイル画像
unotaki

はじめに

こんにちは、うのたきです。

前に、Mayaの言語設定を日本語から英語に変える方法を紹介する記事を書きました。

(そのときの記事 → 『【図解】Mayaを英語UIに切り替える方法(Windows版)』)

でも、毎回調べたり手打ちして環境変数を書き換えるのってちょっと面倒ですよね…。

そこで今回は、もっと簡単に切り替えられるように「キーを押して言語を変えられるバッチファイル」を作ってみました。

このバッチファイルを使えば、日本語⇔英語の切り替えがサクッとできます!


バッチファイルで言語を切り替える方法

ステップ1:コードをコピー

まずは、下のコードをメモ帳に貼り付けてください。

@echo off
:: Mayaの言語設定を英語/日本語切り替える

setlocal enabledelayedexpansion

:: 管理者権限で開いているかチェック
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo このバッチファイルは管理者権限が必要です
    echo 右クリックして「管理者として実行」を選択してください
    echo いずれかのキーを押したら終了します
    pause
    exit /b 1
)

:: 現在の設定を確認
echo ========================================
echo Maya言語設定切り替えツール
echo ========================================
echo.

:: 現在のMAYA_UI_LANGUAGE設定を取得
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MAYA_UI_LANGUAGE 2^>nul ^| find "MAYA_UI_LANGUAGE"') do (
    set CURRENT_LANG=%%b
)

if "%CURRENT_LANG%"=="" (
    echo 現在の言語設定: 未設定(デフォルト)
) else (
    if "%CURRENT_LANG%"=="en_US" (
        echo 現在の言語設定: 英語
    ) else if "%CURRENT_LANG%"=="ja_JP" (
        echo 現在の言語設定: 日本語
    ) else (
        echo 現在の言語設定: %CURRENT_LANG%
    )
)

echo.
echo どちらに切り替えますか?
echo.
echo [1] 英語版に切り替える
echo [2] 日本語版に切り替える
echo [0] キャンセル
echo.

choice /C 120 /N /M "選択してください: "
set CHOICE=%ERRORLEVEL%

if %CHOICE%==3 (
    echo.
    echo キャンセルしました
    pause
    exit /b 0
)

if %CHOICE%==1 (
    set NEW_LANG=en_US
    set LANG_NAME=英語
) else if %CHOICE%==2 (
    set NEW_LANG=ja_JP
    set LANG_NAME=日本語
)

:: 環境変数を設定
echo.
echo Mayaの言語設定を%LANG_NAME%に変更しています

:: システム環境変数として設定
setx MAYA_UI_LANGUAGE %NEW_LANG% /M >nul 2>&1
if %errorLevel% neq 0 (
    echo エラー: 環境変数の設定に失敗しました
    pause
    exit /b 1
)

:: レジストリに書き込み
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MAYA_UI_LANGUAGE /t REG_SZ /d %NEW_LANG% /f >nul 2>&1

echo.
echo ========================================
echo 設定が完了しました
echo ========================================
echo.
echo 新しい言語設定: %LANG_NAME%
echo.
echo ※ 次にMayaを起動すると%LANG_NAME%版で起動します
echo.

pause
exit /b 0

ステップ2:「名前を付けて保存」

コピーできたら、「名前を付けて保存」で以下のように設定します。

  • ファイル名:Maya_Language_Switcher.bat
  • ファイルの種類:すべてのファイル
  • 文字コード:ANSI

※拡張子が .bat になっていないと実行できないので注意です!


実行方法:切り替えはボタンひとつ!

保存したバッチファイルを右クリック → 管理者として実行すると、次のような選択肢が表示されます。

  • [1] 英語に切り替える
  • [2] 日本語に切り替える
  • [0] キャンセル

あとは数字キーを押すだけ!次回起動時からMayaが選んだ言語で立ち上がるようになります。とっても簡単ですよね。


どういう仕組みなの?

以上で今回の記事の内容は終わりなので閉じてもらってOKなのですが、

以下では、「管理者権限でなんか色々やってるけど、怖いことやってない?」ってちょっと気になってる方向けに、このバッチファイルが何をしてるのかを順番にざっくり説明していきたいと思います。

ふんわり怖いことやってないよってことを知っていただければ問題ありません。


●画面をすっきりさせる

@echo off

この最初の1行目は、コマンドを実行するたびにその内容が画面にズラズラ表示されないようにするためのものです。

バッチファイルは、命令を1つずつ画面に表示しながら処理を進めます。 でもそれだと見づらくなってしまうので、この命令で表示を最低限まで抑えて見やすくしています。

●コメントを書く

:: Mayaの言語設定を英語/日本語切り替える

この「::」で始まる行はコメントです。

実行される処理ではなく、あとでメモ帳などで自分や他の人が読み返したときに「ここで何をしてるのか」をわかりやすくするためのメモです。

Pythonでは「#」です。

変数を柔軟に扱えるようにする

setlocal enabledelayedexpansion

この命令は、バッチファイル内で変数を「後から変更した値」でちゃんと使えるようにするためのものです。

たとえば選択によって、変数名が同じでも変数の中身が後から変わる場面ってありますよね。

(今回の場合は、日本語か英語かキャンセルかをキーで選択したら、その選択に沿って変数の中身が変更されています)

そのとき、これを付けておかないと「最初から決められた値」しか使えなくなっちゃって上手く動かなくなることがあるんです。

なので、forやifなどのループや条件分岐の中で変数を設定してすぐ使うときに、入れておくのが大切です。

管理者権限で実行されているか確認する

:: 管理者権限で開いているかチェック
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo このバッチファイルは管理者権限が必要です
    echo 右クリックして「管理者として実行」を選択してください
    echo いずれかのキーを押したら終了します
    pause
    exit /b 1
)

このブロックでは、「今このバッチファイルが管理者として実行されているかをチェックして、管理者ではない場合、警告文を出して終了」させています。

  • net session: 「PCに接続されてる他のユーザーのセッション情報を表示する」コマンドです。このコマンドを実行出来るのが管理者だけなので、 このコマンドを使って、情報が取得出来れば管理者(0)、出来なければ管理者ではない(5)と数値の特定するために使っています。 管理者として実行されていれば動作し、そうでなければエラーになります。
  • >nul 2>&1: その管理者かどうかのチェック結果に出てくる出力(成功メッセージやエラーやアクセスが拒否された等)をすべて非表示にするものです。
  • %errorLevel%: 直前に実行したコマンド(net session)の結果を数値で表す変数です。今回なら0だと成功、1以上なら失敗になります。
  • neq 0 : not equal(等しくない)の略です。今回だと「0じゃなかったら失敗」となります。

この if 文では「管理者じゃないなら、警告を表示して処理を止める」ようにしています。

なぜここで管理者かどうかをチェックしてるかというと、環境変数の設定やレジストリウィンドウの編集は管理者じゃないと変更できないからです。

  • pause: キー入力を待って処理を止める命令です。これが無いとバッチファイルが走ったらすぐにバッチファイルが閉じられてしまいます。
  • exit /b 1: 1は上手くいかずエラーで終了させるということ。0なら成功して終了したということになります。

このブロックがあることで、管理者でない状態のときに動かないようにしてます。

現在の言語設定を確認する

:: 現在の設定を確認
echo ========================================
echo Maya言語設定切り替えツール
echo ========================================
echo.

このブロックは私たちが見る見出しの部分です、ツール名を書いています。

今の設定を取得する

:: 現在のMAYA_UI_LANGUAGE設定を取得
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment" /v MAYA_UI_LANGUAGE 2^>nul ^| find "MAYA_UI_LANGUAGE"') do (
    set CURRENT_LANG=%%b
)

このブロックでは、『レジストリエディタから「MAYA_UI_LANGUAGE」という環境変数の値を読み取って、その値をCURRENT_LANGという変数に保存しています

  • reg query : レジストリの値を取得するコマンドです。
  • /v MAYA_UI_LANGUAGE : vはvalue(値)の略です。
    その中の特定の項目だけを指定して取り出します。今回は「MAYA_UI_LANGUAGE」という名前の値だけを取り出して表示します。
  • 2^>nul : エラー結果の出力を非表示にするためのものです。
  • | find "MAYA_UI_LANGUAGE" : reg queryの出力の中から「MAYA_UI_LANGUAGE」が含まれる行だけを抜き出しています。
    下のスクショの行では「項目名(MAYA_UI_LANGUAGE)」「型(REG_SZ)」「値(en_US)」が並んでいます。

  • for /f "tokens=2*" : 抜き出されたその行を空白で区切って、2番目の部分を %%a に、3番目以降の部分をまとめて %%b に代入します。 今回は、「型(REG_SZ)」が%%a、「値(en_US)」を%%bに入れています。
  • set CURRENT_LANG=%%b : %%ben_US)を変数 CURRENT_LANG に保存します。

現在の設定を表示する

if "%CURRENT_LANG%"=="" (
    echo 現在の言語設定: 未設定(デフォルト)
) else (
    if "%CURRENT_LANG%"=="en_US" (
        echo 現在の言語設定: 英語
    ) else if "%CURRENT_LANG%"=="ja_JP" (
        echo 現在の言語設定: 日本語
    ) else (
        echo 現在の言語設定: %CURRENT_LANG%
    )
)

先ほど取ってきた変数 CURRENT_LANGの中から、今のMayaがどの言語で設定されているかを表示させています。

  • 値が空っぽ(設定されていない)の場合は「未設定(デフォルト)」と表示させています。
  • en_US なら「英語」、ja_JP なら「日本語」と表示するようにしています。
  • それ以外の値なら、そのまま CURRENT_LANG の内容を表示します。

そんな感じで、今どの言語設定なのかを分かるようにしています。

切り替えメニューを表示する

echo.
echo どちらに切り替えますか?
echo.
echo [1] 英語版に切り替える
echo [2] 日本語版に切り替える
echo [0] キャンセル
echo.

入力された選択肢を取得する

choice /C 120 /N /M "選択してください: "

set CHOICE=%ERRORLEVEL%

この部分では、どのキーが選ばれたかを取得しています。

  • choice /C 120 : 「1」「2」「0」の3つのキーを押すと反応するように指定しています。
  • /N : 「入力待ちの際に選択肢(1,2,0)を表示しない」というオプションです。
  • /M: メッセージ表示部分で、「選択してください:」というテキストを表示するようにします。

押されたキーによってERRORLEVELが変わって、そのキーをCHOICE変数に保存しています。

入力されたキーに応じて処理を分岐する

if %CHOICE%==3 (
    echo.
    echo キャンセルしました
    pause
    exit /b 0
)

if %CHOICE%==1 (
    set NEW_LANG=en_US
    set LANG_NAME=英語
) else if %CHOICE%==2 (
    set NEW_LANG=ja_JP
    set LANG_NAME=日本語
)

さっき取得した CHOICE の値に応じて、やることが変わります。

  • CHOICE が3([0] キー)だったら「キャンセルしました」と表示してそのまま終了します
  • CHOICE が1キーだったら、NEW_LANGという変数にen_USをセットし、LANG_NAMEという変数に英語をセットします
  • CHOICE が2キーの場合にもそれぞれの変数にja_JPと日本語を入れています

言語を切り替える旨のメッセージを表示

:: 環境変数を設定
echo.
echo Mayaの言語設定を%LANG_NAME%に変更しています

このブロックは私たちが見る部分です。選んだ言語に切り替える処理が始まるというメッセージを表示しています。

システム環境変数に書き込む

:: システム環境変数として設定
setx MAYA_UI_LANGUAGE %NEW_LANG% /M >nul 2>&1
if %errorLevel% neq 0 (
    echo エラー: 環境変数の設定に失敗しました
    pause
    exit /b 1
)

選択された言語(%NEW_LANG%)をシステム環境変数として登録しています。

  • setx : 環境変数を設定するためのコマンドです。
  • %NEW_LANG% : 選択した言語(en_USja_JP)が入っている変数です。
  • /M :「システム全体」に適用させます。(管理者権限じゃないと使えません)
  • >nul 2>&1 : 成功や失敗メッセージを非表示にするいつものやつです。

でも、なんらかの理由で失敗した場合には、

  • エラーメッセージを表示して、
  • 一時停止(pause)し、
  • エラー状態(1)で処理を終了します(exit /b 1

失敗していることもわかるようにしています。

レジストリに書き込んで完了

:: レジストリに書き込み
reg add "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment" /v MAYA_UI_LANGUAGE /t REG_SZ /d %NEW_LANG% /f >nul 2>&1

echo.
echo ========================================
echo 設定が完了しました
echo ========================================
echo.
echo 新しい言語設定: %LANG_NAME%
echo.
echo ※ 次にMayaを起動すると%LANG_NAME%版で起動します
echo.

pause
exit /b 0

レジストリエディタにも書き込みを行っています。

  • reg add : レジストリエディタに新しい値を追加するコマンドです
  • /v MAYA_UI_LANGUAGE : 登録・上書きしたいレジストリウィンドウの「項目名(キー名)」を指定するオプションです。 今回は MAYA_UI_LANGUAGE という名前の設定を変更する感じです
  • /t REG_SZ : 書き込む値の「型(種類)」を指定します。REG_SZ は「文字列型」を意味しています。 今回のように en_USja_JP みたいな文字列を保存したいときに使います
  • /d %NEW_LANG% : 実際に書き込む「中身(値)」を指定するオプションです。 ここには、選んだ言語(en_USja_JP)が入ってる変数%NEW_LANG% を使っています。
  • /f : 確認メッセージを表示せず、そのまま書き込むオプションです。これが無いと、上書きしますかYes/Noの入力待ちでキーを打つ必要があって面倒なので加えています。(下のスクショは /f がないバージョンです)

  • >nul 2>&1 : 成功・失敗のメッセージを画面に出さずに処理します。

注意点と補足

  • このバッチファイルはWindows専用です。
  • 今回はMaya2022で動作の確認をしましたが、おそらくそれ以前のバージョンでも基本的には問題なく動作するはずです。

おわりに

以上「Mayaの言語をワンボタンで切り替えるバッチファイル」の紹介でした!

記事を書いてる時に思ってしまったんですが、正直このバッチ、実際に使う場面はちょっと限られてるかもしれません。
(たとえば初回起動時とか、1台のパソコンを複数人で使ってる場合とかでしょうか…?)

でも、コマンドやオプションを調べたり、バッチファイルを組んでみたりする中で、
「バッチでも意外と色々できるんだ〜」って感じられるきっかけになれば嬉しいです。

Pythonだけじゃなく、バッチを使って手軽に効率化できる部分って、実はまだまだあるかもしれませんね…!

最後まで読んでくれて、本当にありがとうございました!

ABOUT ME
うのたき
うのたき
創作と暮らしを記録する人
3DCGやイラストや漫画が好きです。 毎日の暮らしを見直しながら、新米3DCGアニメーターとして働いています。 創作の記録や作品投稿、ツールの備忘録、生活の工夫、そして「うまく暮らしていくには?」という小さな模索を綴っています。 整っていない今も、少しずつ前に進みながら続けていきます。
記事URLをコピーしました