はじめに
Autodesk App StoreなどでRevitアドインを公開する際、より多くの人にダウンロードしてもらうためには、日本語版だけでなく英語版を公開する必要があります。そこで、以下のシンプルなRevitアドインを例として、複数言語に対応させる方法を解説します。
本記事ではRevit2024/.NET Framework4.8を使用していますが、Revit2025/.NET 8でもやり方は同じです
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.UI;
using Addin.Utils;
namespace Addin
{
class App : IExternalApplication
{
public Result OnStartup(UIControlledApplication a)
{
var panel = AppUtils.AddPanel(a, "たぶ");
panel.AddItem(AppUtils.CreateButton("ぼたん", "Addin.Commands.Hello", "つーるちっぷ", revit));
return Result.Succeeded;
}
public Result OnShutdown(UIControlledApplication application)
{
return Result.Succeeded;
}
}
}
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.ApplicationServices;
namespace Addin.Commands
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class Hello : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var window = new Views.MaterialDesignWindow(commandData);
window.ShowDialog();
return Result.Succeeded;
}
}
}
<Window x:Class="Addin.Views.HelloWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="500">
<Grid>
<TextBlock Text="こんにちは, Revit!" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"/>
</Grid>
</Window>
リソースの追加
プロジェクトのプロパティの リソース を開き、このプロジェクトには既存のリソースファイルが... をクリックします。
以下のようにリソースが作成されるので、アクセス修飾子を Public に設定します。
ソリューションエクスプローラーの Properties を右クリックして 追加 ➡ 新しい項目 で 新しい項目の追加 ウィンドウを開き、Resources.ja.resx
というファイルを新規追加します。
ファイル名はResources.{ニュートラルカルチャ}.resx
もしくはResources.{カルチャ}.resx
とします。カルチャの種類は こちら を参考にしてください。
リソースエクスプローラーを開くと、Addin/Resourcesに「ニュートラル値」と「ja」の列が表示されているはずです。
CMD_NAME
CMD_TOOLTIP
TAB_NAME
TXT_HELLO
の4項目を追加して、「ニュートラル値」に英語の値を、「ja」に日本語の値をそれぞれ入力します。
Appの修正
先ほど作成したリソースをusing static
で参照して、ベタ打ちのタブ名、コマンド名、ツールチップをリソースに置き換えます。なお、「ja」が未入力の項目は「ニュートラル値」の値が参照されます。
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.UI;
using Addin.Utils;
+ using static Addin.Properties.Resources;
namespace Addin
{
class App : IExternalApplication
{
public Result OnStartup(UIControlledApplication a)
{
+ var panel = AppUtils.AddPanel(a, PNL_NAME);
+ panel.AddItem(AppUtils.CreateButton(CMD_NAME, "Addin.Commands.Hello", CMD_TOOLTIP, revit));
return Result.Succeeded;
}
public Result OnShutdown(UIControlledApplication application)
{
return Result.Succeeded;
}
}
}
Viewの修正
Appと同様にリソースを参照して、ベタ打ちのテキストをリソースに置き換えます。
<Window x:Class="Addin.Views.HelloWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:props ="clr-namespace:Addin.Properties"
Height="300" Width="500">
<Grid>
+ <TextBlock Text="{x:Static props:Resources.TXT_HELLO}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24"/>
</Grid>
</Window>
ビルド
アプリケーション ➡ アセンブリ情報 ➡ ニュートラル言語 を「なし」に設定してからアドインをビルドします。ビルドしたアドインを通常どおりRevitのアドインフォルダに配置します。
動作確認
まずは日本語版Revitを起動してアドインタブを開き、アドインのコマンドボタンとウィンドウが日本語になっていることを確認します。
続いて、コマンドプロンプトで以下のコマンドを実行し英語版Revitを起動します。
"C:\Program Files\Autodesk\Revit 2024\Revit.exe" /language ENU
通常、WPFアプリの言語はWindowsの言語設定に応じて切り替わりますが、Revitアドインの場合はRevitの言語設定に応じて切り替わります。
Add-Insタブを開くと、アドインのコマンドボタンとウィンドウが英語になっていることが分かります。
その他 多言語 Revit 環境での注意点
- システムファミリ名やカテゴリ名はRevitの言語によって異なる
TODO: 詳しく書く
参考リンク