はじめに

Sweet Home 3D でまだサポートされていない外国語を話していて、その言語への翻訳に貢献したいですか?バージョン 2.3 以降、Sweet Home 3D は SH3L ファイルをサポートしています。このガイドでは、SH3L ファイルを自分で作成する方法を学びます。SH3L ファイルは自動インストール可能な言語ファイルであり、ユーザーは SH3L ファイルをダブルクリックするだけで、Sweet Home 3D をそのファイルで記述された言語に翻訳できます。

基本的な手順

SH3L ファイルの作成は、次の手順で構成されます。

  1. 翻訳するファイルの英語版をダウンロードする
  2. ダウンロードしたファイルを解凍する
  3. 言語に一致する2 文字のサフィックスを、ファイルに追加する.properties
  4. .propertiesファイル内のテキストを翻訳する
  5. それらを ASCII エンコーディングに変換する
  6. .htmlファイル内のヘルプテキストを翻訳する(必須ではありませんが、ユーザーにとって非常に役立ちます)
  7. .propertiesファイルとヘルプファイルを SH3L 拡張子を持つファイルに再度圧縮する
  8. SH3L ファイルをダブルクリックして、Sweet Home 3D で翻訳をテストする
  9. SH3L ファイルを配布する

詳細な手順

前の基本的な手順を恐れていない場合は、次の手順に進んでください。

英語版を入手する

/SweetHome3DTranslation.zip (バージョン 7.5) でアーカイブをダウンロードし、システムのツールで解凍します。
SweetHome3DTranslation.zip には、図 1 に示すように、サブフォルダーに配置された .properties および .html 拡張子を持つ一連のファイルが含まれています。

図 1. 翻訳ファイル

すべての.properties および .html ファイルには、言語に翻訳する必要があるテキストの英語版が含まれています。

  • package.propertiesファイルは、Sweet Home 3D のユーザーインターフェースに表示されるラベル、メニュー、およびメニュー項目を記述します。
  • basic.properties および metal.properties ファイルは、標準のダイアログラベルを記述します。
  • Catalog.propertiesで終わるものは、ソフトウェアで利用可能な家具とテクスチャの名前を記述します。
  • .htmlファイルには、Sweet Home 3D のヘルプのテキストが含まれています。

.properties ファイルは、図 1 に示すフォルダーに配置する必要があります。そうしないと、Sweet Home 3D はそれらを正しく使用できません。したがって、ファイルをフォルダーから移動したり、フォルダーの名前を変更したり(help の en サブディレクトリを除く)、フォルダーを削除したりしないでください。

言語に応じてファイルの名前を変更する

.propertiesファイルを翻訳する前に、各ファイルの名前の末尾に、言語に一致する 2 文字の ISO コードをアンダースコアに続けて追加して、名前を変更する必要があります。このコードは、ドキュメント https://www.loc.gov/standards/iso639-2/php/English_list.php の最後の列にあります。
次に、ヘルプファイルを翻訳する場合は、 サブディレクトリの名前もその 2 文字のコードに変更する必要があります。
たとえば、チェコ語の ISO コードは です。Sweet Home 3D をチェコ語に翻訳する場合は、各ファイル名の末尾に _cs を付加し、図 2 に示すようにファイルの名前を変更する必要があります。

図 2. ISO コードサフィックス付きのプロパティファイル

プロパティファイルの翻訳

.propertiesファイルはプレーンテキストファイルであり、ワードパッドテキストエディット、または emacs などのテキストエディターで編集できます。たとえば、Sweet Home 3D 3.0 の com/eteks/sweethome3d/package.properties ファイルには、次のテキストが含まれています。

# package.properties 2007 年 10 月 8 日
# 
# Copyright (c) 2024 Space Mushrooms <[email protected]>. All Rights Reserved.
# 
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
# 
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  GNU General Public License の詳細を参照してください
# details.
# 
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA

# HomeFramePane クラスのリソース
HomeFramePane.untitled=無題


# MacOSXConfiguration クラスのリソース
MacOSXConfiguration.WINDOW_MENU.Name=ウィンドウ
MacOSXConfiguration.MINIMIZE.Name=最小化
MacOSXConfiguration.ZOOM.Name=ズーム
MacOSXConfiguration.BRING_ALL_TO_FRONT.Name=すべてを前面に表示


# SweetHome3D クラスのリソース
SweetHome3D.3DError.message=<html> Sweet Home 3D は致命的なエラーが発生したため、終了します
    <br>3D レンダリングシステムで。DirectX/OpenGL ドライバーを更新してください
    <br>コンピューターのグラフィックスカードの。 
SweetHome3D.3DError.title=3D エラー
    
SweetHome3D.confirmSaveAfter3DError.message=<html> Sweet Home 3D は、致命的なエラーが発生したため、終了する必要があります
    <br>3D レンダリングシステムで。変更されたすべてのホームを保存しますか? 
SweetHome3D.confirmSaveAfter3DError.title=3D エラー
SweetHome3D.confirmSaveAfter3DError.save=保存
SweetHome3D.confirmSaveAfter3DError.doNotSave=保存しない

.propertiesファイルには、次の 3 種類の行が含まれています。

  • # 文字で始まる行はコメントです(前の例では緑色で表示)。一部のコメントには法的情報が含まれ、一部は開発者または翻訳者に情報を提供します。これらの行は変更しないでください。
  • 空の行は、.propertiesファイルのさまざまな部分を区切るために使用されます。
  • その他の行は、Sweet Home 3D が画面に表示されるテキストを見つけるためのキーとして使用するテキストで始まります(前の例では青色で表示)。このキーに続いて、これらの各行には等号(=)と特定の言語のテキストが含まれています。あなたの仕事は等号から始まります。キーのテキストを変更せずに、等号の後の英語のテキストを翻訳に置き換えてください。

特別なケース:

  • 「で始まるテキスト <html> タグには、HTML 形式のテキストが含まれています。これらのテキストには、他の HTML タグが含まれています <> 記号の間、たとえば <br> 前の の例では、長いテキストの中央でのキャリッジリターンを表しています。 これらの HTML タグを削除しないでください。Sweet Home 3D が一部のテキストを正しく表示するのに役立ちます。 HTML タグ間のテキストの翻訳はそれほど難しくありません。 おそらく WallPanel.wallOrientationLabel.text キーの値である最悪の HTML テキストを除いて。
  • テキストエディターで長い行を避けるために、一部の行 は 2 つ以上の行に分割され、バックスラッシュで区切られています \、 で始まる行のように SweetHome3D.3DError.message 前の例で。その場合、 \ 行の末尾にある記号は、次の行が現在の行に続くことを示しているため、削除しないでください 。
  • 一部のテキストには、 で始まる特殊文字シーケンスが含まれています % 記号、%s%d%1$s%2$s… これらの文字シーケンス は、必要に応じてファイル名、単位、または数値に置き換えられるため、削除しないでください。
    たとえば、文字シーケンス %s 次のキーのテキスト HomeFurniturePanel.widthLabel.text:
    HomeFurniturePanel.widthLabel.text=幅 (%s):
    は、現在使用中の単位に置き換えられます。2 つの文字シーケンス %1$d%2$d 次のキーのテキストに表示される PrintPreviewPanel.pageLabel.text:
    PrintPreviewPanel.pageLabel.text=ページ %1$d/%2$d
    は、画面にページ番号とページ数として表示され、 という単語のみを翻訳する必要がありますPage
  • 一部のテキストには、特殊文字シーケンス \nも含まれています。次の例のように:
    HomeController.saveError=ホームを保存できません\n"%s"
    この文字シーケンスは、画面で行を分割するためのキャリッジリターンとして Sweet Home 3D によって表示され、削除しないでください。
  • キーの値 HelpController.helpIndex は、ヘルプファイルがあるディレクトリを示します。.html ヘルプファイルを翻訳する場合は、言語の 2 文字コードで en サブディレクトリを置き換える必要があります。
    たとえば、ヘルプをチェコ語に翻訳する場合は、次のようになります。
    HelpController.helpIndex=/com/eteks/sweethome3d/viewcontroller/resources/help/cs/index.html
  • .mnemonic で終わるキーのテキストは、Sweet Home 3D がキーボードアクセス用にラベルまたはメニュー項目のどの文字に下線を引くかを推測するために使用されます。このニーモニック文字は、表示される単語によって異なり、ダイアログボックスまたはメニューごとに一意の文字を見つける必要があります。
    たとえば、家具の変更ダイアログボックスに表示される次のテキストとニーモニック:
    HomeFurniturePanel.nameLabel.text=名前:
    HomeFurniturePanel.nameLabel.mnemonic=N
    HomeFurniturePanel.nameVisibleCheckBox.text=プランに名前を表示
    HomeFurniturePanel.nameVisibleCheckBox.mnemonic=S
    HomeFurniturePanel.widthLabel.text=幅 (%s):
    HomeFurniturePanel.widthLabel.mnemonic=W
    は、フランス語で次のように翻訳できます。
    HomeFurniturePanel.nameLabel.text=Nom :
    HomeFurniturePanel.nameLabel.mnemonic=N
    HomeFurniturePanel.nameVisibleCheckBox.text=Afficher le nom dans le plan
    HomeFurniturePanel.nameVisibleCheckBox.mnemonic=S
    HomeFurniturePanel.widthLabel.text=Largeur (%s) :
    HomeFurniturePanel.widthLabel.mnemonic=L
  • Sweet Home 3D または 3D モデルのインポートページ を使用して、.properties で終わる Catalog.properties ファイルの翻訳を支援します。

プロパティファイルを ASCII エンコーディングに変換する

ISO-8859-1 エンコーディング に属さない文字(主に中央および東ヨーロッパの言語、および非ラテンアルファベットを使用する言語)を含む言語にテキストを翻訳した場合は、すべての .properties ファイルを Sweet Home 3D でサポートされている ASCII エンコーディングに変換する必要があります。この変換は、JDK に付属の native2ascii ツールで行うか、次の形式で実行できます。
.properties ファイルについて、そのファイルのバックアップを作成し、変換するテキストを次のテキストエリアにコピー/ペーストし、変換 ボタンをクリックして、変換されたテキストを .properties ファイルにコピー/ペーストします。

変換ツールは、各非 ASCII 文字(アクセント付きラテン文字および非ラテン文字)を \u で始まり、Unicode でその文字に一致する 4 桁の 16 進数コードが続くシーケンスに置き換えます。残念ながら、この変換により、テキストは人間にとって非常に読みにくくなりますが、実行しないと、Sweet Home 3D は翻訳の文字を正しく表示できません。これが、後で変更する場合に備えて、元の .properties ファイルのバックアップを作成する必要がある理由です。
ASCII に変換された .properties ファイルを直接編集する場合は、Properties Editor アプリケーションを Jar 実行可能ファイルとして使用することもできます こちら

ヘルプファイルの翻訳

Sweet Home 3D の優れた翻訳には、ヘルプファイルの翻訳も含まれている必要があります。すべての ファイルの翻訳は長い作業ですが、ユーザーがソフトウェアを学習し、Sweet Home 3D フォーラムでのサポートリクエストを回避するのに本当に役立ちます。これらのファイルを翻訳するには、任意の HTML エディターを使用し、含まれているリンクとそのスタイルシートを変更しないようにしてください。
翻訳したら、com/eteks/sweethome3d/viewcontroller/resources/help/en/images にある画像を置き換えるために、言語でダイアログボックスのスクリーンキャプチャも作成する必要があります。このようなスクリーンキャプチャを作成できるようにするには、次の手順で最初の SH3L ファイルを作成してテストします(翻訳された .properties ファイルを含む SH3L ファイルが存在する場合は、Sweet Home 3D の 開発者 にスクリーンキャプチャの生成をリクエストすることもできます)。

SH3L ファイルの作成

すべての .properties および .html ファイルが翻訳され、必要に応じて ASCII に変換されたら(または、この手順をテストする場合はそれ以前でも)、それらをファイルに圧縮する必要があります。システムによっては、zip ファイルの作成は次の手順で行うことができます。

  • Windows の場合は、翻訳されたすべてのファイルを含む com フォルダーを選択し、コンテキストメニューから 送信先 > 圧縮フォルダー を選択します。
  • Mac OS X の場合は、翻訳されたすべてのファイルを含む com フォルダーを選択し、ファイル > 圧縮 « com » メニュー項目を選択します。
  • Linux の場合は、翻訳されたすべてのファイルを含む com フォルダーを選択し、コンテキストメニューから アーカイブを作成… を選択し、形式リストで .zip を選択します。

最後に、zip ファイルの .zip 拡張子を .sh3l に変更します。SH3L ファイルには任意の名前を付けることができますが、既存の SH3L ファイルとの競合を避けるために、含まれている言語と翻訳した Sweet Home 3D のバージョンから名前を付ける必要があります(たとえば、French-4.1.sh3l は Sweet Home 3D 4.1 のフランス語翻訳に適した名前です)。

SH3L ファイルのテスト

翻訳をテストするには、SH3L ファイルをダブルクリックするか、言語ライブラリファイルのインポート ボタン を使用して選択します。環境設定 ペインの上部に表示されます。これにより、Sweet Home 3D が起動し、ユーザーインターフェースが SH3L ファイルで記述された言語に翻訳されます。これにより、SH3L ファイルもシステムに応じてフォルダーにコピーされます。

  • Windows Vista / 7 / 8 / 10 / 11 の場合、このフォルダーは C:\Users\ユーザー\AppData\Roaming\eTeks\Sweet Home 3D\languages です。
  • Windows XP および以前のバージョンの Windows の場合、このフォルダーは C:\Documents and Settings\ユーザー\Application Data\eTeks\Sweet Home 3D\languages です。
  • macOS の場合、ユーザーフォルダーのサブフォルダー Library/Application Support/eTeks/Sweet Home 3D/languages です。
  • Linux およびその他の Unix の場合、ユーザーフォルダーのサブフォルダー .eteks/sweethome3d/languages です。
  • Sweet Home 3Dのポータブル版では、Sweet Home 3Dアプリケーションが保存されているフォルダのサブフォルダdata/languagesにあります。

また、SH3Lファイルの開発中には、SH3Lファイルの変更を確認するために、Sweet Home 3Dを再起動する必要がある場合がありますのでご注意ください。

SH3Lファイルの配布

SH3Lファイルの準備ができたら、誰にでも提案したり、外国語専用のフォーラムや他の場所でSweet Home 3Dユーザーに告知したりできます。ご希望であれば、Sweet Home 3Dでサポートされている翻訳に関するこのウェブサイトのページで公開することも可能です。

SH3Lファイルの更新

Sweet Home 3Dのリリースによっては、翻訳する新機能が追加されるものと、そうでないものがあります。これらの新機能に対応するユーザーインターフェースのラベルを翻訳しない場合でも、Sweet Home 3Dは動作しますが、新しいラベルはすべて英語で表示されます。.propertiesファイル内の新しいキーと更新されたキーを見つけるには、SourceForge.netが提供する、プロジェクトファイルの2つのバージョンを比較できる機能を使用できます。

  1. 履歴で比較したいSweet Home 3Dのバージョンの日付を検索します(例:バージョン5.0の場合は2015年7月19日、バージョン4.6の場合は2015年2月2日)。
  2. .properties または .html ファイルを 図1 で更新したいファイルをクリックし、
  3. 更新するファイルに対応するバージョン日付のリビジョン番号の2つのチェックボックスをオンにし、Sweet Home 3Dのバージョン日付の直前の日付を選択します。
  4. 比較ボタンをクリックします。

最後のクリックで、その.propertiesファイルの2つのバージョン間の違いが表示されます(たとえば、このリンクをクリックすると、com/eteks/sweethome3d/viewcontroller/package.propertiesファイルのバージョン4.6とバージョン5.0の違いが表示されます)。

違いを見つけたら、翻訳を更新し、必要に応じて新しいキー名を追加して、翻訳の新しいバージョンをリリースします。