Browse Source

Merge branch 'main' of https://github.com/ionite34/StabilityMatrix

pull/126/head v2.4.2
Ionite 1 year ago
parent
commit
5893fb3c28
No known key found for this signature in database
  1. 5
      CHANGELOG.md
  2. 8
      README.md
  3. 1
      StabilityMatrix.Avalonia/App.axaml
  4. 6
      StabilityMatrix.Avalonia/App.axaml.cs
  5. 3
      StabilityMatrix.Avalonia/Assets.cs
  6. BIN
      StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP-Variable.ttf
  7. BIN
      StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/NotoSansJP-Regular.ttf
  8. BIN
      StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/NotoSansJP-SemiBold.ttf
  9. 0
      StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/OFL.txt
  10. 8
      StabilityMatrix.Avalonia/Languages/Cultures.cs
  11. 192
      StabilityMatrix.Avalonia/Languages/Resources.ja-JP.resx
  12. 11
      StabilityMatrix.Avalonia/Views/MainWindow.axaml.cs
  13. 1
      StabilityMatrix.Avalonia/Views/SettingsPage.axaml
  14. 19
      StabilityMatrix.Core/Models/Settings/Settings.cs

5
CHANGELOG.md

@ -5,6 +5,11 @@ All notable changes to Stability Matrix will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html).
## v2.4.2
### Added
- Added Japanese UI language option, thanks to kgmkm_mkgm for the translation
- Language selection available in Settings, and defaults to system language if supported
## v2.4.1 ## v2.4.1
### Fixed ### Fixed
- Fixed deleting checkpoints not updating the visual grid until the page is refreshed - Fixed deleting checkpoints not updating the visual grid until the page is refreshed

8
README.md

@ -68,6 +68,14 @@ Multi-Platform Package Manager for Stable Diffusion
</p> </p>
## Localization
Stability Matrix is now available in the following languages, thanks to our community contributors:
- 🇺🇸 English
- 🇯🇵 日本語
- kgmkm_mkgm
If you would like to contribute a translation, please create an issue or contact us on Discord. Include an email where we'll send an invite to our [POEditor](https://poeditor.com/) project.
## License ## License
This repository maintains the latest source code release for Stability Matrix, and is licensed under the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html). Binaries and executable releases are licensed under the [End User License Agreement](https://lykos.ai/license). This repository maintains the latest source code release for Stability Matrix, and is licensed under the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html). Binaries and executable releases are licensed under the [End User License Agreement](https://lykos.ai/license).

1
StabilityMatrix.Avalonia/App.axaml

@ -18,6 +18,7 @@
<ResourceInclude Source="Styles/Card.axaml"/> <ResourceInclude Source="Styles/Card.axaml"/>
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
<x:Double x:Key="ContentDialogMaxWidth">700</x:Double> <x:Double x:Key="ContentDialogMaxWidth">700</x:Double>
<FontFamily x:Key="NotoSansJP">avares://StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP#Noto Sans JP</FontFamily>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>

6
StabilityMatrix.Avalonia/App.axaml.cs

@ -222,7 +222,11 @@ public sealed class App : Application
if (settingsManager.TryFindLibrary()) if (settingsManager.TryFindLibrary())
{ {
Cultures.TrySetSupportedCulture(settingsManager.Settings.Language); Cultures.SetSupportedCultureOrDefault(settingsManager.Settings.Language);
}
else
{
Cultures.TrySetSupportedCulture(Settings.GetDefaultCulture());
} }
Services.GetRequiredService<ProgressManagerViewModel>().StartEventListener(); Services.GetRequiredService<ProgressManagerViewModel>().StartEventListener();

3
StabilityMatrix.Avalonia/Assets.cs

@ -16,9 +16,6 @@ internal static class Assets
public static AvaloniaResource AppIconPng { get; } = public static AvaloniaResource AppIconPng { get; } =
new("avares://StabilityMatrix.Avalonia/Assets/Icon.png"); new("avares://StabilityMatrix.Avalonia/Assets/Icon.png");
public static AvaloniaResource RegionalFontJapanese { get; } =
new("avares://StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP-Variable.ttf");
/// <summary> /// <summary>
/// Fixed image for models with no images. /// Fixed image for models with no images.
/// </summary> /// </summary>

BIN
StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP-Variable.ttf

Binary file not shown.

BIN
StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/NotoSansJP-Regular.ttf

Binary file not shown.

BIN
StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/NotoSansJP-SemiBold.ttf

Binary file not shown.

0
StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP-Variable LICENSE.txt → StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/OFL.txt

8
StabilityMatrix.Avalonia/Languages/Cultures.cs

@ -38,6 +38,14 @@ public static class Cultures
return culture; return culture;
} }
public static void SetSupportedCultureOrDefault(string? cultureCode)
{
if (!TrySetSupportedCulture(cultureCode))
{
TrySetSupportedCulture(Default);
}
}
public static bool TrySetSupportedCulture(string? cultureCode) public static bool TrySetSupportedCulture(string? cultureCode)
{ {
if ( if (

192
StabilityMatrix.Avalonia/Languages/Resources.ja-JP.resx

@ -118,67 +118,70 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Action_Launch" xml:space="preserve"> <data name="Action_Launch" xml:space="preserve">
<value>打ち上げ</value> <value>Launch</value>
<comment>In Japanese, the literal translation of &quot;launch&quot; can be misinterpreted as &quot;turning on the PC&quot;. After much deliberation, I decided that it would be easier to understand if &quot;launch&quot; were not translated.</comment>
</data> </data>
<data name="Action_Quit" xml:space="preserve"> <data name="Action_Quit" xml:space="preserve">
<value>やめる</value> <value>終了</value>
</data> </data>
<data name="Action_Save" xml:space="preserve"> <data name="Action_Save" xml:space="preserve">
<value>保存</value> <value>保存</value>
</data> </data>
<data name="Action_Cancel" xml:space="preserve"> <data name="Action_Cancel" xml:space="preserve">
<value>戻る</value> <value>キャンセル</value>
</data> </data>
<data name="Label_Language" xml:space="preserve"> <data name="Label_Language" xml:space="preserve">
<value>言語</value> <value>言語</value>
</data> </data>
<data name="Text_RelaunchRequiredToApplyLanguage" xml:space="preserve"> <data name="Text_RelaunchRequiredToApplyLanguage" xml:space="preserve">
<value>新しい言語オプションを有効にするには、再起動が必要です。</value> <value>言語を変更するにはRelaunchが必要です</value>
</data> </data>
<data name="Action_Relaunch" xml:space="preserve"> <data name="Action_Relaunch" xml:space="preserve">
<value>リローンチ</value> <value>Relaunch</value>
</data> </data>
<data name="Action_RelaunchLater" xml:space="preserve"> <data name="Action_RelaunchLater" xml:space="preserve">
<value>後で再スタート</value> <value>後でRelaunch</value>
</data> </data>
<data name="Label_RelaunchRequired" xml:space="preserve"> <data name="Label_RelaunchRequired" xml:space="preserve">
<value>再起動が必要</value> <value>Relaunch Required</value>
</data> </data>
<data name="Label_UnknownPackage" xml:space="preserve"> <data name="Label_UnknownPackage" xml:space="preserve">
<value>未知のパッケージ</value> <value>Unknown Package</value>
</data> </data>
<data name="Action_Import" xml:space="preserve"> <data name="Action_Import" xml:space="preserve">
<value>輸入</value> <value>インポート</value>
</data> </data>
<data name="Label_PackageType" xml:space="preserve"> <data name="Label_PackageType" xml:space="preserve">
<value>パッケージタイプ</value> <value>パッケージタイプ</value>
</data> </data>
<data name="Label_Version" xml:space="preserve"> <data name="Label_Version" xml:space="preserve">
<value>バージョン</value> <value>Version</value>
</data> </data>
<data name="Label_VersionType" xml:space="preserve"> <data name="Label_VersionType" xml:space="preserve">
<value>バージョン・タイプ</value> <value>Version Type</value>
</data> </data>
<data name="Label_Releases" xml:space="preserve"> <data name="Label_Releases" xml:space="preserve">
<value>リリース</value> <value>Releases</value>
</data> </data>
<data name="Label_Branches" xml:space="preserve"> <data name="Label_Branches" xml:space="preserve">
<value></value> <value>Branches</value>
</data> </data>
<data name="Label_DragAndDropCheckpointsHereToImport" xml:space="preserve"> <data name="Label_DragAndDropCheckpointsHereToImport" xml:space="preserve">
<value>チェックポイントをここにドラッグ&ドロップしてインポート</value> <value>インポートしたいcheckpointをここにドラッグ&ドロップ</value>
<comment>checkpoint / embedding / LoRA are often used in the same way as the above words on Japanese information websites, so it is easier to understand them without translation.</comment>
</data> </data>
<data name="Label_Emphasis" xml:space="preserve"> <data name="Label_Emphasis" xml:space="preserve">
<value>強調</value> <value>Emphasis</value>
<comment>The word has not been translated because it is not possible to guess what part of the UI it is used in. It is a little difficult to translate the word into Japanese, so I want to be careful not to change the meaning of the word.</comment>
</data> </data>
<data name="Label_Deemphasis" xml:space="preserve"> <data name="Label_Deemphasis" xml:space="preserve">
<value>省略</value> <value>Deemphasis</value>
</data> </data>
<data name="Label_EmbeddingsOrTextualInversion" xml:space="preserve"> <data name="Label_EmbeddingsOrTextualInversion" xml:space="preserve">
<value>エメベデイング / テキストの反転</value> <value>Emebeddings / Textual Inversion</value>
</data> </data>
<data name="Label_NetworksLoraOrLycoris" xml:space="preserve"> <data name="Label_NetworksLoraOrLycoris" xml:space="preserve">
<value>ネットワーク(Lora / LyCORIS)</value> <value>Networks (Lora / LyCORIS)</value>
</data> </data>
<data name="Label_Comments" xml:space="preserve"> <data name="Label_Comments" xml:space="preserve">
<value>コメント</value> <value>コメント</value>
@ -187,40 +190,40 @@
<value>高倍率でピクセルグリッドを表示</value> <value>高倍率でピクセルグリッドを表示</value>
</data> </data>
<data name="Label_Steps" xml:space="preserve"> <data name="Label_Steps" xml:space="preserve">
<value>ステップ</value> <value>Steps</value>
</data> </data>
<data name="Label_StepsBase" xml:space="preserve"> <data name="Label_StepsBase" xml:space="preserve">
<value>ステップ - ベース</value> <value>Steps - Base</value>
</data> </data>
<data name="Label_StepsRefiner" xml:space="preserve"> <data name="Label_StepsRefiner" xml:space="preserve">
<value>ステップ - リファイナー</value> <value>Steps - Refiner</value>
</data> </data>
<data name="Label_CFGScale" xml:space="preserve"> <data name="Label_CFGScale" xml:space="preserve">
<value>CFGスケール</value> <value>CFG Scale</value>
</data> </data>
<data name="Label_DenoisingStrength" xml:space="preserve"> <data name="Label_DenoisingStrength" xml:space="preserve">
<value>ノイズ除去の強さ</value> <value>Denoising Strength</value>
</data> </data>
<data name="Label_Width" xml:space="preserve"> <data name="Label_Width" xml:space="preserve">
<value>幅</value> <value>幅</value>
</data> </data>
<data name="Label_Height" xml:space="preserve"> <data name="Label_Height" xml:space="preserve">
<value>高</value> <value>高</value>
</data> </data>
<data name="Label_Refiner" xml:space="preserve"> <data name="Label_Refiner" xml:space="preserve">
<value>リファイナー</value> <value>Refiner</value>
</data> </data>
<data name="Label_VAE" xml:space="preserve"> <data name="Label_VAE" xml:space="preserve">
<value>VAE</value> <value>VAE</value>
</data> </data>
<data name="Label_Model" xml:space="preserve"> <data name="Label_Model" xml:space="preserve">
<value>モデル</value> <value>Model</value>
</data> </data>
<data name="Action_Connect" xml:space="preserve"> <data name="Action_Connect" xml:space="preserve">
<value>接続</value> <value>接続</value>
</data> </data>
<data name="Label_ConnectingEllipsis" xml:space="preserve"> <data name="Label_ConnectingEllipsis" xml:space="preserve">
<value>接続...</value> <value>接続...</value>
</data> </data>
<data name="Action_Close" xml:space="preserve"> <data name="Action_Close" xml:space="preserve">
<value>閉じる</value> <value>閉じる</value>
@ -232,10 +235,10 @@
<value>更新あり</value> <value>更新あり</value>
</data> </data>
<data name="Label_BecomeAPatron" xml:space="preserve"> <data name="Label_BecomeAPatron" xml:space="preserve">
<value>パトロンになる</value> <value>Patronになる</value>
</data> </data>
<data name="Label_JoinDiscord" xml:space="preserve"> <data name="Label_JoinDiscord" xml:space="preserve">
<value>Discordサーバーに参加する</value> <value>Discordに参加</value>
</data> </data>
<data name="Label_Downloads" xml:space="preserve"> <data name="Label_Downloads" xml:space="preserve">
<value>ダウンロード</value> <value>ダウンロード</value>
@ -244,7 +247,7 @@
<value>インストール</value> <value>インストール</value>
</data> </data>
<data name="Label_SkipSetup" xml:space="preserve"> <data name="Label_SkipSetup" xml:space="preserve">
<value>初回セットアップをスキップする</value> <value>セットアップをスキップする</value>
</data> </data>
<data name="Label_UnexpectedErrorOccurred" xml:space="preserve"> <data name="Label_UnexpectedErrorOccurred" xml:space="preserve">
<value>予期せぬエラーが発生しました</value> <value>予期せぬエラーが発生しました</value>
@ -256,7 +259,7 @@
<value>表示名</value> <value>表示名</value>
</data> </data>
<data name="Label_InstallationWithThisNameExists" xml:space="preserve"> <data name="Label_InstallationWithThisNameExists" xml:space="preserve">
<value>この名前のインストールはすでに存在する。</value> <value>同じ名前のものが既に存在します。</value>
</data> </data>
<data name="Label_PleaseChooseDifferentName" xml:space="preserve"> <data name="Label_PleaseChooseDifferentName" xml:space="preserve">
<value>別の名前を選択するか、別のインストール場所を選択してください。</value> <value>別の名前を選択するか、別のインストール場所を選択してください。</value>
@ -268,28 +271,29 @@
<value>コミット</value> <value>コミット</value>
</data> </data>
<data name="Label_SharedModelFolderStrategy" xml:space="preserve"> <data name="Label_SharedModelFolderStrategy" xml:space="preserve">
<value>共有モデルフォルダー戦略</value> <value>Shared Model Folder Strategy</value>
</data> </data>
<data name="Label_PyTorchVersion" xml:space="preserve"> <data name="Label_PyTorchVersion" xml:space="preserve">
<value>PyTorchバージョン</value> <value>PyTorchバージョン</value>
</data> </data>
<data name="Label_CloseDialogWhenFinished" xml:space="preserve"> <data name="Label_CloseDialogWhenFinished" xml:space="preserve">
<value>終了したらダイアログを閉じる</value> <value>終了時にダイアログを閉じる</value>
</data> </data>
<data name="Label_DataDirectory" xml:space="preserve"> <data name="Label_DataDirectory" xml:space="preserve">
<value>データディレクトリ</value> <value>データフォルダ</value>
<comment>I think there are many windows users, so I changed the word &quot;directory&quot; to &quot;folder&quot;.</comment>
</data> </data>
<data name="Label_DataDirectoryExplanation" xml:space="preserve"> <data name="Label_DataDirectoryExplanation" xml:space="preserve">
<value>ここにモデルのチェックポイント、LORA、ウェブUI、設定などがインストールされる。</value> <value>ここにcheckpoint、LORA、Web UI、設定などがインストールされます。</value>
</data> </data>
<data name="Label_FatWarning" xml:space="preserve"> <data name="Label_FatWarning" xml:space="preserve">
<value>FAT32またはexFATドライブを使用するとエラーが発生する場合があります。他のドライブを選択することで、よりスムーズにご利用いただけます。</value> <value>フォーマット形式がFAT32またはexFATドライブを使用するとエラーが発生する場合があります。他のドライブを選択することで、よりスムーズにご利用いただけます。</value>
</data> </data>
<data name="Label_PortableMode" xml:space="preserve"> <data name="Label_PortableMode" xml:space="preserve">
<value>携帯モード</value> <value>Portableモード</value>
</data> </data>
<data name="Label_PortableModeExplanation" xml:space="preserve"> <data name="Label_PortableModeExplanation" xml:space="preserve">
<value>ポータブルモードでは、すべてのデータと設定はアプリケーションと同じディレクトリに保存されます。Data」フォルダを持つアプリケーションを別の場所やコンピュータに移動することができます。</value> <value>Portableモードでは、すべてのデータと設定はアプリケーションと同じフォルダに保存されます。アプリケーションと、その「Data」フォルダを一緒に移動させることで、別のフォルダや別のコンピュータに移すことができます。</value>
</data> </data>
<data name="Action_Continue" xml:space="preserve"> <data name="Action_Continue" xml:space="preserve">
<value>続ける</value> <value>続ける</value>
@ -301,25 +305,25 @@
<value>次の画像</value> <value>次の画像</value>
</data> </data>
<data name="Label_ModelDescription" xml:space="preserve"> <data name="Label_ModelDescription" xml:space="preserve">
<value>モデル説明</value> <value>Modelの説明</value>
</data> </data>
<data name="Label_NewVersionAvailable" xml:space="preserve"> <data name="Label_NewVersionAvailable" xml:space="preserve">
<value>安定性マトリックスの新バージョンが登場!</value> <value>Stability Matrixがバージョンアップ!</value>
</data> </data>
<data name="Label_ImportLatest" xml:space="preserve"> <data name="Label_ImportLatest" xml:space="preserve">
<value>最新のインポート</value> <value>直近のインポート</value>
</data> </data>
<data name="Label_AllVersions" xml:space="preserve"> <data name="Label_AllVersions" xml:space="preserve">
<value>すべてのバージョン</value> <value>すべてのバージョン</value>
</data> </data>
<data name="Label_ModelSearchWatermark" xml:space="preserve"> <data name="Label_ModelSearchWatermark" xml:space="preserve">
<value>検索モデル、#タグ、または@ユーザー</value> <value>検索 ( models, #tags, @users )</value>
</data> </data>
<data name="Action_Search" xml:space="preserve"> <data name="Action_Search" xml:space="preserve">
<value>検索</value> <value>検索</value>
</data> </data>
<data name="Label_Sort" xml:space="preserve"> <data name="Label_Sort" xml:space="preserve">
<value>注文</value> <value>並び替え</value>
</data> </data>
<data name="Label_TimePeriod" xml:space="preserve"> <data name="Label_TimePeriod" xml:space="preserve">
<value>期間</value> <value>期間</value>
@ -331,10 +335,10 @@
<value>ベースモデル</value> <value>ベースモデル</value>
</data> </data>
<data name="Label_ShowNsfwContent" xml:space="preserve"> <data name="Label_ShowNsfwContent" xml:space="preserve">
<value>NSFWコンテンツを表示する</value> <value>NSFWコンテンツを表示</value>
</data> </data>
<data name="Label_DataProvidedByCivitAi" xml:space="preserve"> <data name="Label_DataProvidedByCivitAi" xml:space="preserve">
<value>データ提供:CivitAI</value> <value>Data provided by CivitAI</value>
</data> </data>
<data name="Label_Page" xml:space="preserve"> <data name="Label_Page" xml:space="preserve">
<value>ページ</value> <value>ページ</value>
@ -361,52 +365,54 @@
<value>CivitAIで開く</value> <value>CivitAIで開く</value>
</data> </data>
<data name="Label_ConnectedModel" xml:space="preserve"> <data name="Label_ConnectedModel" xml:space="preserve">
<value>接続モデル</value> <value>メタデータ取得済みモデル</value>
<comment>i rewrited &quot;model got metadata&quot;. The reason for this is that when translated into Japanese, it was difficult to understand what the connection was to if only &quot;connected&quot; was used.</comment>
</data> </data>
<data name="Label_LocalModel" xml:space="preserve"> <data name="Label_LocalModel" xml:space="preserve">
<value>ローカルモデル</value> <value>ローカルモデル</value>
</data> </data>
<data name="Action_ShowInExplorer" xml:space="preserve"> <data name="Action_ShowInExplorer" xml:space="preserve">
<value>エクスプローラで表示</value> <value>エクスプローラで表示</value>
</data> </data>
<data name="Action_New" xml:space="preserve"> <data name="Action_New" xml:space="preserve">
<value>新しい</value> <value>New</value>
</data> </data>
<data name="Label_Folder" xml:space="preserve"> <data name="Label_Folder" xml:space="preserve">
<value>フォルダ</value> <value>フォルダ</value>
</data> </data>
<data name="Label_DropFileToImport" xml:space="preserve"> <data name="Label_DropFileToImport" xml:space="preserve">
<value>ここにファイルをドロップしてインポートする</value> <value>ここにファイルをドロップしてインポート</value>
</data> </data>
<data name="Label_ImportAsConnected" xml:space="preserve"> <data name="Label_ImportAsConnected" xml:space="preserve">
<value>接続済みとしてインポートする</value> <value>インポート時にメタデータを自動検索</value>
<comment>&quot;metadata retrieval on import&quot;, This is also because it was difficult to understand what &quot;online&quot; means in Japanese.</comment>
</data> </data>
<data name="Label_ImportAsConnectedExplanation" xml:space="preserve"> <data name="Label_ImportAsConnectedExplanation" xml:space="preserve">
<value>新しいローカル・インポートで接続されたメタデータを検索する</value> <value>ローカルからのインポート時にオンラインでメタデータを検索して適用します</value>
</data> </data>
<data name="Label_Indexing" xml:space="preserve"> <data name="Label_Indexing" xml:space="preserve">
<value>インデックス...</value> <value>インデックス作成中...</value>
</data> </data>
<data name="Label_ModelsFolder" xml:space="preserve"> <data name="Label_ModelsFolder" xml:space="preserve">
<value>モデルフォルダ</value> <value>モデルフォルダ</value>
</data> </data>
<data name="Label_Categories" xml:space="preserve"> <data name="Label_Categories" xml:space="preserve">
<value>カテゴリ</value> <value>カテゴリ</value>
</data> </data>
<data name="Label_LetsGetStarted" xml:space="preserve"> <data name="Label_LetsGetStarted" xml:space="preserve">
<value>始めよう</value> <value>さあ、始めよう</value>
</data> </data>
<data name="Label_ReadAndAgree" xml:space="preserve"> <data name="Label_ReadAndAgree" xml:space="preserve">
<value>を読み、同意します。</value> <value>次の約款を読み、同意します:</value>
</data> </data>
<data name="Label_LicenseAgreement" xml:space="preserve"> <data name="Label_LicenseAgreement" xml:space="preserve">
<value>ライセンス契約。</value> <value>使用許諾契約書</value>
</data> </data>
<data name="Label_FindConnectedMetadata" xml:space="preserve"> <data name="Label_FindConnectedMetadata" xml:space="preserve">
<value>接続メタデータの検索</value> <value>メタデータが見つかりました</value>
</data> </data>
<data name="Label_ShowModelImages" xml:space="preserve"> <data name="Label_ShowModelImages" xml:space="preserve">
<value>モデル画像を表示</value> <value>モデルの見出し画像を表示</value>
</data> </data>
<data name="Label_Appearance" xml:space="preserve"> <data name="Label_Appearance" xml:space="preserve">
<value>外観</value> <value>外観</value>
@ -415,22 +421,23 @@
<value>テーマ</value> <value>テーマ</value>
</data> </data>
<data name="Label_CheckpointManager" xml:space="preserve"> <data name="Label_CheckpointManager" xml:space="preserve">
<value>チェックポイント・マネージャー</value> <value>Checkpoint Manager</value>
</data> </data>
<data name="Label_RemoveSymlinksOnShutdown" xml:space="preserve"> <data name="Label_RemoveSymlinksOnShutdown" xml:space="preserve">
<value>シャットダウン時の共有チェックポイント・ディレクトリのシンボリックリンクの削除</value> <value>checkpointフォルダにあるシンボリックリンクをソフトの終了時に削除</value>
</data> </data>
<data name="Label_RemoveSymlinksOnShutdown_Details" xml:space="preserve"> <data name="Label_RemoveSymlinksOnShutdown_Details" xml:space="preserve">
<value>安定性マトリックスを別のドライブに移動する際に問題がある場合は、このオプションを選択します。</value> <value>Stability Matrix を別のドライブに移動する際に問題が起きた場合、ここにチェック</value>
<comment>It may be better to use a variable like {0} for the app name</comment>
</data> </data>
<data name="Label_ResetCheckpointsCache" xml:space="preserve"> <data name="Label_ResetCheckpointsCache" xml:space="preserve">
<value>チェックポイント・キャッシュのリセット</value> <value>Checkpointキャッシュのリセット</value>
</data> </data>
<data name="Label_ResetCheckpointsCache_Details" xml:space="preserve"> <data name="Label_ResetCheckpointsCache_Details" xml:space="preserve">
<value>インストールされているチェックポイントキャッシュを再構築します。モデルブラウザでチェックポイントのラベルが正しくない場合に使用します。</value> <value>checkpointsキャッシュを再構築します。Model Browserでcheckpointsのラベルが正しくない場合に使用してください</value>
</data> </data>
<data name="Label_PackageEnvironment" xml:space="preserve"> <data name="Label_PackageEnvironment" xml:space="preserve">
<value>パッケージ環境</value> <value>パッケージ環境</value>
</data> </data>
<data name="Action_Edit" xml:space="preserve"> <data name="Action_Edit" xml:space="preserve">
<value>編集</value> <value>編集</value>
@ -442,22 +449,22 @@
<value>組み込みPython</value> <value>組み込みPython</value>
</data> </data>
<data name="Action_CheckVersion" xml:space="preserve"> <data name="Action_CheckVersion" xml:space="preserve">
<value>チェック・バージョン</value> <value>バージョンを確認</value>
</data> </data>
<data name="Label_Integrations" xml:space="preserve"> <data name="Label_Integrations" xml:space="preserve">
<value>統合</value> <value>統合</value>
</data> </data>
<data name="Label_DiscordRichPresence" xml:space="preserve"> <data name="Label_DiscordRichPresence" xml:space="preserve">
<value>不協和音の豊かな存在感</value> <value>Discord Rich Presence</value>
</data> </data>
<data name="Label_System" xml:space="preserve"> <data name="Label_System" xml:space="preserve">
<value>システム</value> <value>システム</value>
</data> </data>
<data name="Label_AddToStartMenu" xml:space="preserve"> <data name="Label_AddToStartMenu" xml:space="preserve">
<value>スタートメニューに安定性マトリックスを追加</value> <value>スタートメニューにStability Matrixを追加</value>
</data> </data>
<data name="Label_AddToStartMenu_Details" xml:space="preserve"> <data name="Label_AddToStartMenu_Details" xml:space="preserve">
<value>現在のアプリのロケーションを使用します。</value> <value>現在のアプリの場所を使用します。アプリを移動すると、これを再度実行できます</value>
</data> </data>
<data name="Label_OnlyAvailableOnWindows" xml:space="preserve"> <data name="Label_OnlyAvailableOnWindows" xml:space="preserve">
<value>Windowsのみ</value> <value>Windowsのみ</value>
@ -469,31 +476,31 @@
<value>全ユーザーに追加</value> <value>全ユーザーに追加</value>
</data> </data>
<data name="Label_SelectNewDataDirectory" xml:space="preserve"> <data name="Label_SelectNewDataDirectory" xml:space="preserve">
<value>新しいデータディレクトリを選択</value> <value>新しいデータフォルダを選択</value>
</data> </data>
<data name="Label_SelectNewDataDirectory_Details" xml:space="preserve"> <data name="Label_SelectNewDataDirectory_Details" xml:space="preserve">
<value>既存のデータは移動しない</value> <value>既にあるデータは移動しません</value>
</data> </data>
<data name="Action_SelectDirectory" xml:space="preserve"> <data name="Action_SelectDirectory" xml:space="preserve">
<value>ディレクトリを選択</value> <value>フォルダを選択</value>
</data> </data>
<data name="Label_About" xml:space="preserve"> <data name="Label_About" xml:space="preserve">
<value>について</value> <value>About</value>
</data> </data>
<data name="Label_StabilityMatrix" xml:space="preserve"> <data name="Label_StabilityMatrix" xml:space="preserve">
<value>安定性マトリックス</value> <value>Stability Matrix</value>
</data> </data>
<data name="Label_LicenseAndOpenSourceNotices" xml:space="preserve"> <data name="Label_LicenseAndOpenSourceNotices" xml:space="preserve">
<value>ライセンスとオープンソースに関する注意事項</value> <value>ライセンスとオープンソースに関する注意事項</value>
</data> </data>
<data name="TeachingTip_ClickLaunchToGetStarted" xml:space="preserve"> <data name="TeachingTip_ClickLaunchToGetStarted" xml:space="preserve">
<value>Launchをクリックして開始する!</value> <value>&quot;Launch&quot;をクリックして始めよう!</value>
</data> </data>
<data name="Action_Stop" xml:space="preserve"> <data name="Action_Stop" xml:space="preserve">
<value>ストップ</value> <value>ストップ</value>
</data> </data>
<data name="Action_SendInput" xml:space="preserve"> <data name="Action_SendInput" xml:space="preserve">
<value>送信入力</value> <value>インプットを送信</value>
</data> </data>
<data name="Label_Input" xml:space="preserve"> <data name="Label_Input" xml:space="preserve">
<value>インプット</value> <value>インプット</value>
@ -505,7 +512,7 @@
<value>入力が必要</value> <value>入力が必要</value>
</data> </data>
<data name="Label_ConfirmQuestion" xml:space="preserve"> <data name="Label_ConfirmQuestion" xml:space="preserve">
<value>確認は?</value> <value>これでいい?</value>
</data> </data>
<data name="Action_Yes" xml:space="preserve"> <data name="Action_Yes" xml:space="preserve">
<value>はい</value> <value>はい</value>
@ -514,34 +521,34 @@
<value>いいえ</value> <value>いいえ</value>
</data> </data>
<data name="Action_OpenWebUI" xml:space="preserve"> <data name="Action_OpenWebUI" xml:space="preserve">
<value>オープンWeb UI</value> <value>Web UIを開く</value>
</data> </data>
<data name="Text_WelcomeToStabilityMatrix" xml:space="preserve"> <data name="Text_WelcomeToStabilityMatrix" xml:space="preserve">
<value>スタビリティ・マトリックスへようこそ!</value> <value>Stability Matrixへようこそ!</value>
</data> </data>
<data name="Text_OneClickInstaller_SubHeader" xml:space="preserve"> <data name="Text_OneClickInstaller_SubHeader" xml:space="preserve">
<value>お好みのインターフェイスを選択し、インストールをクリックして開始します。</value> <value>好きなUIをインストールして始めよう</value>
</data> </data>
<data name="Label_Installing" xml:space="preserve"> <data name="Label_Installing" xml:space="preserve">
<value>インストール</value> <value>インストール</value>
</data> </data>
<data name="Text_ProceedingToLaunchPage" xml:space="preserve"> <data name="Text_ProceedingToLaunchPage" xml:space="preserve">
<value>打ち上げページに進む</value> <value>Launchページに進む</value>
</data> </data>
<data name="Progress_DownloadingPackage" xml:space="preserve"> <data name="Progress_DownloadingPackage" xml:space="preserve">
<value>パッケージのダウンロード...</value> <value>パッケージをダウンロード中...</value>
</data> </data>
<data name="Progress_DownloadComplete" xml:space="preserve"> <data name="Progress_DownloadComplete" xml:space="preserve">
<value>ダウンロード完了</value> <value>ダウンロード完了</value>
</data> </data>
<data name="Progress_InstallationComplete" xml:space="preserve"> <data name="Progress_InstallationComplete" xml:space="preserve">
<value>設置完了</value> <value>インストール完了</value>
</data> </data>
<data name="Progress_InstallingPrerequisites" xml:space="preserve"> <data name="Progress_InstallingPrerequisites" xml:space="preserve">
<value>前提条件のインストール...</value> <value>前提ライブラリのインストール中...</value>
</data> </data>
<data name="Progress_InstallingPackageRequirements" xml:space="preserve"> <data name="Progress_InstallingPackageRequirements" xml:space="preserve">
<value>パッケージ要件のインストール...</value> <value>パッケージに必要なライブラリのインストール中...</value>
</data> </data>
<data name="Action_OpenInExplorer" xml:space="preserve"> <data name="Action_OpenInExplorer" xml:space="preserve">
<value>エクスプローラで開く</value> <value>エクスプローラで開く</value>
@ -553,7 +560,7 @@
<value>アンインストール</value> <value>アンインストール</value>
</data> </data>
<data name="Action_CheckForUpdates" xml:space="preserve"> <data name="Action_CheckForUpdates" xml:space="preserve">
<value>アップデート確認</value> <value>アップデート確認</value>
</data> </data>
<data name="Action_Update" xml:space="preserve"> <data name="Action_Update" xml:space="preserve">
<value>更新</value> <value>更新</value>
@ -562,13 +569,13 @@
<value>パッケージの追加</value> <value>パッケージの追加</value>
</data> </data>
<data name="TeachingTip_AddPackageToGetStarted" xml:space="preserve"> <data name="TeachingTip_AddPackageToGetStarted" xml:space="preserve">
<value>パッケージを追加して始めましょう!</value> <value>パッケージを追加して始めう!</value>
</data> </data>
<data name="Label_EnvVarsTable_Name" xml:space="preserve"> <data name="Label_EnvVarsTable_Name" xml:space="preserve">
<value>名称</value> <value>名称</value>
</data> </data>
<data name="Label_EnvVarsTable_Value" xml:space="preserve"> <data name="Label_EnvVarsTable_Value" xml:space="preserve">
<value>価値</value> <value>Value</value>
</data> </data>
<data name="Action_Remove" xml:space="preserve"> <data name="Action_Remove" xml:space="preserve">
<value>削除</value> <value>削除</value>
@ -598,7 +605,7 @@
<value>リスタート</value> <value>リスタート</value>
</data> </data>
<data name="Label_ConfirmDelete" xml:space="preserve"> <data name="Label_ConfirmDelete" xml:space="preserve">
<value>削除の確認</value> <value>削除の確認</value>
</data> </data>
<data name="Text_PackageUninstall_Details" xml:space="preserve"> <data name="Text_PackageUninstall_Details" xml:space="preserve">
<value>これにより、生成された画像や追加したファイルを含め、パッケージフォルダとそのすべてのコンテンツが削除されます。</value> <value>これにより、生成された画像や追加したファイルを含め、パッケージフォルダとそのすべてのコンテンツが削除されます。</value>
@ -610,7 +617,7 @@
<value>パッケージのアンインストール</value> <value>パッケージのアンインストール</value>
</data> </data>
<data name="Text_SomeFilesCouldNotBeDeleted" xml:space="preserve"> <data name="Text_SomeFilesCouldNotBeDeleted" xml:space="preserve">
<value>一部のファイルを削除できませんでした。パッケージディレクトリで開いているファイルをすべて閉じてから、もう一度やり直してください。</value> <value>一部のファイルを削除できませんでした。該当のディレクトリ内にあるファイルで開いていたものを全て閉じて、もう一度試してください。</value>
</data> </data>
<data name="Label_InvalidPackageType" xml:space="preserve"> <data name="Label_InvalidPackageType" xml:space="preserve">
<value>無効なパッケージタイプ</value> <value>無効なパッケージタイプ</value>
@ -637,6 +644,7 @@
<value>パッケージのインストールエラー</value> <value>パッケージのインストールエラー</value>
</data> </data>
<data name="Label_Branch" xml:space="preserve"> <data name="Label_Branch" xml:space="preserve">
<value>支店</value> <value>Branch</value>
<comment>For Japanese engineers who use git on a daily basis, it is easier to understand terms used in git as they are in English.</comment>
</data> </data>
</root> </root>

11
StabilityMatrix.Avalonia/Views/MainWindow.axaml.cs

@ -149,7 +149,10 @@ public partial class MainWindow : AppWindowBase
{ {
if (Cultures.Current?.Name == "ja-JP") if (Cultures.Current?.Name == "ja-JP")
{ {
fonts.Add(Assets.RegionalFontJapanese.UriPath.ToString()); var customFont = (Application.Current!.Resources["NotoSansJP"] as FontFamily)!;
Resources["ContentControlThemeFontFamily"] = customFont;
FontFamily = customFont;
return;
} }
else if (Compat.IsWindows) else if (Compat.IsWindows)
{ {
@ -171,16 +174,20 @@ public partial class MainWindow : AppWindowBase
else else
{ {
Resources["ContentControlThemeFontFamily"] = FontFamily.Default; Resources["ContentControlThemeFontFamily"] = FontFamily.Default;
FontFamily = FontFamily.Default;
return; return;
} }
Resources["ContentControlThemeFontFamily"] = new FontFamily(string.Join(",", fonts)); var fontString = new FontFamily(string.Join(",", fonts));
Resources["ContentControlThemeFontFamily"] = fontString;
FontFamily = fontString;
} }
catch (Exception e) catch (Exception e)
{ {
LogManager.GetCurrentClassLogger().Error(e); LogManager.GetCurrentClassLogger().Error(e);
Resources["ContentControlThemeFontFamily"] = FontFamily.Default; Resources["ContentControlThemeFontFamily"] = FontFamily.Default;
FontFamily = FontFamily.Default;
} }
} }

1
StabilityMatrix.Avalonia/Views/SettingsPage.axaml

@ -39,7 +39,6 @@
</ui:SettingsExpander> </ui:SettingsExpander>
<ui:SettingsExpander <ui:SettingsExpander
Grid.Row="2" Grid.Row="2"
IsVisible="{Binding SharedState.IsDebugMode}"
Margin="8,0,8,4" Margin="8,0,8,4"
Header="{x:Static lang:Resources.Label_Language}" Header="{x:Static lang:Resources.Label_Language}"
IconSource="Character"> IconSource="Character">

19
StabilityMatrix.Core/Models/Settings/Settings.cs

@ -1,4 +1,5 @@
using System.Text.Json.Serialization; using System.Globalization;
using System.Text.Json.Serialization;
namespace StabilityMatrix.Core.Models.Settings; namespace StabilityMatrix.Core.Models.Settings;
@ -7,7 +8,7 @@ public class Settings
public int? Version { get; set; } = 1; public int? Version { get; set; } = 1;
public bool FirstLaunchSetupComplete { get; set; } public bool FirstLaunchSetupComplete { get; set; }
public string? Theme { get; set; } = "Dark"; public string? Theme { get; set; } = "Dark";
public string? Language { get; set; } = "en-US"; public string? Language { get; set; } = GetDefaultCulture().Name;
public List<InstalledPackage> InstalledPackages { get; set; } = new(); public List<InstalledPackage> InstalledPackages { get; set; } = new();
@ -83,4 +84,18 @@ public class Settings
ActiveInstalledPackageId = InstalledPackages[0].Id; ActiveInstalledPackageId = InstalledPackages[0].Id;
} }
} }
/// <summary>
/// Return either the system default culture, if supported, or en-US
/// </summary>
/// <returns></returns>
public static CultureInfo GetDefaultCulture()
{
var supportedCultures = new[] { "en-US", "ja-JP" };
var systemCulture = CultureInfo.InstalledUICulture;
return supportedCultures.Contains(systemCulture.Name)
? systemCulture
: new CultureInfo("en-US");
}
} }

Loading…
Cancel
Save