@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/winforms-wpf-localization-guide/#article>
    schema:about <https://comcomponent.com/knowledge/resx/>, <https://comcomponent.com/knowledge/satellite-assembly/>, <https://comcomponent.com/knowledge/currentuiculture/> ;
    schema:mentions <https://comcomponent.com/knowledge/windows-forms/>, <https://comcomponent.com/knowledge/wpf/>, <https://comcomponent.com/knowledge/resource-fallback/>, <https://comcomponent.com/knowledge/neutral-resources-language/>, <https://comcomponent.com/knowledge/winforms-designer-localization/>, <https://comcomponent.com/knowledge/locbaml/>, <https://comcomponent.com/knowledge/baml/>, <https://comcomponent.com/knowledge/x-static-binding/>, <https://comcomponent.com/knowledge/tablelayoutpanel-autosize/>, <https://comcomponent.com/knowledge/rtl-layout/>, <https://comcomponent.com/knowledge/clickonce/>, <https://comcomponent.com/knowledge/invariant-culture/>, <https://comcomponent.com/knowledge/currentculture/>, <https://comcomponent.com/knowledge/log-search-degradation/>, <https://comcomponent.com/knowledge/dotnet/> .

<https://comcomponent.com/knowledge/resx/> a skos:Concept ;
    skos:prefLabel "resxリソースファイル"@ja ;
    skos:definition "文字列やその他のリソースをXML形式で保持する.NETのリソースファイル形式。ビルド時に本体または言語別のサテライトアセンブリへ変換される。"@ja ;
    skos:altLabel ".resx" ;
    skos:altLabel "リソースファイル"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/neutral-resources-language/> .

<https://comcomponent.com/knowledge/satellite-assembly/> a skos:Concept ;
    skos:prefLabel "サテライトアセンブリ"@ja ;
    skos:definition "言語別のリソースだけを収めた、本体アセンブリとは別の「言語コード/アセンブリ名.resources.dll」という形式のDLL。"@ja ;
    skos:altLabel "Satellite Assembly" .

<https://comcomponent.com/knowledge/currentuiculture/> a skos:Concept ;
    skos:prefLabel "CultureInfo.CurrentUICulture"@ja ;
    skos:definition "リソースマネージャーがどの言語のリソースを読み込むかを決める.NETのカルチャ設定。既定値はOSのユーザーインターフェイス言語に由来する。"@ja ;
    skos:altLabel "CurrentUICulture" .

<https://comcomponent.com/knowledge/windows-forms/> a skos:Concept ;
    skos:prefLabel "Windows Forms"@ja ;
    skos:definition "デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。"@ja ;
    skos:altLabel "WinForms" ;
    ks:uses <https://comcomponent.com/knowledge/winforms-designer-localization/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/rtl-layout/> ;
    ks:uses <https://comcomponent.com/knowledge/currentculture/> ;
    ks:uses <https://comcomponent.com/knowledge/currentuiculture/> .

<https://comcomponent.com/knowledge/wpf/> a skos:Concept ;
    skos:prefLabel "WPF"@ja ;
    skos:definition "XAMLでUIを宣言的に記述する、Windows専用のデスクトップUIフレームワーク。ベクターベースの描画とデータバインディングを特徴とする。"@ja ;
    skos:altLabel "Windows Presentation Foundation" ;
    ks:uses <https://comcomponent.com/knowledge/baml/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/rtl-layout/> ;
    ks:uses <https://comcomponent.com/knowledge/currentuiculture/> .

<https://comcomponent.com/knowledge/resource-fallback/> a skos:Concept ;
    skos:prefLabel "リソースフォールバック"@ja ;
    skos:definition "CurrentUICultureを起点に、特定カルチャ→ニュートラルカルチャ→本体の既定リソースの順でリソースを探索する.NETの自動探索プロセス。"@ja ;
    skos:altLabel "Resource Fallback Process" ;
    ks:uses <https://comcomponent.com/knowledge/satellite-assembly/> ;
    ks:requires <https://comcomponent.com/knowledge/currentuiculture/> .

<https://comcomponent.com/knowledge/neutral-resources-language/> a skos:Concept ;
    skos:prefLabel "NeutralResourcesLanguage属性"@ja ;
    skos:definition "本体アセンブリに埋め込まれているニュートラル(既定)リソースのカルチャを宣言する.NETのアセンブリ属性。フォールバックの終点を明確にする。"@ja ;
    skos:altLabel "NeutralLanguage" ;
    skos:altLabel "NeutralResourcesLanguageAttribute" .

<https://comcomponent.com/knowledge/winforms-designer-localization/> a skos:Concept ;
    skos:prefLabel "デザイナー方式(Localizable=true)"@ja ;
    skos:definition "フォームのLocalizableプロパティをtrueにし、Languageプロパティを切り替えて編集することで、コントロールの文字列・サイズ・位置を言語別resxへ自動保存するWindows Formsのローカライズ方式。"@ja ;
    skos:altLabel "WinFormsローカライズウォークスルー"@ja ;
    ks:requires <https://comcomponent.com/knowledge/resx/> .

<https://comcomponent.com/knowledge/locbaml/> a skos:Concept ;
    skos:prefLabel "LocBaml"@ja ;
    skos:definition "BAMLから翻訳対象の文字列を抜き出し、訳文を差し込んで言語別のBAMLを作り直す、.NET Framework時代のWPF向けサンプルツール。.NET(Core)のWPFでは動作しない。"@ja ;
    skos:altLabel "LocBamlツール"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/dotnet/> ;
    ks:requires <https://comcomponent.com/knowledge/baml/> .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja .

<https://comcomponent.com/knowledge/baml/> a skos:Concept ;
    skos:prefLabel "BAML(Binary Application Markup Language)"@ja ;
    skos:definition "XAMLをビルド時にコンパイルした2進形式。WPFアプリはXAMLそのものではなくこのBAMLをアセンブリに埋め込み、実行時に読み込む。"@ja ;
    skos:altLabel "Binary Application Markup Language" .

<https://comcomponent.com/knowledge/x-static-binding/> a skos:Concept ;
    skos:prefLabel "x:Static参照(resx)"@ja ;
    skos:definition "XAMLから、resxで生成された型付きクラスの静的プロパティの値を画面構築時に1回だけ読み込むWPFの参照方式。"@ja ;
    skos:altLabel "x:Static" ;
    skos:altLabel "x:Staticバインディング"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/wpf/> .

<https://comcomponent.com/knowledge/tablelayoutpanel-autosize/> a skos:Concept ;
    skos:prefLabel "TableLayoutPanel+AutoSizeによる可変レイアウト"@ja ;
    skos:definition "翻訳後の文字列長の変化にコントロールのサイズが追従するよう、TableLayoutPanelとAutoSizeを組み合わせるWindows Formsのレイアウト手法。"@ja ;
    skos:altLabel "TableLayoutPanel" ;
    skos:altLabel "AutoSize" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/windows-forms/> .

<https://comcomponent.com/knowledge/rtl-layout/> a skos:Concept ;
    skos:prefLabel "右から左へ書く言語(RTL)対応"@ja ;
    skos:definition "アラビア語・ヘブライ語など右から左に書く言語向けに、文字列の翻訳に加えて画面全体の左右を反転させる対応。"@ja ;
    skos:altLabel "RTL" ;
    skos:altLabel "Right-to-Left" .

<https://comcomponent.com/knowledge/clickonce/> a skos:Concept ;
    skos:prefLabel "ClickOnce"@ja ;
    skos:definition ".NETのWindowsデスクトップアプリを、利用者単位で簡単に配り、自動更新まで含めて回すための配布技術。マニフェストを中心に配布・更新・キャッシュ管理をまとめて扱う配布モデル。"@ja ;
    skos:altLabel "ClickOnce配布"@ja ;
    ks:automates <https://comcomponent.com/knowledge/satellite-assembly/> .

<https://comcomponent.com/knowledge/invariant-culture/> a skos:Concept ;
    skos:prefLabel "CultureInfo.InvariantCulture"@ja ;
    skos:definition "OSの地域設定(カルチャ)に依存しない数値・日付の書式変換に使う.NETのカルチャ。CSV出力での区切り文字との衝突回避だけでなく、和暦混入の防止やログ出力の検索性維持など、境界を越える日付・数値の文字列表現を固定したい場面で広く使われる。"@ja ;
    skos:altLabel "不変カルチャ"@ja ;
    skos:altLabel "InvariantCulture" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/log-search-degradation/> .

<https://comcomponent.com/knowledge/log-search-degradation/> a skos:Concept ;
    skos:prefLabel "多言語ログによる検索性の低下"@ja ;
    skos:definition "ログやファイル出力の書式・言語がユーザーのカルチャに応じて変化することで、調査時の全文検索やパターンマッチングが効かなくなる問題。"@ja ;
    skos:altLabel "ログの検索性低下"@ja .

<https://comcomponent.com/knowledge/currentculture/> a skos:Concept ;
    skos:prefLabel "CultureInfo.CurrentCulture"@ja ;
    skos:definition "日付・数値・通貨などの書式を決める.NETのカルチャ設定。表示するリソース言語(CurrentUICulture)とは独立して設定できる。"@ja ;
    skos:altLabel "CurrentCulture" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/resx/> ;
    schema:description "多言語化する場合、WinFormsアプリは画面文字列やメッセージの入れ物としてresxリソースを使う、というのが本記事の推奨である。単一言語のアプリにはそもそも不要で、別のリソースプロバイダーを選ぶこともできる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/resources> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/resx/> ;
    schema:description "多言語化する場合、WPFアプリもWinFormsと共通の共有resx方式を第一候補として使う、というのが本記事の推奨である。WPFにはXAMLのリソース辞書やLocBamlなど別の多言語化手段もある。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/resx/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/satellite-assembly/> ;
    schema:description "既定(ニュートラル)カルチャ以外の言語別resxに限り、ビルド時に本体アセンブリとは別のサテライトアセンブリというDLLに分離される。既定カルチャのresxは本体アセンブリに直接埋め込まれ、サテライトアセンブリは作られない。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/resources> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/resource-fallback/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/satellite-assembly/> ;
    schema:description "リソースフォールバックは、CurrentUICultureに応じたサテライトアセンブリを特定カルチャからニュートラルカルチャの順に探して行われる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/retrieve-resources> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/resource-fallback/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/currentuiculture/> ;
    schema:description "リソースフォールバックはCurrentUICultureを起点に、特定カルチャ→ニュートラルカルチャ→既定リソースの順で探索する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/retrieve-resources> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/resx/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/neutral-resources-language/> ;
    schema:description "本体アセンブリに埋め込まれる既定言語のリソースは、NeutralResourcesLanguage属性で宣言して構成する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/resources> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/winforms-designer-localization/> ;
    schema:description "WinFormsは、フォームのLocalizableプロパティを使うデザイナー方式で画面のresxを自動生成できる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/walkthrough-localizing-a-hybrid-application> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winforms-designer-localization/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/resx/> ;
    schema:description "デザイナー方式で言語ごとに編集した内容は、最終的に言語別のresxファイルとして保存される。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/walkthrough-localizing-a-hybrid-application> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/locbaml/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description "LocBamlは.NET FrameworkのWPF向けに配布されたサンプルツールで、.NET(Core以降)のWPFでは動作しない。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/locbaml/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/baml/> ;
    schema:description "LocBamlはBAMLから翻訳対象の文字列を抜き出し、訳文を差し込んで言語別のBAMLを作り直すツールである。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/baml/> ;
    schema:description "WPFアプリはXAMLそのものではなく、ビルド時にコンパイルしたBAMLをアセンブリに埋め込んで実行時に読み込む。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/x-static-binding/> ;
    schema:description "実行時の即時切り替えを必要としない場合、WPFのresx方式はXAMLからx:Staticでresxの値を参照する形が実務の第一候補になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/x-static-binding/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/wpf/> ;
    schema:description "WPFの多言語化は、LocBaml方式ではなくresx+x:Staticバインディング方式を第一候補にすることが本記事の推奨である。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tablelayoutpanel-autosize/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/windows-forms/> ;
    schema:description "翻訳後の文字列長でレイアウトが崩れないよう、WinFormsではTableLayoutPanelとAutoSizeを組み合わせる方法が公式に案内されている。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/controls/how-to-design-a-windows-forms-layout-that-responds-well-to-localization> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/rtl-layout/> ;
    schema:description "WinFormsの右から左へ書く言語対応は、RightToLeft/RightToLeftLayoutプロパティで構成する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/controls/right-to-left-and-mirroring> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/rtl-layout/> ;
    schema:description "WPFの右から左へ書く言語対応は、FlowDirectionプロパティで構成する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/wpf/advanced/bidirectional-and-mirroring-in-wpf> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/clickonce/> ;
    rdf:predicate ks:automates ;
    rdf:object <https://comcomponent.com/knowledge/satellite-assembly/> ;
    schema:description "ClickOnce配布では、既定で全言語のサテライトアセンブリが配置に自動的に含まれる。"@ja ;
    ks:evidence <https://learn.microsoft.com/visualstudio/deployment/localizing-clickonce-applications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/invariant-culture/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/log-search-degradation/> ;
    schema:description "ログ・ファイル出力の書式をCultureInfo.InvariantCultureに固定することが、多言語ログによる調査時の検索性低下に対する実務の定石とされる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.invariantculture> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/currentculture/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/log-search-degradation/> ;
    schema:description "画面表示用のCurrentCultureの書式をログ・ファイル出力にもそのまま追従させると、ユーザーのカルチャに応じて日付・数値の書式が変わり、調査時の検索性が低下することがある。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.currentculture> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/currentculture/> ;
    schema:description "WinForms画面の日付・数値表示は、既定でCurrentCultureの書式に従う。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.currentculture> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/currentculture/> ;
    schema:description "WPFの日付・数値表示の書式は要素のLanguage(既定はen-US)で決まるため、FrameworkElement.LanguagePropertyをCurrentCultureに同期させた場合に限り、WPF画面の表示もCurrentCultureの書式に従う"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.currentculture> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/currentuiculture/> ;
    schema:description "WinFormsのリソースマネージャーは、CurrentUICultureに応じて読み込む言語リソースを決める。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.currentuiculture> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpf/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/currentuiculture/> ;
    schema:description "WPFのリソース参照も、CurrentUICultureに応じて読み込む言語リソースが決まる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.globalization.cultureinfo.currentuiculture> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
