Plugin Directory

Changeset 3442330


Ignore:
Timestamp:
01/19/2026 09:18:55 AM (2 months ago)
Author:
noricku
Message:

Deploy version 2.0.0

  • Updated to version 2.0.0
  • Package created via automated build process
  • Validated package contents and size

🤖 Automated deployment via wporg-deploy.sh

Location:
markdown-renderer-for-github/trunk
Files:
426 added
4 deleted
29 edited

Legend:

Unmodified
Added
Removed
  • markdown-renderer-for-github/trunk/blocks/markdown/block.json

    r3439929 r3442330  
    4747    },
    4848    "textdomain": "markdown-renderer-for-github",
    49     "editorScript": "file:../../build/index.js",
     49    "editorScript": "gfmr-renderer-editor",
    5050    "editorStyle": [
    5151        "gfmr-variables",
     
    5454        "gfmr-code-blocks",
    5555        "gfmr-mermaid-styles",
    56         "file:./editor.css"
     56        "gfmr-renderer-editor-css"
    5757    ],
    58     "style": ["gfmr-variables", "gfmr-table-styles", "gfmr-code-blocks", "gfmr-frontmatter", "file:./style.css"]
     58    "style": ["gfmr-variables", "gfmr-table-styles", "gfmr-code-blocks", "gfmr-frontmatter", "gfmr-block-style"]
    5959}
  • markdown-renderer-for-github/trunk/changelog.txt

    r3440837 r3442330  
    77
    88## [Unreleased]
     9
     10## [2.0.0] - 2026-01-19
     11
     12## [1.16.0] - 2026-01-19
     13### Added
     14- Pro版プラグインのライセンス管理UIと初期化フロー修正
     15- Add Pro version plugin implementation with assets and features
     16### Fixed
     17- Use script handle instead of file path in block.json
     18- Use script handle instead of file path in block.json
     19- Fix translation JSON hash and domain mismatch
     20- Fix translation JSON source field mismatch
     21- Add dynamic language path resolution for Pro version
     22- Replace Japanese comments with English in block registry
     23### Documentation
     24- Add comprehensive i18n workflow documentation
     25- Add comprehensive i18n workflow documentation
     26- Add source field troubleshooting to i18n documentation
     27- Add i18n translation skill and Pro version language file
     28### Testing
     29- Add E2E tests for Gutenberg block translations
     30### Maintenance
     31- Eliminate Pro/Free version core code duplication
     32- Activate Frontmatter Settings translations in Japanese
     33- Add JED format JSON for Frontmatter Settings translations
     34- Add automated translation hash fix script
     35- Update Pro roadmap status for v2.0.0   release
     36
     37## [1.16.0] - 2026-01-16
     38### Added
     39- [Pro] Standalone mode: Pro version now works independently without requiring Free version
     40- [Pro] Automatic conflict detection and Free version deactivation
     41- [Pro] License recheck function with rate limiting and backoff strategy
     42- [Pro] Server-side feature guard system for Pro features
     43- [Pro] Enhanced license management with improved error handling
     44
     45### Changed
     46- [Pro] Architecture: Embedded Free version core for standalone operation
     47- [Pro] License validation: Improved caching and grace period handling
     48
     49### Internal
     50- [Pro] Created `includes/core/` with 15 Free version core files
     51- [Pro] Copied `assets/` and `blocks/` directories to Pro version
     52- [Pro] Added `SYNC_LOG.md` for tracking Free→Pro synchronization
     53- [Pro] Implemented `GFMR_Pro_Conflict_Detector` class
     54- [Pro] Updated bootstrap with `init_standalone()` method
    955
    1056## [1.15.0] - 2026-01-16
  • markdown-renderer-for-github/trunk/data/pro-roadmap.yaml

    r3434148 r3442330  
    22# This file is the single source of truth for Pro feature planning and status.
    33# It is NOT included in WordPress.org distribution (see .distignore).
    4 
    54version: "1.0"
    6 last_updated: "2025-01-07"
    7 
    8 # Category definitions (used by generate-roadmap.js)
     5last_updated: "2026-01-19"
    96categories:
    107  core:
     
    3229    label_en: "Performance"
    3330    order: 6
    34 
    35 # Status definitions
    3631statuses:
    3732  planned:
     
    4742    label_ja: "リリース済み"
    4843    label_en: "Released"
    49 
    50 # Pro Features
    5144features:
    52   # Core - License Management
    53   - id: license-management
    54     linear_id: MD-64
     45  - id: "license-management"
     46    linear_id: "MD-64"
    5547    title:
    5648      ja: "Pro版ライセンス管理"
     
    5951      ja: "Lemon Squeezy統合によるライセンス認証・管理システム"
    6052      en: "License authentication and management system with Lemon Squeezy integration"
    61     category: core
    62     status: released
     53    category: "core"
     54    status: "released"
    6355    target_release: "1.8.0"
    6456    release_version: "1.8.0"
    65     priority: urgent
     57    priority: "urgent"
    6658    demo_url: null
    6759    docs_url: null
    68 
    69   - id: sales-site
    70     linear_id: MD-65
     60  - id: "sales-site"
     61    linear_id: "MD-65"
    7162    title:
    7263      ja: "販売サイト構築"
     
    7566      ja: "VitePressベースの製品紹介・販売サイト"
    7667      en: "VitePress-based product showcase and sales site"
    77     category: core
    78     status: in_progress
     68    category: "core"
     69    status: "released"
    7970    target_release: "2.0.0"
    80     release_version: null
    81     priority: urgent
     71    release_version: "2.0.0"
     72    priority: "urgent"
    8273    demo_url: null
    8374    docs_url: null
    84 
    85   # Visualization
    86   - id: chart-js-integration
    87     linear_id: MD-27
     75  - id: "chart-js-integration"
     76    linear_id: "MD-27"
    8877    title:
    8978      ja: "Chart.js統合"
     
    9281      ja: "Line、Bar、Pie、Scatter等の高度なデータビジュアライゼーション"
    9382      en: "Advanced data visualization with Line, Bar, Pie, Scatter charts"
    94     category: visualization
    95     status: planned
     83    category: "visualization"
     84    status: "released"
    9685    target_release: "2.0.0"
    97     release_version: null
    98     priority: urgent
     86    release_version: "2.0.0"
     87    priority: "urgent"
    9988    demo_url: null
    10089    docs_url: null
    101 
    102   - id: advanced-diagrams
    103     linear_id: MD-16
     90  - id: "advanced-diagrams"
     91    linear_id: "MD-16"
    10492    title:
    10593      ja: "高度なダイアグラム"
     
    10896      ja: "PlantUML、D3.js、Graphviz、C4 Model、BPMN.js統合"
    10997      en: "PlantUML, D3.js, Graphviz, C4 Model, BPMN.js integration"
    110     category: visualization
    111     status: planned
     98    category: "visualization"
     99    status: "released"
    112100    target_release: "2.0.0"
    113     release_version: null
    114     priority: urgent
     101    release_version: "2.0.0"
     102    priority: "urgent"
    115103    demo_url: null
    116104    docs_url: null
    117 
    118   # Customization
    119   - id: custom-shiki-themes
    120     linear_id: MD-17
     105  - id: "custom-shiki-themes"
     106    linear_id: "MD-17"
    121107    title:
    122108      ja: "カスタムShikiテーマ"
     
    125111      ja: "VS Codeテーマのアップロード・複数テーマ管理"
    126112      en: "Upload VS Code themes and manage multiple themes"
    127     category: customization
    128     status: planned
     113    category: "customization"
     114    status: "released"
    129115    target_release: "2.0.0"
    130     release_version: null
    131     priority: high
     116    release_version: "2.0.0"
     117    priority: "high"
    132118    demo_url: null
    133119    docs_url: null
    134 
    135   # SEO
    136   - id: seo-prerendering
    137     linear_id: MD-19
     120  - id: "seo-prerendering"
     121    linear_id: "MD-19"
    138122    title:
    139123      ja: "SEOプリレンダリング"
     
    142126      ja: "Prerender.io、Puppeteer、Rendertron統合によるワンクリックSEO最適化"
    143127      en: "One-click SEO optimization with Prerender.io, Puppeteer, Rendertron"
    144     category: seo
    145     status: planned
     128    category: "seo"
     129    status: "released"
    146130    target_release: "2.0.0"
    147     release_version: null
    148     priority: urgent
     131    release_version: "2.0.0"
     132    priority: "urgent"
    149133    demo_url: null
    150134    docs_url: null
    151 
    152   # Integration
    153   - id: private-gist
    154     linear_id: MD-18
     135  - id: "private-gist"
     136    linear_id: "MD-18"
    155137    title:
    156138      ja: "プライベートGist埋め込み"
     
    159141      ja: "認証付きプライベートGistの安全なレンダリング"
    160142      en: "Secure rendering of authenticated private Gists"
    161     category: integration
    162     status: planned
     143    category: "integration"
     144    status: "released"
    163145    target_release: "2.0.0"
    164     release_version: null
    165     priority: high
     146    release_version: "2.0.0"
     147    priority: "high"
    166148    demo_url: null
    167149    docs_url: null
    168 
    169   - id: markdown-image-attachment
    170     linear_id: MD-101
     150  - id: "markdown-image-attachment"
     151    linear_id: "MD-101"
    171152    title:
    172153      ja: "Markdown画像添付"
     
    175156      ja: "Markdownブログ記事への画像添付機能"
    176157      en: "Image attachment capability for Markdown blog posts"
    177     category: integration
    178     status: planned
     158    category: "integration"
     159    status: "planned"
    179160    target_release: "2.1.0"
    180161    release_version: null
    181     priority: medium
     162    priority: "medium"
    182163    demo_url: null
    183164    docs_url: null
  • markdown-renderer-for-github/trunk/includes/class-gfmr-asset-detector.php

    r3439929 r3442330  
    1313
    1414defined( 'ABSPATH' ) || exit;
     15
     16// Prevent class redeclaration when both Free and Pro versions are active
     17if ( class_exists( __NAMESPACE__ . '\\GFMR_Asset_Detector' ) ) {
     18    return;
     19}
    1520
    1621class GFMR_Asset_Detector {
  • markdown-renderer-for-github/trunk/includes/class-gfmr-asset-manager.php

    r3440837 r3442330  
    1212
    1313defined( 'ABSPATH' ) || exit;
     14
     15// Prevent class redeclaration when both Free and Pro versions are active
     16if ( class_exists( __NAMESPACE__ . '\\GFMR_Asset_Manager' ) ) {
     17    return;
     18}
    1419
    1520class GFMR_Asset_Manager {
  • markdown-renderer-for-github/trunk/includes/class-gfmr-block-registry.php

    r3440837 r3442330  
    55
    66defined( 'ABSPATH' ) || exit;
     7
     8// Prevent class redeclaration when both Free and Pro versions are active
     9if ( class_exists( __NAMESPACE__ . '\\GFMR_Block_Registry' ) ) {
     10    return;
     11}
    712
    813class GFMR_Block_Registry {
     
    246251        }
    247252
     253        // Register gfmr-frontmatter (depends on variables for CSS custom properties)
     254        if ( ! wp_style_is( 'gfmr-frontmatter', 'registered' ) ) {
     255            wp_register_style(
     256                'gfmr-frontmatter',
     257                $plugin_url . 'assets/css/gfmr-frontmatter.css',
     258                array( 'gfmr-variables' ),
     259                $version
     260            );
     261        }
     262
     263        // Register gfmr-block-style (block-specific style.css)
     264        if ( ! wp_style_is( 'gfmr-block-style', 'registered' ) ) {
     265            wp_register_style(
     266                'gfmr-block-style',
     267                $plugin_url . 'blocks/markdown/style.css',
     268                array( 'gfmr-variables', 'gfmr-table-styles' ),
     269                $version
     270            );
     271        }
     272
    248273        $this->log_debug( 'Block styles registered for block.json' );
    249274    }
     
    345370        error_log( 'GFMR Block Registry: enqueue_editor_assets() called!' );
    346371
    347         // File-based logging (WordPress環境でのみ実行)
     372        // File-based logging (only runs in WordPress environment)
    348373        if ( function_exists( 'current_time' ) ) {
    349374            $log_file = plugin_dir_path( GFMR_PLUGIN_FILE ) . 'debug.log';
     
    428453
    429454        // Set script translations for block editor
     455        // For Pro version: includes/core/ is a symlink to Free version
     456        // Use realpath() to resolve actual Free version path and reference languages from there
     457        if ( defined( 'GFMR_PRO_VERSION' ) ) {
     458            $real_includes_dir = realpath( __DIR__ );
     459            $languages_path    = dirname( $real_includes_dir ) . '/languages';
     460        } else {
     461            $languages_path = plugin_dir_path( GFMR_PLUGIN_FILE ) . 'languages';
     462        }
     463
    430464        wp_set_script_translations(
    431465            'gfmr-renderer-editor',
    432466            'markdown-renderer-for-github',
    433             plugin_dir_path( GFMR_PLUGIN_FILE ) . 'languages'
     467            $languages_path
    434468        );
    435469
     
    475509        );
    476510
    477         // デバッグ: コンソールに登録状態を出力
     511        // Debug: Output registration status to console
    478512        if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
    479513            wp_add_inline_script(
  • markdown-renderer-for-github/trunk/includes/class-gfmr-cache-manager.php

    r3439929 r3442330  
    1313defined( 'ABSPATH' ) || exit;
    1414
     15// Prevent class redeclaration when both Free and Pro versions are active
     16if ( class_exists( __NAMESPACE__ . '\\GFMR_Cache_Manager' ) ) {
     17    return;
     18}
     19
    1520class GFMR_Cache_Manager {
    1621
  • markdown-renderer-for-github/trunk/includes/class-gfmr-cli.php

    r3439929 r3442330  
    1313
    1414if ( ! defined( 'WP_CLI' ) || ! WP_CLI ) {
     15    return;
     16}
     17
     18// Prevent class redeclaration when both Free and Pro versions are active
     19if ( class_exists( __NAMESPACE__ . '\\GFMR_CLI' ) ) {
    1520    return;
    1621}
  • markdown-renderer-for-github/trunk/includes/class-gfmr-code-highlighter.php

    r3435379 r3442330  
    1414
    1515defined( 'ABSPATH' ) || exit;
     16
     17// Prevent class redeclaration when both Free and Pro versions are active
     18if ( class_exists( __NAMESPACE__ . '\\GFMR_Code_Highlighter' ) ) {
     19    return;
     20}
    1621
    1722class GFMR_Code_Highlighter {
  • markdown-renderer-for-github/trunk/includes/class-gfmr-content-analyzer.php

    r3439929 r3442330  
    1515if ( ! defined( 'ABSPATH' ) ) {
    1616    exit;
     17}
     18
     19// Prevent class redeclaration when both Free and Pro versions are active
     20if ( class_exists( __NAMESPACE__ . '\\GFMR_Content_Analyzer' ) ) {
     21    return;
    1722}
    1823
  • markdown-renderer-for-github/trunk/includes/class-gfmr-extension-api.php

    r3440837 r3442330  
    1414if ( ! defined( 'ABSPATH' ) ) {
    1515    exit;
     16}
     17
     18// Prevent class redeclaration when both Free and Pro versions are active
     19if ( class_exists( __NAMESPACE__ . '\\GFMR_Extension_API' ) ) {
     20    return;
    1621}
    1722
  • markdown-renderer-for-github/trunk/includes/class-gfmr-frontmatter-parser.php

    r3435184 r3442330  
    1212if ( ! defined( 'ABSPATH' ) ) {
    1313    exit;
     14}
     15
     16// Prevent class redeclaration when both Free and Pro versions are active
     17if ( class_exists( __NAMESPACE__ . '\\GFMR_Frontmatter_Parser' ) ) {
     18    return;
    1419}
    1520
  • markdown-renderer-for-github/trunk/includes/class-gfmr-mermaid-ssr-handler.php

    r3435320 r3442330  
    1212
    1313defined( 'ABSPATH' ) || exit;
     14
     15// Prevent class redeclaration when both Free and Pro versions are active
     16if ( class_exists( __NAMESPACE__ . '\\GFMR_Mermaid_SSR_Handler' ) ) {
     17    return;
     18}
    1419
    1520class GFMR_Mermaid_SSR_Handler {
  • markdown-renderer-for-github/trunk/includes/class-gfmr-metadata-handler.php

    r3439929 r3442330  
    1414if ( ! defined( 'ABSPATH' ) ) {
    1515    exit; // Exit if accessed directly
     16}
     17
     18// Prevent class redeclaration when both Free and Pro versions are active
     19if ( class_exists( __NAMESPACE__ . '\\GFMR_Metadata_Handler' ) ) {
     20    return;
    1621}
    1722
  • markdown-renderer-for-github/trunk/includes/class-gfmr-renderer.php

    r3440837 r3442330  
    1010
    1111defined( 'ABSPATH' ) || exit;
     12
     13// Prevent class redeclaration when both Free and Pro versions are active
     14if ( class_exists( __NAMESPACE__ . '\\GFMR_Renderer' ) ) {
     15    return;
     16}
    1217
    1318class GFMR_Renderer {
  • markdown-renderer-for-github/trunk/includes/class-gfmr-schema-generator.php

    r3428419 r3442330  
    1515if ( ! defined( 'ABSPATH' ) ) {
    1616    exit;
     17}
     18
     19// Prevent class redeclaration when both Free and Pro versions are active
     20if ( class_exists( __NAMESPACE__ . '\\GFMR_Schema_Generator' ) ) {
     21    return;
    1722}
    1823
  • markdown-renderer-for-github/trunk/includes/class-gfmr-settings.php

    r3440837 r3442330  
    1414if ( ! defined( 'ABSPATH' ) ) {
    1515    exit;
     16}
     17
     18// Prevent class redeclaration when both Free and Pro versions are active
     19if ( class_exists( __NAMESPACE__ . '\\GFMR_Settings' ) ) {
     20    return;
    1621}
    1722
     
    455460                            $this->render_section( $section_id );
    456461                        }
     462
     463                        /**
     464                         * Fires after rendering sections for each tab
     465                         *
     466                         * Allows addons to add custom content for specific tabs.
     467                         *
     468                         * @since 1.15.0
     469                         *
     470                         * @param string $page_slug  Settings page slug
     471                         * @param string $tab_id     Current tab ID
     472                         */
     473                        do_action( 'gfmr_settings_sections', self::SETTINGS_SLUG, $tab_id );
    457474
    458475                        // Add preview for code-block tab.
     
    10411058        }
    10421059
    1043         $plugin_url = plugin_dir_url( __DIR__ );
     1060        $plugin_url = defined( 'GFMR_URI' ) ? GFMR_URI : plugin_dir_url( __DIR__ );
    10441061        $version    = defined( 'GFMR_VERSION' ) ? GFMR_VERSION : '1.0.0';
    10451062
  • markdown-renderer-for-github/trunk/includes/class-gfmr-ssr-renderer.php

    r3435320 r3442330  
    1313defined( 'ABSPATH' ) || exit;
    1414
     15// Prevent class redeclaration when both Free and Pro versions are active
     16if ( class_exists( __NAMESPACE__ . '\\GFMR_SSR_Renderer' ) ) {
     17    return;
     18}
     19
    1520class GFMR_SSR_Renderer {
    1621
  • markdown-renderer-for-github/trunk/languages/markdown-renderer-for-github-ja.po

    r3438558 r3442330  
    671671msgstr "折りたたむ"
    672672
     673#: blocks/markdown/edit.js:1108
     674msgid "Frontmatter Settings"
     675msgstr "フロントマター設定"
     676
     677#: blocks/markdown/edit.js:1112
     678msgid "Show Frontmatter Header"
     679msgstr "フロントマターヘッダーを表示"
     680
     681#: blocks/markdown/edit.js:1115
     682msgid "Display YAML frontmatter metadata as a formatted header"
     683msgstr "YAMLフロントマターメタデータをフォーマットされたヘッダーとして表示"
     684
    673685#~ msgid "Edit"
    674686#~ msgstr "編集"
     
    702714#~ msgstr "コード"
    703715
    704 #: includes/class-gfmr-settings.php:147
    705 msgid "Pro License Management"
    706 msgstr "Proライセンス管理"
    707 
    708 #: includes/class-gfmr-settings.php:154
    709 msgid "License Key"
    710 msgstr "ライセンスキー"
    711 
    712 #: includes/class-gfmr-settings.php:162
    713 msgid "License Status"
    714 msgstr "ライセンスステータス"
    715 
    716 #: includes/class-gfmr-settings.php:560
    717 msgid "Manage your Pro license key to unlock premium features."
    718 msgstr "Pro機能をアンロックするためのライセンスキーを管理します。"
    719 
    720 #: includes/class-gfmr-settings.php:580
    721 msgid "例: a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5"
    722 msgstr "例: a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5"
    723 
    724 #: includes/class-gfmr-settings.php:585
    725 msgid "Activate License"
    726 msgstr "ライセンスを有効化"
    727 
    728 #: includes/class-gfmr-settings.php:589
    729 msgid "Enter your license key to activate Pro features."
    730 msgstr "Pro機能を有効化するためにライセンスキーを入力してください。"
    731 
    732 #: includes/class-gfmr-settings.php:604
    733 msgid "Deactivate License"
    734 msgstr "ライセンスを無効化"
    735 
    736 
    737 
    738 
    739 
    740 
    741 
    742 #: includes/class-gfmr-settings.php:694
    743 #: includes/class-gfmr-license-manager.php:137
    744 msgid "Invalid license key format."
    745 msgstr "ライセンスキーの形式が無効です。"
    746 
    747 #: includes/class-gfmr-settings.php:730
    748 #: includes/class-gfmr-settings.php:764
    749 #: includes/class-gfmr-license-manager.php:153
    750 msgid "Failed to connect to license server. Please try again."
    751 msgstr "ライセンスサーバーへの接続に失敗しました。もう一度お試しください。"
    752 
    753 #: includes/class-gfmr-license-manager.php:161
    754 msgid "This license key is not valid for this product."
    755 msgstr "このライセンスキーはこの製品では有効ではありません。"
    756 
    757 #: includes/class-gfmr-license-manager.php:166
    758 #: includes/class-gfmr-settings.php:780
    759 msgid "Invalid license key."
    760 msgstr "ライセンスキーが無効です。"
    761 msgid "Please enter a license key."
    762 msgstr "ライセンスキーを入力してください。"
    763 #: includes/class-gfmr-settings.php:771
    764 msgid "You do not have permission to manage licenses."
    765 msgstr "ライセンスを管理する権限がありません。"
    766 #: includes/class-gfmr-license-manager.php:185
    767 msgid "License activated successfully."
    768 msgstr "ライセンスが正常に有効化されました。"
    769 #: includes/class-gfmr-settings.php:113
    770 msgid "Auto-apply Frontmatter Title"
    771 msgstr "フロントマタータイトルを自動適用"
    772 
    773 #: includes/class-gfmr-settings.php:121
    774 #: blocks/markdown/edit.js:909
    775 msgid "Show Frontmatter Header"
    776 msgstr "フロントマターヘッダーを表示"
    777 
    778 #: includes/class-gfmr-settings.php:342
    779 msgid "Automatically use frontmatter title as page title"
    780 msgstr "フロントマターのタイトルをページタイトルとして自動的に使用する"
    781 
    782 #: includes/class-gfmr-settings.php:345
    783 msgid "When enabled, if a Markdown block has frontmatter with a title field, it will be used as the page title in the browser tab and SEO metadata."
    784 msgstr "有効にすると、フロントマターにtitleフィールドがあるMarkdownブロックで、そのタイトルがブラウザタブとSEOメタデータのページタイトルとして使用されます。"
    785 
    786 #: includes/class-gfmr-settings.php:362
    787 msgid "Display frontmatter metadata as header by default"
    788 msgstr "フロントマターメタデータをデフォルトでヘッダーとして表示"
    789 
    790 #: includes/class-gfmr-settings.php:365
    791 msgid "When enabled, new Markdown blocks will display YAML frontmatter (title, date, author, tags) as a formatted header. This can be overridden per block."
    792 msgstr "有効にすると、新しいMarkdownブロックでYAMLフロントマター(タイトル、日付、著者、タグ)がフォーマットされたヘッダーとして表示されます。ブロックごとに個別設定で上書きできます。"
    793 
    794 #: blocks/markdown/edit.js:905
    795 msgid "Frontmatter Settings"
    796 msgstr "フロントマター設定"
    797 
    798 #: blocks/markdown/edit.js:912
    799 msgid "Display YAML frontmatter metadata as a formatted header"
    800 msgstr "YAMLフロントマターメタデータをフォーマットされたヘッダーとして表示"
    801 
    802 #: includes/class-gfmr-settings.php:327
    803 msgid "Configure general Markdown rendering options."
    804 msgstr "Markdownレンダリングの一般設定を行います。"
    805 
    806 #: includes/class-gfmr-settings.php:295
    807 msgid "Code Block"
    808 msgstr "コードブロック"
    809 
    810 #: includes/class-gfmr-settings.php:299
    811 msgid "General Settings"
    812 msgstr "一般設定"
    813 
    814 #: includes/class-gfmr-settings.php:303
    815 msgid "Structured Data"
    816 msgstr "構造化データ"
    817 
    818 #: includes/class-gfmr-settings.php:307
    819 msgid "License"
    820 msgstr "ライセンス"
    821 
    822 #: includes/class-gfmr-settings.php:170
    823 msgid "Server-Side Rendering (SSR)"
    824 msgstr "サーバーサイドレンダリング (SSR)"
    825 
    826 #: includes/class-gfmr-settings.php:177
    827 msgid "Enable SSR"
    828 msgstr "SSRを有効化"
    829 
    830 #: includes/class-gfmr-settings.php:185
    831 msgid "Code Block SSR"
    832 msgstr "コードブロックSSR"
    833 
    834 #: includes/class-gfmr-settings.php:193
    835 msgid "Mermaid Diagram SSR"
    836 msgstr "Mermaid図表SSR"
    837 
    838 #: includes/class-gfmr-settings.php:627
    839 msgid "Server-Side Rendering (SSR) pre-renders code blocks and diagrams for improved SEO and initial load performance."
    840 msgstr "サーバーサイドレンダリング (SSR) は、SEO向上と初期読み込みパフォーマンス改善のためにコードブロックと図表を事前レンダリングします。"
    841 
    842 #: includes/class-gfmr-settings.php:628
    843 msgid "Note: SSR is disabled by default. Enable it gradually to ensure compatibility with your theme and plugins."
    844 msgstr "注意: SSRはデフォルトで無効です。テーマやプラグインとの互換性を確認しながら段階的に有効化してください。"
    845 
    846 #: includes/class-gfmr-settings.php:643
    847 msgid "Enable Server-Side Rendering"
    848 msgstr "サーバーサイドレンダリングを有効化"
    849 
    850 #: includes/class-gfmr-settings.php:645
    851 msgid "When enabled, code blocks and diagrams are pre-rendered on the server for better SEO."
    852 msgstr "有効にすると、コードブロックと図表がサーバー上で事前レンダリングされ、SEOが向上します。"
    853 
    854 #: includes/class-gfmr-settings.php:661
    855 msgid "Enable SSR for code blocks"
    856 msgstr "コードブロックのSSRを有効化"
    857 
    858 #: includes/class-gfmr-settings.php:663
    859 msgid "Uses highlight.php for server-side syntax highlighting."
    860 msgstr "highlight.phpを使用してサーバーサイドでシンタックスハイライトを行います。"
    861 
    862 #: includes/class-gfmr-settings.php:679
    863 msgid "Enable SSR for Mermaid diagrams"
    864 msgstr "Mermaid図表のSSRを有効化"
    865 
    866 #: includes/class-gfmr-settings.php:681
    867 msgid "Caches rendered Mermaid SVG diagrams for faster subsequent loads."
    868 msgstr "レンダリングされたMermaid SVG図表をキャッシュし、次回以降の読み込みを高速化します。"
    869 
    870 #: includes/class-gfmr-settings.php:397
    871 msgid "Table of Contents"
    872 msgstr "目次"
    873 
    874 #: includes/class-gfmr-settings.php:242
    875 msgid "Table of Contents (TOC)"
    876 msgstr "目次(TOC)"
    877 
    878 #: includes/class-gfmr-settings.php:788
    879 msgid "Configure the automatic Table of Contents (TOC) for your Markdown content."
    880 msgstr "Markdownコンテンツの自動目次(TOC)を設定します。"
    881 
    882 #: includes/class-gfmr-settings.php:789
    883 msgid "The TOC is generated from headings (H1-H6) in your content and appears as a sticky sidebar."
    884 msgstr "TOCはコンテンツ内の見出し(H1-H6)から生成され、固定サイドバーとして表示されます。"
    885 
    886 #: includes/class-gfmr-settings.php:249
    887 msgid "Enable TOC"
    888 msgstr "TOCを有効化"
    889 
    890 #: includes/class-gfmr-settings.php:804
    891 msgid "Enable Table of Contents"
    892 msgstr "目次を有効にする"
    893 
    894 #: includes/class-gfmr-settings.php:805
    895 msgid "When enabled, a scroll-tracking TOC sidebar will be generated for posts and pages."
    896 msgstr "有効にすると、投稿とページにスクロール追跡型のTOCサイドバーが生成されます。"
    897 
    898 #: includes/class-gfmr-settings.php:257
    899 msgid "Heading Range"
    900 msgstr "見出しレベル範囲"
    901 
    902 #: includes/class-gfmr-settings.php:807
    903 msgid "Select the range of heading levels to include in the TOC."
    904 msgstr "TOCに含める見出しレベルの範囲を選択します。"
    905 
    906 #: includes/class-gfmr-settings.php:265
    907 msgid "Position"
    908 msgstr "位置"
    909 
    910 #: includes/class-gfmr-settings.php:844
    911 msgid "Left"
    912 msgstr "左"
    913 
    914 #: includes/class-gfmr-settings.php:849
    915 msgid "Right"
    916 msgstr "右"
    917 
    918 #: includes/class-gfmr-settings.php:853
    919 msgid "Choose which side of the content the TOC sidebar should appear on."
    920 msgstr "TOCサイドバーをコンテンツのどちら側に表示するか選択します。"
    921 
    922 #: includes/class-gfmr-settings.php:273
    923 msgid "Scroll Offset"
    924 msgstr "スクロールオフセット"
    925 
    926 #: includes/class-gfmr-settings.php:869
    927 msgid "Adjust the scroll offset (in pixels) for highlighting the active heading. Useful for sites with a sticky header."
    928 msgstr "アクティブな見出しをハイライトするためのスクロールオフセット(ピクセル単位)を調整します。固定ヘッダーを使用するサイトに便利です。"
    929 
    930 #: includes/class-gfmr-settings.php:281
    931 msgid "Sticky Sidebar"
    932 msgstr "固定サイドバー"
    933 
    934 #: includes/class-gfmr-settings.php:883
    935 msgid "Enable Sticky Sidebar"
    936 msgstr "固定サイドバーを有効にする"
    937 
    938 #: includes/class-gfmr-settings.php:886
    939 msgid "When enabled, the TOC sidebar will remain fixed in place while scrolling."
    940 msgstr "有効にすると、スクロール時にTOCサイドバーが固定されたままになります。"
    941 
    942 #: includes/class-gfmr-settings.php:289
    943 msgid "Mobile Visibility"
    944 msgstr "モバイル表示"
    945 
    946 #: includes/class-gfmr-settings.php:901
    947 msgid "Hide on Mobile Devices"
    948 msgstr "モバイルデバイスで非表示"
    949 
    950 #: includes/class-gfmr-settings.php:904
    951 msgid "When enabled, the TOC will be hidden on screens smaller than 768px wide."
    952 msgstr "有効にすると、768px未満の画面でTOCが非表示になります。"
     716#~ msgid "Pro License Management"
     717#~ msgstr "Proライセンス管理"
     718
     719#~ msgid "License Key"
     720#~ msgstr "ライセンスキー"
     721
     722#~ msgid "License Status"
     723#~ msgstr "ライセンスステータス"
     724
     725#~ msgid "Manage your Pro license key to unlock premium features."
     726#~ msgstr "Pro機能をアンロックするためのライセンスキーを管理します。"
     727
     728#~ msgid "例: a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5"
     729#~ msgstr "例: a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5"
     730
     731#~ msgid "Activate License"
     732#~ msgstr "ライセンスを有効化"
     733
     734#~ msgid "Enter your license key to activate Pro features."
     735#~ msgstr "Pro機能を有効化するためにライセンスキーを入力してください。"
     736
     737#~ msgid "Deactivate License"
     738#~ msgstr "ライセンスを無効化"
     739
     740#~ msgid "Invalid license key format."
     741#~ msgstr "ライセンスキーの形式が無効です。"
     742
     743#~ msgid "Failed to connect to license server. Please try again."
     744#~ msgstr "ライセンスサーバーへの接続に失敗しました。もう一度お試しください。"
     745
     746#~ msgid "This license key is not valid for this product."
     747#~ msgstr "このライセンスキーはこの製品では有効ではありません。"
     748
     749#~ msgid "Invalid license key."
     750#~ msgstr "ライセンスキーが無効です。"
     751
     752#~ msgid "Please enter a license key."
     753#~ msgstr "ライセンスキーを入力してください。"
     754
     755#~ msgid "You do not have permission to manage licenses."
     756#~ msgstr "ライセンスを管理する権限がありません。"
     757
     758#~ msgid "License activated successfully."
     759#~ msgstr "ライセンスが正常に有効化されました。"
     760
     761
     762
     763#~ msgid "Configure general Markdown rendering options."
     764#~ msgstr "Markdownレンダリングの一般設定を行います。"
     765
     766#~ msgid "Code Block"
     767#~ msgstr "コードブロック"
     768
     769#~ msgid "General Settings"
     770#~ msgstr "一般設定"
     771
     772#~ msgid "Structured Data"
     773#~ msgstr "構造化データ"
     774
     775#~ msgid "License"
     776#~ msgstr "ライセンス"
     777
     778#~ msgid "Server-Side Rendering (SSR)"
     779#~ msgstr "サーバーサイドレンダリング (SSR)"
     780
     781#~ msgid "Enable SSR"
     782#~ msgstr "SSRを有効化"
     783
     784#~ msgid "Code Block SSR"
     785#~ msgstr "コードブロックSSR"
     786
     787#~ msgid "Mermaid Diagram SSR"
     788#~ msgstr "Mermaid図表SSR"
     789
     790#~ msgid ""
     791#~ "Server-Side Rendering (SSR) pre-renders code blocks and diagrams for "
     792#~ "improved SEO and initial load performance."
     793#~ msgstr ""
     794#~ "サーバーサイドレンダリング (SSR) は、SEO向上と初期読み込みパフォーマンス改"
     795#~ "善のためにコードブロックと図表を事前レンダリングします。"
     796
     797#~ msgid ""
     798#~ "Note: SSR is disabled by default. Enable it gradually to ensure "
     799#~ "compatibility with your theme and plugins."
     800#~ msgstr ""
     801#~ "注意: SSRはデフォルトで無効です。テーマやプラグインとの互換性を確認しなが"
     802#~ "ら段階的に有効化してください。"
     803
     804#~ msgid "Enable Server-Side Rendering"
     805#~ msgstr "サーバーサイドレンダリングを有効化"
     806
     807#~ msgid ""
     808#~ "When enabled, code blocks and diagrams are pre-rendered on the server for "
     809#~ "better SEO."
     810#~ msgstr ""
     811#~ "有効にすると、コードブロックと図表がサーバー上で事前レンダリングされ、SEO"
     812#~ "が向上します。"
     813
     814#~ msgid "Enable SSR for code blocks"
     815#~ msgstr "コードブロックのSSRを有効化"
     816
     817#~ msgid "Uses highlight.php for server-side syntax highlighting."
     818#~ msgstr ""
     819#~ "highlight.phpを使用してサーバーサイドでシンタックスハイライトを行います。"
     820
     821#~ msgid "Enable SSR for Mermaid diagrams"
     822#~ msgstr "Mermaid図表のSSRを有効化"
     823
     824#~ msgid "Caches rendered Mermaid SVG diagrams for faster subsequent loads."
     825#~ msgstr ""
     826#~ "レンダリングされたMermaid SVG図表をキャッシュし、次回以降の読み込みを高速"
     827#~ "化します。"
     828
     829#~ msgid "Table of Contents"
     830#~ msgstr "目次"
     831
     832#~ msgid "Table of Contents (TOC)"
     833#~ msgstr "目次(TOC)"
     834
     835#~ msgid ""
     836#~ "Configure the automatic Table of Contents (TOC) for your Markdown content."
     837#~ msgstr "Markdownコンテンツの自動目次(TOC)を設定します。"
     838
     839#~ msgid ""
     840#~ "The TOC is generated from headings (H1-H6) in your content and appears as "
     841#~ "a sticky sidebar."
     842#~ msgstr ""
     843#~ "TOCはコンテンツ内の見出し(H1-H6)から生成され、固定サイドバーとして表示さ"
     844#~ "れます。"
     845
     846#~ msgid "Enable TOC"
     847#~ msgstr "TOCを有効化"
     848
     849#~ msgid "Enable Table of Contents"
     850#~ msgstr "目次を有効にする"
     851
     852#~ msgid ""
     853#~ "When enabled, a scroll-tracking TOC sidebar will be generated for posts "
     854#~ "and pages."
     855#~ msgstr ""
     856#~ "有効にすると、投稿とページにスクロール追跡型のTOCサイドバーが生成されま"
     857#~ "す。"
     858
     859#~ msgid "Heading Range"
     860#~ msgstr "見出しレベル範囲"
     861
     862#~ msgid "Select the range of heading levels to include in the TOC."
     863#~ msgstr "TOCに含める見出しレベルの範囲を選択します。"
     864
     865#~ msgid "Position"
     866#~ msgstr "位置"
     867
     868#~ msgid "Left"
     869#~ msgstr "左"
     870
     871#~ msgid "Right"
     872#~ msgstr "右"
     873
     874#~ msgid "Choose which side of the content the TOC sidebar should appear on."
     875#~ msgstr "TOCサイドバーをコンテンツのどちら側に表示するか選択します。"
     876
     877#~ msgid "Scroll Offset"
     878#~ msgstr "スクロールオフセット"
     879
     880#~ msgid ""
     881#~ "Adjust the scroll offset (in pixels) for highlighting the active heading. "
     882#~ "Useful for sites with a sticky header."
     883#~ msgstr ""
     884#~ "アクティブな見出しをハイライトするためのスクロールオフセット(ピクセル単"
     885#~ "位)を調整します。固定ヘッダーを使用するサイトに便利です。"
     886
     887#~ msgid "Sticky Sidebar"
     888#~ msgstr "固定サイドバー"
     889
     890#~ msgid "Enable Sticky Sidebar"
     891#~ msgstr "固定サイドバーを有効にする"
     892
     893#~ msgid ""
     894#~ "When enabled, the TOC sidebar will remain fixed in place while scrolling."
     895#~ msgstr ""
     896#~ "有効にすると、スクロール時にTOCサイドバーが固定されたままになります。"
     897
     898#~ msgid "Mobile Visibility"
     899#~ msgstr "モバイル表示"
     900
     901#~ msgid "Hide on Mobile Devices"
     902#~ msgstr "モバイルデバイスで非表示"
     903
     904#~ msgid ""
     905#~ "When enabled, the TOC will be hidden on screens smaller than 768px wide."
     906#~ msgstr "有効にすると、768px未満の画面でTOCが非表示になります。"
     907
     908#~ msgid "Extensions"
     909#~ msgstr "拡張機能"
     910
     911#~ msgid ""
     912#~ "Extend the functionality of Markdown Renderer for GitHub by installing "
     913#~ "addons."
     914#~ msgstr ""
     915#~ "アドオンをインストールしてMarkdown Renderer for GitHubの機能を拡張できま"
     916#~ "す。"
     917
     918#~ msgid ""
     919#~ "No addons are currently installed. Install addons to add new features and "
     920#~ "capabilities."
     921#~ msgstr ""
     922#~ "現在アドオンはインストールされていません。アドオンをインストールして新しい"
     923#~ "機能を追加できます。"
     924
     925#~ msgid "Installed Addons"
     926#~ msgstr "インストール済みアドオン"
     927
     928#~ msgid "Name"
     929#~ msgstr "名前"
     930
     931#~ msgid "Version"
     932#~ msgstr "バージョン"
     933
     934#~ msgid "Author"
     935#~ msgstr "作成者"
  • markdown-renderer-for-github/trunk/languages/markdown-renderer-for-github.pot

    r3430404 r3442330  
    1 # Copyright (C) 2025 Wakalab
    2 # This file is distributed under the GPLv2 or later.
    3 msgid ""
    4 msgstr ""
    5 "Project-Id-Version: Markdown Renderer for GitHub 1.6.0\n"
    6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/markdown-renderer-for-github\n"
     1# SOME DESCRIPTIVE TITLE.
     2# Copyright (C) YEAR Wakalab
     3# This file is distributed under the same license as the PACKAGE package.
     4# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
     5#
     6#, fuzzy
     7msgid ""
     8msgstr ""
     9"Project-Id-Version: PACKAGE VERSION\n"
     10"Report-Msgid-Bugs-To: \n"
     11"POT-Creation-Date: 2026-01-19 05:26+0900\n"
     12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    713"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    814"Language-Team: LANGUAGE <LL@li.org>\n"
     15"Language: \n"
    916"MIME-Version: 1.0\n"
    10 "Content-Type: text/plain; charset=UTF-8\n"
     17"Content-Type: text/plain; charset=CHARSET\n"
    1118"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2026-01-01T00:00:00+00:00\n"
    13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    14 "X-Generator: WP-CLI 2.12.0\n"
    15 "X-Domain: markdown-renderer-for-github\n"
    16 
    17 #. Plugin Name of the plugin
    18 #: markdown-renderer-for-github.php
    19 #: includes/class-gfmr-settings.php:63
     19
     20#: includes/class-gfmr-asset-manager.php:225
     21#: includes/class-gfmr-asset-manager.php:243
     22msgid "Loading..."
     23msgstr ""
     24
     25#: includes/class-gfmr-asset-manager.php:226
     26msgid "Error occurred"
     27msgstr ""
     28
     29#: includes/class-gfmr-asset-manager.php:238
     30msgid "Copy"
     31msgstr ""
     32
     33#: includes/class-gfmr-asset-manager.php:239
     34msgid "Copied!"
     35msgstr ""
     36
     37#: includes/class-gfmr-asset-manager.php:240
     38msgid "Copy code"
     39msgstr ""
     40
     41#: includes/class-gfmr-asset-manager.php:241
     42msgid "Code copied to clipboard"
     43msgstr ""
     44
     45#: includes/class-gfmr-asset-manager.php:242
     46msgid "Failed to copy"
     47msgstr ""
     48
     49#: includes/class-gfmr-asset-manager.php:244
     50msgid "Error"
     51msgstr ""
     52
     53#: includes/class-gfmr-asset-manager.php:245
     54msgid "Retry"
     55msgstr ""
     56
     57#: includes/class-gfmr-asset-manager.php:246
     58msgid "Close"
     59msgstr ""
     60
     61#: includes/class-gfmr-asset-manager.php:247
     62msgid "Expand"
     63msgstr ""
     64
     65#: includes/class-gfmr-asset-manager.php:248
     66msgid "Collapse"
     67msgstr ""
     68
     69#: includes/class-gfmr-mermaid-ssr-handler.php:98
     70msgid "Rendering diagram..."
     71msgstr ""
     72
     73#: includes/class-gfmr-metadata-handler.php:298
     74#: includes/class-gfmr-metadata-handler.php:340
     75msgid "Security check failed."
     76msgstr ""
     77
     78#: includes/class-gfmr-metadata-handler.php:303
     79msgid "Insufficient permissions."
     80msgstr ""
     81
     82#: includes/class-gfmr-renderer.php:456
     83msgid "Processing Markdown on the frontend..."
     84msgstr ""
     85
     86#: includes/class-gfmr-renderer.php:656
     87msgid "Cannot unserialize singleton"
     88msgstr ""
     89
     90#: includes/class-gfmr-settings.php:83
     91msgid "Markdown Renderer for GitHub Settings"
     92msgstr ""
     93
     94#: includes/class-gfmr-settings.php:84
    2095msgid "Markdown Renderer for GitHub"
    2196msgstr ""
    2297
    23 #. Plugin URI of the plugin
    24 #: markdown-renderer-for-github.php
    25 msgid "https://github.com/wakalab/markdown-renderer-for-github"
    26 msgstr ""
    27 
    28 #. Description of the plugin
    29 #: markdown-renderer-for-github.php
    30 msgid "Renders GFM (GitHub Flavored Markdown) content beautifully on the front end using JavaScript libraries. It supports syntax highlighting for code blocks and diagram rendering with Mermaid.js."
    31 msgstr ""
    32 
    33 #. Author of the plugin
    34 #: markdown-renderer-for-github.php
    35 msgid "Wakalab"
    36 msgstr ""
    37 
    38 #. Author URI of the plugin
    39 #: markdown-renderer-for-github.php
    40 msgid "https://wakalab.dev/"
    41 msgstr ""
    42 
    43 #: includes/class-gfmr-metadata-handler.php:291
    44 #: includes/class-gfmr-metadata-handler.php:333
    45 msgid "Security check failed."
    46 msgstr ""
    47 
    48 #: includes/class-gfmr-metadata-handler.php:296
    49 msgid "Insufficient permissions."
    50 msgstr ""
    51 
    52 #: includes/class-gfmr-renderer.php:332
    53 msgid "Processing Markdown on the frontend..."
    54 msgstr ""
    55 
    56 #: includes/class-gfmr-renderer.php:400
    57 msgid "Processing Markdown content..."
    58 msgstr ""
    59 
    60 #: includes/class-gfmr-renderer.php:401
    61 msgid "Network error: Unable to load code highlighting feature."
    62 msgstr ""
    63 
    64 #: includes/class-gfmr-renderer.php:402
    65 msgid "Module loading error: Code highlighting feature is unavailable."
    66 msgstr ""
    67 
    68 #: includes/class-gfmr-renderer.php:403
    69 msgid "Highlighter creation error: Some languages are not supported."
    70 msgstr ""
    71 
    72 #: includes/class-gfmr-renderer.php:404
    73 msgid "Timeout error: Unable to load code highlighting feature."
    74 msgstr ""
    75 
    76 #: includes/class-gfmr-renderer.php:405
    77 msgid "Unknown error: Code highlighting feature is unavailable."
    78 msgstr ""
    79 
    80 #. translators: %d is the block number
    81 #: includes/class-gfmr-renderer.php:407
    82 #, php-format
    83 msgid "Mermaid Render Error (Block %d):"
    84 msgstr ""
    85 
    86 #: includes/class-gfmr-renderer.php:408
    87 msgid "Original Code"
    88 msgstr ""
    89 
    90 #: includes/class-gfmr-renderer.php:409
    91 msgid "Check browser console for detailed error information."
    92 msgstr ""
    93 
    94 #: includes/class-gfmr-renderer.php:410
    95 msgid "Markdown Block Error:"
    96 msgstr ""
    97 
    98 #: includes/class-gfmr-renderer.php:411
    99 msgid "An error occurred while displaying content."
    100 msgstr ""
    101 
    102 #: includes/class-gfmr-asset-manager.php:140
    103 #: includes/class-gfmr-renderer.php:412
    104 msgid "Copy"
    105 msgstr ""
    106 
    107 #: includes/class-gfmr-asset-manager.php:141
    108 #: includes/class-gfmr-renderer.php:413
    109 msgid "Copied!"
    110 msgstr ""
    111 
    112 #: includes/class-gfmr-renderer.php:414
    113 msgid "Copy code to clipboard"
    114 msgstr ""
    115 
    116 #: includes/class-gfmr-asset-manager.php:144
    117 #: includes/class-gfmr-renderer.php:415
    118 msgid "Failed to copy"
    119 msgstr ""
    120 
    121 #. translators: %d is the number of characters copied
    122 #: includes/class-gfmr-renderer.php:417
    123 #, php-format
    124 msgid "Copied! %d characters"
    125 msgstr ""
    126 
    127 #: includes/class-gfmr-renderer.php:418
    128 msgid "Mermaid Diagram Error"
    129 msgstr ""
    130 
    131 #: includes/class-gfmr-renderer.php:419
    132 msgid "How to fix this"
    133 msgstr ""
    134 
    135 #: includes/class-gfmr-renderer.php:420
    136 msgid "Block"
    137 msgstr ""
    138 
    139 #: includes/class-gfmr-renderer.php:421
    140 msgid "Line"
    141 msgstr ""
    142 
    143 #: includes/class-gfmr-renderer.php:422
    144 msgid "Technical details"
    145 msgstr ""
    146 
    147 #: includes/class-gfmr-renderer.php:423
    148 msgid "Error message"
    149 msgstr ""
    150 
    151 #: includes/class-gfmr-renderer.php:424
    152 msgid "Code analysis"
    153 msgstr ""
    154 
    155 #: includes/class-gfmr-renderer.php:425
    156 msgid "Show examples"
    157 msgstr ""
    158 
    159 #: includes/class-gfmr-renderer.php:426
    160 msgid "Hide examples"
    161 msgstr ""
    162 
    163 #: includes/class-gfmr-renderer.php:427
    164 msgid "Copy to clipboard"
    165 msgstr ""
    166 
    167 #: includes/class-gfmr-renderer.php:428
    168 msgid "View Mermaid Documentation"
    169 msgstr ""
    170 
    171 #: includes/class-gfmr-renderer.php:429
    172 msgid "Learn"
    173 msgstr ""
    174 
    175 #: includes/class-gfmr-renderer.php:430
    176 msgid "Check syntax errors"
    177 msgstr ""
    178 
    179 #: includes/class-gfmr-renderer.php:431
    180 msgid "Review the basic Mermaid syntax rules"
    181 msgstr ""
    182 
    183 #: includes/class-gfmr-renderer.php:432
    184 msgid "Verify diagram type"
    185 msgstr ""
    186 
    187 #: includes/class-gfmr-renderer.php:433
    188 msgid "Ensure the first line specifies a valid diagram type"
    189 msgstr ""
    190 
    191 #: includes/class-gfmr-renderer.php:434
    192 msgid "Supported diagram types"
    193 msgstr ""
    194 
    195 #: includes/class-gfmr-renderer.php:435
    196 msgid "Choose from one of the supported diagram types"
    197 msgstr ""
    198 
    199 #: includes/class-gfmr-renderer.php:436
    200 msgid "Check arrow syntax"
    201 msgstr ""
    202 
    203 #: includes/class-gfmr-renderer.php:437
    204 msgid "Verify flowchart arrow connections"
    205 msgstr ""
    206 
    207 #: includes/class-gfmr-renderer.php:438
    208 msgid "Check participants"
    209 msgstr ""
    210 
    211 #: includes/class-gfmr-renderer.php:439
    212 msgid "Ensure all participants are properly defined"
    213 msgstr ""
    214 
    215 #: includes/class-gfmr-renderer.php:440
    216 msgid "Simplify diagram"
    217 msgstr ""
    218 
    219 #: includes/class-gfmr-renderer.php:441
    220 msgid "Try reducing complexity or splitting into smaller diagrams"
    221 msgstr ""
    222 
    223 #: includes/class-gfmr-renderer.php:442
    224 msgid "Check general syntax"
    225 msgstr ""
    226 
    227 #: includes/class-gfmr-renderer.php:443
    228 msgid "Review the overall syntax structure"
    229 msgstr ""
    230 
    231 #: includes/class-gfmr-renderer.php:444
    232 msgid "General troubleshooting"
    233 msgstr ""
    234 
    235 #: includes/class-gfmr-renderer.php:445
    236 msgid "Check the Mermaid documentation"
    237 msgstr ""
    238 
    239 #: includes/class-gfmr-renderer.php:446
    240 msgid "There is a syntax error in your Mermaid code. Please check the structure and keywords."
    241 msgstr ""
    242 
    243 #: includes/class-gfmr-renderer.php:447
    244 msgid "The diagram type is not recognized or supported. Please use a valid diagram type."
    245 msgstr ""
    246 
    247 #: includes/class-gfmr-renderer.php:448
    248 msgid "There is an error in your flowchart syntax. Check node names and arrow connections."
    249 msgstr ""
    250 
    251 #: includes/class-gfmr-renderer.php:449
    252 msgid "There is an error in your sequence diagram. Check participant names and message syntax."
    253 msgstr ""
    254 
    255 #: includes/class-gfmr-renderer.php:450
    256 msgid "The diagram could not be rendered. Try simplifying the structure or checking browser compatibility."
    257 msgstr ""
    258 
    259 #: includes/class-gfmr-renderer.php:451
    260 msgid "An unexpected error occurred while processing the diagram."
    261 msgstr ""
    262 
    263 #: includes/class-gfmr-renderer.php:452
    264 msgid "Code is empty"
    265 msgstr ""
    266 
    267 #: includes/class-gfmr-renderer.php:453
    268 msgid "Missing diagram type declaration"
    269 msgstr ""
    270 
    271 #: includes/class-gfmr-renderer.php:454
    272 msgid "Too many empty lines"
    273 msgstr ""
    274 
    275 #: includes/class-gfmr-renderer.php:455
    276 msgid "Contains full-width spaces (use regular spaces)"
    277 msgstr ""
    278 
    279 #: includes/class-gfmr-renderer.php:456
    280 msgid "Basic flowchart"
    281 msgstr ""
    282 
    283 #: includes/class-gfmr-renderer.php:457
    284 msgid "Basic sequence diagram"
    285 msgstr ""
    286 
    287 #: includes/class-gfmr-renderer.php:458
    288 msgid "Top-down flowchart"
    289 msgstr ""
    290 
    291 #: includes/class-gfmr-renderer.php:459
    292 msgid "Sequence diagram"
    293 msgstr ""
    294 
    295 #: includes/class-gfmr-renderer.php:460
    296 msgid "Class diagram"
    297 msgstr ""
    298 
    299 #: includes/class-gfmr-renderer.php:461
    300 msgid "Pie chart"
    301 msgstr ""
    302 
    303 #: includes/class-gfmr-renderer.php:462
    304 msgid "Basic arrow"
    305 msgstr ""
    306 
    307 #: includes/class-gfmr-renderer.php:463
    308 msgid "Dotted arrow"
    309 msgstr ""
    310 
    311 #: includes/class-gfmr-renderer.php:464
    312 msgid "Thick arrow"
    313 msgstr ""
    314 
    315 #: includes/class-gfmr-renderer.php:465
    316 msgid "Arrow with text"
    317 msgstr ""
    318 
    319 #: includes/class-gfmr-renderer.php:466
    320 msgid "Define participant"
    321 msgstr ""
    322 
    323 #: includes/class-gfmr-renderer.php:467
    324 msgid "Send message"
    325 msgstr ""
    326 
    327 #: includes/class-gfmr-renderer.php:468
    328 msgid "Add note"
    329 msgstr ""
    330 
    331 #: includes/class-gfmr-renderer.php:469
    332 msgid "Flowchart with different shapes"
    333 msgstr ""
    334 
    335 #: includes/class-gfmr-renderer.php:470
    336 msgid "flowchart diagram"
    337 msgstr ""
    338 
    339 #: includes/class-gfmr-renderer.php:471
    340 msgid "sequenceDiagram diagram"
    341 msgstr ""
    342 
    343 #: includes/class-gfmr-renderer.php:472
    344 msgid "classDiagram diagram"
    345 msgstr ""
    346 
    347 #: includes/class-gfmr-renderer.php:473
    348 msgid "pie diagram"
    349 msgstr ""
    350 
    351 #: includes/class-gfmr-renderer.php:475
    352 msgid "Diagram Viewer"
    353 msgstr ""
    354 
    355 #: includes/class-gfmr-renderer.php:476
    356 msgid "Zoom In"
    357 msgstr ""
    358 
    359 #: includes/class-gfmr-renderer.php:477
    360 msgid "Zoom Out"
    361 msgstr ""
    362 
    363 #: includes/class-gfmr-renderer.php:478
    364 msgid "Fit to View"
    365 msgstr ""
    366 
    367 #: includes/class-gfmr-asset-manager.php:148
    368 #: includes/class-gfmr-renderer.php:479
    369 msgid "Close"
    370 msgstr ""
    371 
    372 #: includes/class-gfmr-renderer.php:480
    373 msgid "Click and drag to pan • Scroll to zoom • ESC to close"
    374 msgstr ""
    375 
    376 #: includes/class-gfmr-renderer.php:595
    377 msgid "Cannot unserialize singleton"
    378 msgstr ""
    379 
    380 #: includes/class-gfmr-settings.php:61
    381 msgid "Markdown Renderer Settings"
    382 msgstr ""
    383 
    384 #: includes/class-gfmr-settings.php:62
    385 msgid "Markdown Renderer"
    386 msgstr ""
    387 
    388 #: includes/class-gfmr-settings.php:85
     98#: includes/class-gfmr-settings.php:107
    38999msgid "Code Block Theme"
    390100msgstr ""
    391101
    392 #: includes/class-gfmr-settings.php:92
     102#: includes/class-gfmr-settings.php:114
    393103msgid "Theme Selection"
    394104msgstr ""
    395105
    396 #: includes/class-gfmr-settings.php:127
     106#: includes/class-gfmr-settings.php:123 includes/class-gfmr-settings.php:378
     107msgid "General Settings"
     108msgstr ""
     109
     110#: includes/class-gfmr-settings.php:130
     111msgid "Auto-apply Frontmatter Title"
     112msgstr ""
     113
     114#: includes/class-gfmr-settings.php:138
     115msgid "Show Frontmatter Header"
     116msgstr ""
     117
     118#: includes/class-gfmr-settings.php:147
     119msgid "Structured Data (Schema.org)"
     120msgstr ""
     121
     122#: includes/class-gfmr-settings.php:154
     123msgid "Enable Structured Data"
     124msgstr ""
     125
     126#: includes/class-gfmr-settings.php:162
     127msgid "Auto-detect Article Type"
     128msgstr ""
     129
     130#: includes/class-gfmr-settings.php:170
     131msgid "Include Author Information"
     132msgstr ""
     133
     134#: includes/class-gfmr-settings.php:178
     135msgid "Include Publisher Information"
     136msgstr ""
     137
     138#: includes/class-gfmr-settings.php:187
     139msgid "Server-Side Rendering (SSR)"
     140msgstr ""
     141
     142#: includes/class-gfmr-settings.php:194
     143msgid "Enable SSR"
     144msgstr ""
     145
     146#: includes/class-gfmr-settings.php:202
     147msgid "Code Block SSR"
     148msgstr ""
     149
     150#: includes/class-gfmr-settings.php:210
     151msgid "Mermaid Diagram SSR"
     152msgstr ""
     153
     154#: includes/class-gfmr-settings.php:219
     155msgid "Table of Contents (TOC)"
     156msgstr ""
     157
     158#: includes/class-gfmr-settings.php:226
     159msgid "Enable TOC"
     160msgstr ""
     161
     162#: includes/class-gfmr-settings.php:234
     163msgid "Heading Range"
     164msgstr ""
     165
     166#: includes/class-gfmr-settings.php:242
     167msgid "Position"
     168msgstr ""
     169
     170#: includes/class-gfmr-settings.php:250
     171msgid "Scroll Offset"
     172msgstr ""
     173
     174#: includes/class-gfmr-settings.php:258
     175msgid "Sticky Sidebar"
     176msgstr ""
     177
     178#: includes/class-gfmr-settings.php:266
     179msgid "Mobile Visibility"
     180msgstr ""
     181
     182#: includes/class-gfmr-settings.php:275 includes/class-gfmr-settings.php:390
     183msgid "Extensions"
     184msgstr ""
     185
     186#: includes/class-gfmr-settings.php:329
    397187msgid "Invalid theme selection. Reset to default."
    398188msgstr ""
    399189
    400 #: includes/class-gfmr-settings.php:148
     190#: includes/class-gfmr-settings.php:374
     191msgid "Code Block"
     192msgstr ""
     193
     194#: includes/class-gfmr-settings.php:382
     195msgid "Table of Contents"
     196msgstr ""
     197
     198#: includes/class-gfmr-settings.php:386
     199msgid "Structured Data"
     200msgstr ""
     201
     202#: includes/class-gfmr-settings.php:421
    401203msgid "Settings saved successfully."
    402204msgstr ""
    403205
    404 #: includes/class-gfmr-settings.php:170
     206#: includes/class-gfmr-settings.php:479
    405207msgid "Live Preview"
    406208msgstr ""
    407209
    408 #: includes/class-gfmr-settings.php:187
    409 msgid "Preview updates automatically when you select a different theme option above."
    410 msgstr ""
    411 
    412 #. translators: %s: current theme name
    413 #: includes/class-gfmr-settings.php:193
     210#: includes/class-gfmr-settings.php:498
     211msgid ""
     212"Preview updates automatically when you select a different theme option above."
     213msgstr ""
     214
     215#: includes/class-gfmr-settings.php:504
    414216#, php-format
    415217msgid "Current theme: %s"
    416218msgstr ""
    417219
    418 #: includes/class-gfmr-settings.php:326
     220#: includes/class-gfmr-settings.php:560
     221msgid "Choose the appearance theme for code blocks in your content."
     222msgstr ""
     223
     224#: includes/class-gfmr-settings.php:567
     225msgid "Configure general Markdown rendering options."
     226msgstr ""
     227
     228#: includes/class-gfmr-settings.php:582
     229msgid "Automatically use frontmatter title as page title"
     230msgstr ""
     231
     232#: includes/class-gfmr-settings.php:585
     233msgid ""
     234"When enabled, if a Markdown block has frontmatter with a title field, it "
     235"will be used as the page title in the browser tab and SEO metadata."
     236msgstr ""
     237
     238#: includes/class-gfmr-settings.php:602
     239msgid "Display frontmatter metadata as header by default"
     240msgstr ""
     241
     242#: includes/class-gfmr-settings.php:605
     243msgid ""
     244"When enabled, new Markdown blocks will display YAML frontmatter (title, "
     245"date, author, tags) as a formatted header. This can be overridden per block."
     246msgstr ""
     247
     248#: includes/class-gfmr-settings.php:624
     249msgid "Light Theme"
     250msgstr ""
     251
     252#: includes/class-gfmr-settings.php:625
     253msgid "Bright background, suitable for day-time reading"
     254msgstr ""
     255
     256#: includes/class-gfmr-settings.php:635
     257msgid "Dark Theme"
     258msgstr ""
     259
     260#: includes/class-gfmr-settings.php:636
     261msgid "Dark background, easier on the eyes"
     262msgstr ""
     263
     264#: includes/class-gfmr-settings.php:646
     265msgid "Follow System Setting"
     266msgstr ""
     267
     268#: includes/class-gfmr-settings.php:647
     269msgid "Automatically match your device's light/dark preference"
     270msgstr ""
     271
     272#: includes/class-gfmr-settings.php:658
     273msgid ""
     274"Configure Schema.org structured data (JSON-LD) for SEO optimization and rich "
     275"snippets."
     276msgstr ""
     277
     278#: includes/class-gfmr-settings.php:659
     279msgid ""
     280"Note: If you are generating structured data with another SEO plugin, we "
     281"recommend disabling this feature to avoid duplication."
     282msgstr ""
     283
     284#: includes/class-gfmr-settings.php:674
     285msgid "Enable automatic generation of Schema.org structured data"
     286msgstr ""
     287
     288#: includes/class-gfmr-settings.php:676
     289msgid ""
     290"When enabled, JSON-LD structured data will be automatically added to posts "
     291"and pages."
     292msgstr ""
     293
     294#: includes/class-gfmr-settings.php:692
     295msgid "Auto-detect article type (Article, TechArticle, HowTo)"
     296msgstr ""
     297
     298#: includes/class-gfmr-settings.php:694
     299msgid ""
     300"When enabled, the plugin analyzes content to determine the optimal schema "
     301"type."
     302msgstr ""
     303
     304#: includes/class-gfmr-settings.php:710
     305msgid "Include author information in structured data"
     306msgstr ""
     307
     308#: includes/class-gfmr-settings.php:727
     309msgid "Include publisher (site) information in structured data"
     310msgstr ""
     311
     312#: includes/class-gfmr-settings.php:736
     313msgid ""
     314"Server-Side Rendering (SSR) pre-renders code blocks and diagrams for "
     315"improved SEO and initial load performance."
     316msgstr ""
     317
     318#: includes/class-gfmr-settings.php:737
     319msgid ""
     320"Note: SSR is disabled by default. Enable it gradually to ensure "
     321"compatibility with your theme and plugins."
     322msgstr ""
     323
     324#: includes/class-gfmr-settings.php:752
     325msgid "Enable Server-Side Rendering"
     326msgstr ""
     327
     328#: includes/class-gfmr-settings.php:754
     329msgid ""
     330"When enabled, code blocks and diagrams are pre-rendered on the server for "
     331"better SEO."
     332msgstr ""
     333
     334#: includes/class-gfmr-settings.php:770
     335msgid "Enable SSR for code blocks"
     336msgstr ""
     337
     338#: includes/class-gfmr-settings.php:772
     339msgid "Uses highlight.php for server-side syntax highlighting."
     340msgstr ""
     341
     342#: includes/class-gfmr-settings.php:788
     343msgid "Enable SSR for Mermaid diagrams"
     344msgstr ""
     345
     346#: includes/class-gfmr-settings.php:790
     347msgid "Caches rendered Mermaid SVG diagrams for faster subsequent loads."
     348msgstr ""
     349
     350#: includes/class-gfmr-settings.php:798
     351msgid ""
     352"Configure the automatic Table of Contents (TOC) for your Markdown content."
     353msgstr ""
     354
     355#: includes/class-gfmr-settings.php:799
     356msgid ""
     357"The TOC is generated from headings (H1-H6) in your content and appears as a "
     358"sticky sidebar."
     359msgstr ""
     360
     361#: includes/class-gfmr-settings.php:814
     362msgid "Enable Table of Contents"
     363msgstr ""
     364
     365#: includes/class-gfmr-settings.php:816
     366msgid ""
     367"When enabled, a scroll-tracking TOC sidebar will be generated for posts and "
     368"pages."
     369msgstr ""
     370
     371#: includes/class-gfmr-settings.php:839
     372msgid "Select the range of heading levels to include in the TOC."
     373msgstr ""
     374
     375#: includes/class-gfmr-settings.php:853
     376msgid "Left"
     377msgstr ""
     378
     379#: includes/class-gfmr-settings.php:858
     380msgid "Right"
     381msgstr ""
     382
     383#: includes/class-gfmr-settings.php:861
     384msgid "Choose which side of the content the TOC sidebar should appear on."
     385msgstr ""
     386
     387#: includes/class-gfmr-settings.php:877
     388msgid ""
     389"Adjust the scroll offset (in pixels) for highlighting the active heading. "
     390"Useful for sites with a sticky header."
     391msgstr ""
     392
     393#: includes/class-gfmr-settings.php:893
     394msgid "Enable Sticky Sidebar"
     395msgstr ""
     396
     397#: includes/class-gfmr-settings.php:895
     398msgid ""
     399"When enabled, the TOC sidebar will remain fixed in place while scrolling."
     400msgstr ""
     401
     402#: includes/class-gfmr-settings.php:911
     403msgid "Hide on Mobile Devices"
     404msgstr ""
     405
     406#: includes/class-gfmr-settings.php:913
     407msgid ""
     408"When enabled, the TOC will be hidden on screens smaller than 768px wide."
     409msgstr ""
     410
     411#: includes/class-gfmr-settings.php:924
     412msgid "You do not have permission to perform this action."
     413msgstr ""
     414
     415#: includes/class-gfmr-settings.php:930
     416msgid "Invalid theme selected."
     417msgstr ""
     418
     419#: includes/class-gfmr-settings.php:1087
    419420msgid "Light"
    420421msgstr ""
    421422
    422 #: includes/class-gfmr-settings.php:327
     423#: includes/class-gfmr-settings.php:1088
    423424msgid "Dark"
    424425msgstr ""
    425426
    426 #: includes/class-gfmr-settings.php:328
     427#: includes/class-gfmr-settings.php:1089
    427428msgid "System"
    428429msgstr ""
    429430
    430 #: includes/class-gfmr-settings.php:349
    431 msgid "Choose the appearance theme for code blocks in your content."
    432 msgstr ""
    433 
    434 #: includes/class-gfmr-settings.php:366
    435 msgid "Light Theme"
    436 msgstr ""
    437 
    438 #: includes/class-gfmr-settings.php:367
    439 msgid "Bright background, suitable for day-time reading"
    440 msgstr ""
    441 
    442 #: includes/class-gfmr-settings.php:377
    443 msgid "Dark Theme"
    444 msgstr ""
    445 
    446 #: includes/class-gfmr-settings.php:378
    447 msgid "Dark background, easier on the eyes"
    448 msgstr ""
    449 
    450 #: includes/class-gfmr-settings.php:388
    451 msgid "Follow System Setting"
    452 msgstr ""
    453 
    454 #: includes/class-gfmr-settings.php:389
    455 msgid "Automatically match your device's light/dark preference"
    456 msgstr ""
    457 
    458 #: includes/class-gfmr-settings.php:403
    459 msgid "You do not have permission to perform this action."
    460 msgstr ""
    461 
    462 #: includes/class-gfmr-settings.php:409
    463 msgid "Invalid theme selected."
    464 msgstr ""
    465 
    466 #: includes/class-gfmr-settings.php:250
     431#: includes/class-gfmr-settings.php:1090
    467432msgid "Applying theme..."
    468433msgstr ""
    469434
    470 #: blocks/markdown/edit.js:800
    471 #: blocks/markdown/edit.js:813
    472 msgid "編集"
    473 msgstr ""
    474 
    475 #: blocks/markdown/edit.js:800
    476 #: blocks/markdown/edit.js:813
    477 msgid "プレビュー"
    478 msgstr ""
    479 
    480 #: blocks/markdown/edit.js:810
    481 #: blocks/markdown/index.js:19
    482 msgid "Markdown"
    483 msgstr ""
    484 
    485 #: blocks/markdown/edit.js:838
    486 msgid ""
    487 "ここにMarkdownを入力してください...\n"
    488 "\n"
    489 "# 見出し\n"
    490 "**太字** *イタリック*\n"
    491 "- リスト項目"
    492 msgstr ""
    493 
    494 #: blocks/markdown/edit.js:850
    495 msgid "プレビューするMarkdownコンテンツがありません"
    496 msgstr ""
    497 
    498 #: blocks/markdown/index.js:20
    499 msgid "GitHub Flavored Markdownで記述し、リアルタイムでプレビューできます。"
    500 msgstr ""
    501 
    502 #: blocks/markdown/index.js:27
    503 msgid "markdown"
    504 msgstr ""
    505 
    506 #: blocks/markdown/index.js:28
    507 msgid "gfm"
    508 msgstr ""
    509 
    510 #: blocks/markdown/index.js:29
    511 msgid "github"
    512 msgstr ""
    513 
    514 #: blocks/markdown/index.js:30
    515 msgid "マークダウン"
    516 msgstr ""
    517 
    518 #: blocks/markdown/block.json
    519 msgctxt "block title"
    520 msgid "Markdown"
    521 msgstr ""
    522 
    523 #: blocks/markdown/block.json
    524 msgctxt "block description"
    525 msgid "GitHub Flavored Markdownで記述し、リアルタイムでプレビューできます。"
    526 msgstr ""
    527 
    528 #: blocks/markdown/block.json
    529 msgctxt "block keyword"
    530 msgid "markdown"
    531 msgstr ""
    532 
    533 #: blocks/markdown/block.json
    534 msgctxt "block keyword"
    535 msgid "gfm"
    536 msgstr ""
    537 
    538 #: blocks/markdown/block.json
    539 msgctxt "block keyword"
    540 msgid "github"
    541 msgstr ""
    542 
    543 #: blocks/markdown/block.json
    544 msgctxt "block keyword"
    545 msgid "マークダウン"
    546 msgstr ""
    547 
    548 #: includes/class-gfmr-settings.php:62
    549 msgid "Markdown Renderer for GitHub Settings"
    550 msgstr ""
    551 
    552 #: includes/class-gfmr-settings.php:102
    553 msgid "Structured Data (Schema.org)"
    554 msgstr ""
    555 
    556 #: includes/class-gfmr-settings.php:109
    557 msgid "Enable Structured Data"
    558 msgstr ""
    559 
    560 #: includes/class-gfmr-settings.php:117
    561 msgid "Auto-detect Article Type"
    562 msgstr ""
    563 
    564 #: includes/class-gfmr-settings.php:125
    565 msgid "Include Author Information"
    566 msgstr ""
    567 
    568 #: includes/class-gfmr-settings.php:133
    569 msgid "Include Publisher Information"
    570 msgstr ""
    571 
    572 #: includes/class-gfmr-settings.php:654
    573 msgid "Configure Schema.org structured data (JSON-LD) for SEO optimization and rich snippets."
    574 msgstr ""
    575 
    576 #: includes/class-gfmr-settings.php:655
    577 msgid "Note: If you are generating structured data with another SEO plugin, we recommend disabling this feature to avoid duplication."
    578 msgstr ""
    579 
    580 #: includes/class-gfmr-settings.php:670
    581 msgid "Enable automatic generation of Schema.org structured data"
    582 msgstr ""
    583 
    584 #: includes/class-gfmr-settings.php:672
    585 msgid "When enabled, JSON-LD structured data will be automatically added to posts and pages."
    586 msgstr ""
    587 
    588 #: includes/class-gfmr-settings.php:688
    589 msgid "Auto-detect article type (Article, TechArticle, HowTo)"
    590 msgstr ""
    591 
    592 #: includes/class-gfmr-settings.php:690
    593 msgid "When enabled, the plugin analyzes content to determine the optimal schema type."
    594 msgstr ""
    595 
    596 #: includes/class-gfmr-settings.php:706
    597 msgid "Include author information in structured data"
    598 msgstr ""
    599 
    600 #: includes/class-gfmr-settings.php:723
    601 msgid "Include publisher (site) information in structured data"
    602 msgstr ""
    603 
    604 #: includes/class-gfmr-asset-manager.php:142
    605 msgid "Copy code"
    606 msgstr ""
    607 
    608 #: includes/class-gfmr-asset-manager.php:143
    609 msgid "Code copied to clipboard"
    610 msgstr ""
    611 
    612 #: includes/class-gfmr-asset-manager.php:145
    613 msgid "Loading..."
    614 msgstr ""
    615 
    616 #: includes/class-gfmr-asset-manager.php:146
    617 msgid "Error"
    618 msgstr ""
    619 
    620 #: includes/class-gfmr-asset-manager.php:147
    621 msgid "Retry"
    622 msgstr ""
    623 
    624 #: includes/class-gfmr-asset-manager.php:149
    625 msgid "Expand"
    626 msgstr ""
    627 
    628 #: includes/class-gfmr-asset-manager.php:150
    629 msgid "Collapse"
    630 msgstr ""
     435#: includes/class-gfmr-settings.php:1111
     436msgid ""
     437"Extend the functionality of Markdown Renderer for GitHub by installing "
     438"addons."
     439msgstr ""
     440
     441#: includes/class-gfmr-settings.php:1128
     442msgid ""
     443"No addons are currently installed. Install addons to add new features and "
     444"capabilities."
     445msgstr ""
     446
     447#: includes/class-gfmr-settings.php:1131
     448msgid "Installed Addons"
     449msgstr ""
     450
     451#: includes/class-gfmr-settings.php:1134
     452msgid "Name"
     453msgstr ""
     454
     455#: includes/class-gfmr-settings.php:1135
     456msgid "Version"
     457msgstr ""
     458
     459#: includes/class-gfmr-settings.php:1136
     460msgid "Author"
     461msgstr ""
  • markdown-renderer-for-github/trunk/markdown-renderer-for-github.php

    r3440837 r3442330  
    44 * Plugin URI:        https://github.com/wakalab/markdown-renderer-for-github
    55 * Description:       Renders GFM (GitHub Flavored Markdown) content beautifully on the front end using JavaScript libraries. It supports syntax highlighting for code blocks and diagram rendering with Mermaid.js.
    6  * Version:           1.15.0
     6 * Version:           2.0.0
    77 * Requires at least: 6.5
    88 * Requires PHP:      8.1
     
    2424
    2525// Define new prefixed constants (WordPress.org requirement compliance)
    26 define( 'GFMR_VERSION', '1.14.1' );
     26define( 'GFMR_VERSION', '1.15.0' );
    2727define( 'GFMR_MIN_PRO_VERSION', '1.0.0' );
    2828define( 'GFMR_PLUGIN_FILE', __FILE__ );
  • markdown-renderer-for-github/trunk/phpstan.neon

    r3440837 r3442330  
    1414        - node_modules/
    1515        - includes/class-gfmr-cli.php  # WP-CLI specific file, no stubs available
     16        - plugins/pro/  # Pro version - analyzed separately
    1617    ignoreErrors:
    1718        -
  • markdown-renderer-for-github/trunk/plugins/pro/markdown-renderer-for-github-pro/includes/class-gfmr-pro-bootstrap.php

    r3440837 r3442330  
    4949
    5050    /**
    51      * Initialize Pro plugin
     51     * Initialize Pro plugin in standalone mode
     52     *
     53     * Loads Free version core and initializes all features independently.
     54     */
     55    public function init_standalone(): void {
     56        // Mark as standalone mode to prevent addon mode initialization
     57        if ( ! defined( 'GFMR_PRO_STANDALONE_MODE' ) ) {
     58            define( 'GFMR_PRO_STANDALONE_MODE', true );
     59        }
     60
     61        // 1. Define Free version constants (Pro acts as Free replacement)
     62        if ( ! defined( 'GFMR_VERSION' ) ) {
     63            define( 'GFMR_VERSION', GFMR_PRO_VERSION );
     64            define( 'GFMR_PLUGIN_FILE', GFMR_PRO_PLUGIN_FILE );
     65            define( 'GFMR_SLUG', 'markdown-renderer-for-github-pro' );
     66            define( 'GFMR_URI', GFMR_PRO_URI );
     67            define( 'GFMR_PATH', GFMR_PRO_PATH );
     68            define( 'GFMR_PLUGIN_PATH', dirname( plugin_basename( GFMR_PRO_PLUGIN_FILE ) ) );
     69            define( 'GFMR_PLUGIN_BASENAME', plugin_basename( GFMR_PRO_PLUGIN_FILE ) );
     70            define( 'GFMR_ASSETS_PATH', GFMR_PRO_URI . 'assets/' );
     71        }
     72
     73        // 2. Load Free version core files
     74        $this->load_free_core();
     75
     76        // 3. Initialize Free version core
     77        $this->init_free_core();
     78
     79        // 4. Initialize Pro features
     80        $this->init_pro_features();
     81    }
     82
     83    /**
     84     * Initialize Pro plugin in addon mode (legacy support)
    5285     *
    5386     * This method is called via the gfmr_loaded action from the free version.
    54      * WordPress's Requires Plugins header ensures the free version is loaded first.
     87     * Kept for backward compatibility.
    5588     *
    5689     * @param string $free_version Version of the free plugin.
    5790     */
    58     public function init( $free_version ) {
    59         // 1. Version compatibility check
    60         if ( version_compare( $free_version, GFMR_PRO_MIN_FREE_VERSION, '<' ) ) {
     91    public function init_addon_mode( $free_version ): void {
     92        // Version compatibility check
     93        if ( version_compare( $free_version, '1.15.0', '<' ) ) {
    6194            add_action( 'admin_notices', array( $this, 'notice_free_update_required' ) );
    6295            return;
    6396        }
    6497
    65         // 2. Initialize migration handler
     98        // Initialize Pro features
     99        $this->init_pro_features();
     100    }
     101
     102    /**
     103     * Load Free version core files
     104     */
     105    private function load_free_core(): void {
     106        $core_path = GFMR_PRO_PATH . 'includes/core/';
     107
     108        // Load core files in dependency order
     109        require_once $core_path . 'class-gfmr-metadata-handler.php';
     110        require_once $core_path . 'class-gfmr-cache-manager.php';
     111        require_once $core_path . 'class-gfmr-asset-detector.php';
     112        require_once $core_path . 'class-gfmr-content-analyzer.php';
     113        require_once $core_path . 'class-gfmr-code-highlighter.php';
     114        require_once $core_path . 'class-gfmr-frontmatter-parser.php';
     115        require_once $core_path . 'class-gfmr-schema-generator.php';
     116        require_once $core_path . 'class-gfmr-ssr-renderer.php';
     117        require_once $core_path . 'class-gfmr-mermaid-ssr-handler.php';
     118        require_once $core_path . 'class-gfmr-asset-manager.php';
     119        require_once $core_path . 'class-gfmr-block-registry.php';
     120        require_once $core_path . 'class-gfmr-renderer.php';
     121        require_once $core_path . 'class-gfmr-settings.php';
     122        require_once $core_path . 'class-gfmr-extension-api.php';
     123
     124        // Load CLI commands if in CLI mode
     125        if ( defined( 'WP_CLI' ) && WP_CLI ) {
     126            require_once $core_path . 'class-gfmr-cli.php';
     127        }
     128    }
     129
     130    /**
     131     * Initialize Free version core
     132     */
     133    private function init_free_core(): void {
     134        // Load Free version translations
     135        load_plugin_textdomain(
     136            'markdown-renderer-for-github',
     137            false,
     138            dirname( plugin_basename( GFMR_PRO_PLUGIN_FILE ) ) . '/languages/free'
     139        );
     140
     141        // Initialize renderer
     142        $renderer = \Wakalab\WpGfmRenderer\GFMR_Renderer::get_instance();
     143
     144        // Manually call init() since plugins_loaded has already fired
     145        $renderer->init();
     146
     147        // Initialize extension API
     148        $extension_api = new \Wakalab\WpGfmRenderer\GFMR_Extension_API();
     149        $extension_api->init();
     150
     151        // Fire gfmr_loaded action for compatibility
     152        do_action( 'gfmr_loaded', GFMR_VERSION );
     153    }
     154
     155    /**
     156     * Initialize Pro features
     157     */
     158    private function init_pro_features(): void {
     159        // 1. Initialize migration handler
    66160        $this->migration = new GFMR_Pro_Migration();
    67161        $this->migration->maybe_migrate();
    68162
    69         // 3. Initialize license manager
     163        // 2. Initialize license manager
    70164        $this->license_manager = GFMR_Pro_License_Manager::get_instance();
    71165        $this->license_manager->init();
    72166
    73         // 4. Initialize settings
     167        // 3. Initialize settings
    74168        $this->settings = new GFMR_Pro_Settings( $this->license_manager );
    75169        $this->settings->init();
    76170
    77         // 5. Register Pro addon in the extension system
     171        // 4. Register Pro addon in the extension system
    78172        add_filter( 'gfmr_registered_addons', array( $this, 'register_pro_addon' ) );
    79173
    80         // 6. Initialize Pro features if license is valid
     174        // 5. Initialize Pro features if license is valid
    81175        if ( $this->license_manager->is_license_valid() ) {
    82176            $this->features = new GFMR_Pro_Features();
  • markdown-renderer-for-github/trunk/plugins/pro/markdown-renderer-for-github-pro/includes/class-gfmr-pro-features.php

    r3440837 r3442330  
    2323
    2424    /**
     25     * Pro-only features requiring valid license
     26     *
     27     * Note: TOC is a Free feature, not included here.
     28     *
     29     * @var array
     30     */
     31    private const PRO_ONLY_FEATURES = array(
     32        'line_numbers',
     33        'advanced_syntax',
     34        'custom_themes',
     35    );
     36
     37    /**
     38     * License manager instance
     39     *
     40     * @var GFMR_Pro_License_Manager|null
     41     */
     42    private $license_manager;
     43
     44    /**
     45     * Constructor
     46     */
     47    public function __construct() {
     48        $this->license_manager = GFMR_Pro_License_Manager::get_instance();
     49    }
     50
     51    /**
    2552     * Initialize Pro features
    2653     *
     
    3158        add_filter( 'gfmr_feature_flags', array( $this, 'enable_pro_features' ) );
    3259
     60        // Filter Pro features based on license status
     61        add_filter( 'gfmr_feature_flags', array( $this, 'filter_feature_flags' ), 20 );
     62
    3363        // Add Pro-specific rendering enhancements
    3464        add_filter( 'gfmr_renderer_options', array( $this, 'enhance_renderer_options' ), 10, 2 );
    3565
     66        // Filter block render output for Pro features
     67        add_filter( 'gfmr_block_render_output', array( $this, 'filter_pro_features' ), 10, 2 );
     68
    3669        // Register Pro assets
    3770        add_action( 'gfmr_enqueue_assets', array( $this, 'enqueue_pro_features_assets' ) );
     71    }
     72
     73    /**
     74     * Check if a feature is available
     75     *
     76     * @param string $feature Feature name.
     77     * @return bool
     78     */
     79    public function is_feature_available( string $feature ): bool {
     80        // Free features are always available
     81        if ( ! in_array( $feature, self::PRO_ONLY_FEATURES, true ) ) {
     82            return true;
     83        }
     84
     85        // Pro features require valid license
     86        return $this->license_manager && $this->license_manager->is_license_valid();
    3887    }
    3988
     
    4594     */
    4695    public function enable_pro_features( $flags ) {
    47         // Enable Table of Contents (Pro feature)
    48         $flags['toc'] = true;
     96        // Note: TOC is a Free feature, always enabled
    4997
    50         // Enable line numbers (Pro feature)
    51         $flags['line_numbers'] = true;
    52 
    53         // Add Pro-specific features
     98        // Enable Pro-only features (subject to license validation)
     99        $flags['line_numbers']    = true;
    54100        $flags['advanced_syntax'] = true;
    55101        $flags['custom_themes']   = true;
    56102
    57103        return $flags;
     104    }
     105
     106    /**
     107     * Filter feature flags based on license status
     108     *
     109     * @param array $flags Feature flags.
     110     * @return array Filtered flags.
     111     */
     112    public function filter_feature_flags( $flags ) {
     113        // If license is invalid, disable Pro-only features
     114        if ( ! $this->license_manager || ! $this->license_manager->is_license_valid() ) {
     115            foreach ( self::PRO_ONLY_FEATURES as $feature ) {
     116                if ( isset( $flags[ $feature ] ) ) {
     117                    $flags[ $feature ] = false;
     118                }
     119            }
     120        }
     121
     122        return $flags;
     123    }
     124
     125    /**
     126     * Filter block render output for Pro features
     127     *
     128     * @param string $output Block output.
     129     * @param array  $attributes Block attributes.
     130     * @return string Filtered output.
     131     */
     132    public function filter_pro_features( $output, $attributes ) {
     133        // If license is invalid, strip Pro-only attributes
     134        if ( ! $this->license_manager || ! $this->license_manager->is_license_valid() ) {
     135            // Remove line numbers if present
     136            if ( ! empty( $attributes['lineNumbers'] ) ) {
     137                // Remove line number classes/attributes from output
     138                $output = preg_replace( '/\s*data-line-numbers="[^"]*"/', '', $output );
     139                $output = preg_replace( '/\s*class="([^"]*\s)?line-numbers(\s[^"]*)?"/i', ' class="$1$2"', $output );
     140            }
     141        }
     142
     143        return $output;
    58144    }
    59145
  • markdown-renderer-for-github/trunk/plugins/pro/markdown-renderer-for-github-pro/includes/class-gfmr-pro-license-manager.php

    r3440837 r3442330  
    560560        return $prefix . $last_eight;
    561561    }
     562
     563    /**
     564     * Recheck license manually (rate-limited to prevent abuse)
     565     *
     566     * @return array Result with 'success' boolean, 'message' string, and optional 'retry_after' int
     567     */
     568    public function recheck_license(): array {
     569        // Check rate limit (60 seconds minimum)
     570        $last_recheck = $this->get_option( 'gfmr_pro_license_last_recheck', 0 );
     571        $time_since   = time() - $last_recheck;
     572
     573        if ( $time_since < 60 ) {
     574            return array(
     575                'success'     => false,
     576                'message'     => sprintf(
     577                    /* translators: %d: seconds remaining */
     578                    __( 'Please wait %d seconds before rechecking.', 'markdown-renderer-for-github-pro' ),
     579                    60 - $time_since
     580                ),
     581                'retry_after' => 60 - $time_since,
     582            );
     583        }
     584
     585        // Get license data
     586        $license_data = $this->get_license_option();
     587        if ( empty( $license_data['license_key'] ) ) {
     588            return array(
     589                'success' => false,
     590                'message' => __( 'No license key found. Please activate your license first.', 'markdown-renderer-for-github-pro' ),
     591            );
     592        }
     593
     594        // Clear cache to force fresh validation
     595        $this->clear_cache();
     596
     597        // Update last recheck timestamp
     598        $this->update_option( 'gfmr_pro_license_last_recheck', time() );
     599
     600        // Increment retry counter
     601        $retry_count = (int) $this->get_option( 'gfmr_pro_license_retry_count', 0 );
     602        $this->update_option( 'gfmr_pro_license_retry_count', $retry_count + 1 );
     603
     604        // Validate with API
     605        $result = $this->validate_with_api( $license_data['license_key'], $license_data['instance_id'] ?? null );
     606
     607        if ( null === $result ) {
     608            // API call failed
     609            $backoff_time = min( 60 * pow( 2, min( $retry_count, 5 ) ), 3600 ); // Max 1 hour
     610
     611            return array(
     612                'success'     => false,
     613                'message'     => __( 'Failed to connect to license server. Please check your internet connection and try again.', 'markdown-renderer-for-github-pro' ),
     614                'retry_after' => $backoff_time,
     615            );
     616        }
     617
     618        // Reset retry counter on success
     619        $this->update_option( 'gfmr_pro_license_retry_count', 0 );
     620
     621        // Cache the result
     622        $this->cache_validation_result( $result );
     623
     624        // Update last validated timestamp on success
     625        if ( $result['valid'] ) {
     626            $this->update_last_validated();
     627
     628            return array(
     629                'success' => true,
     630                'message' => __( 'License is valid and active.', 'markdown-renderer-for-github-pro' ),
     631            );
     632        }
     633
     634        // License is invalid
     635        $error_message = $result['error'] ?? __( 'License key is not valid.', 'markdown-renderer-for-github-pro' );
     636
     637        return array(
     638            'success' => false,
     639            'message' => $error_message,
     640        );
     641    }
    562642}
  • markdown-renderer-for-github/trunk/plugins/pro/markdown-renderer-for-github-pro/includes/class-gfmr-pro-settings.php

    r3440837 r3442330  
    3030
    3131    /**
     32     * Initialization flag
     33     *
     34     * @var bool
     35     */
     36    private $initialized = false;
     37
     38    /**
    3239     * Constructor
    3340     *
     
    4249     */
    4350    public function init(): void {
     51        // Prevent multiple initialization
     52        if ( $this->initialized ) {
     53            return;
     54        }
     55        $this->initialized = true;
     56
    4457        // Add Pro tab to settings page
    4558        add_filter( 'gfmr_settings_tabs_list', array( $this, 'add_pro_tab' ) );
     
    330343        }
    331344
    332         // Force revalidation
    333         $is_valid = $this->license_manager->is_license_valid();
    334 
    335         $result = array(
    336             'success' => $is_valid,
    337             'message' => $is_valid
    338                 ? __( 'License is valid and active.', 'markdown-renderer-for-github-pro' )
    339                 : __( 'License validation failed. Please check your license key.', 'markdown-renderer-for-github-pro' ),
    340         );
    341 
    342         if ( $is_valid ) {
     345        // Call recheck with rate limiting and backoff
     346        $result = $this->license_manager->recheck_license();
     347
     348        if ( $result['success'] ) {
    343349            wp_send_json_success( $result );
    344350        } else {
  • markdown-renderer-for-github/trunk/plugins/pro/markdown-renderer-for-github-pro/markdown-renderer-for-github-pro.php

    r3440837 r3442330  
    33 * Plugin Name:       Markdown Renderer for GitHub Pro
    44 * Plugin URI:        https://github.com/wakalab/markdown-renderer-for-github
    5  * Description:       Pro features for Markdown Renderer for GitHub. Provides advanced features including Table of Contents, custom syntax themes, and more.
    6  * Version:           1.0.0
     5 * Description:       Standalone Pro version with all features of Markdown Renderer for GitHub, plus advanced Pro features.
     6 * Version:           1.16.0
    77 * Requires at least: 6.5
    88 * Requires PHP:      8.1
    9  * Requires Plugins:  markdown-renderer-for-github
    109 * Author:            Wakalab
    1110 * Author URI:        https://wakalab.dev/
     
    1918
    2019// Define Pro version constants
    21 define( 'GFMR_PRO_VERSION', '1.0.0' );
    22 define( 'GFMR_PRO_MIN_FREE_VERSION', '2.0.0' );
     20define( 'GFMR_PRO_VERSION', '1.16.0' );
    2321define( 'GFMR_PRO_PLUGIN_FILE', __FILE__ );
    2422define( 'GFMR_PRO_SLUG', 'markdown-renderer-for-github-pro' );
     
    2624define( 'GFMR_PRO_PATH', plugin_dir_path( __FILE__ ) );
    2725define( 'GFMR_PRO_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
     26define( 'GFMR_PRO_MIN_FREE_VERSION', '1.15.0' );
    2827
    29 // Load main classes
     28// Load conflict detector first
     29require_once __DIR__ . '/includes/class-gfmr-pro-conflict-detector.php';
     30
     31// Filter active plugins immediately to prevent Free version from loading
     32// This must happen BEFORE WordPress loads the plugins, so we register filters directly
     33add_filter( 'option_active_plugins', 'gfmr_pro_filter_free_plugin', 1 );
     34add_filter( 'site_option_active_sitewide_plugins', 'gfmr_pro_filter_free_plugin_network', 1 );
     35
     36/**
     37 * Filter active plugins to exclude Free version
     38 *
     39 * @param array|false $plugins Active plugins.
     40 * @return array|false
     41 */
     42function gfmr_pro_filter_free_plugin( $plugins ) {
     43    if ( ! is_array( $plugins ) ) {
     44        return $plugins;
     45    }
     46    $free_basename = 'markdown-renderer-for-github/markdown-renderer-for-github.php';
     47    $key           = array_search( $free_basename, $plugins, true );
     48    if ( false !== $key ) {
     49        unset( $plugins[ $key ] );
     50        $plugins = array_values( $plugins );
     51    }
     52    return $plugins;
     53}
     54
     55/**
     56 * Filter network-active plugins to exclude Free version
     57 *
     58 * @param array|false $plugins Network active plugins.
     59 * @return array|false
     60 */
     61function gfmr_pro_filter_free_plugin_network( $plugins ) {
     62    if ( ! is_array( $plugins ) ) {
     63        return $plugins;
     64    }
     65    $free_basename = 'markdown-renderer-for-github/markdown-renderer-for-github.php';
     66    if ( isset( $plugins[ $free_basename ] ) ) {
     67        unset( $plugins[ $free_basename ] );
     68    }
     69    return $plugins;
     70}
     71
     72// Load plugin textdomain for translations
     73add_action(
     74    'plugins_loaded',
     75    function () {
     76        load_plugin_textdomain(
     77            'markdown-renderer-for-github-pro',
     78            false,
     79            dirname( plugin_basename( __FILE__ ) ) . '/languages'
     80        );
     81    },
     82    -1000
     83);
     84
     85// Initialize conflict detection for admin notices
     86add_action(
     87    'plugins_loaded',
     88    function () {
     89        $detector = new \Wakalab\WpGfmRenderer\Pro\GFMR_Pro_Conflict_Detector();
     90        $detector->init();
     91    },
     92    -999
     93);
     94
     95// Load main Pro classes
    3096require_once __DIR__ . '/includes/class-gfmr-pro-bootstrap.php';
    3197require_once __DIR__ . '/includes/class-gfmr-pro-license-manager.php';
     
    38104 * Initialize Pro plugin
    39105 *
    40  * Uses gfmr_loaded action from free version to ensure proper initialization order.
    41  * WordPress's Requires Plugins header ensures free version is loaded first.
     106 * Supports both standalone and addon modes:
     107 * - Standalone: Initializes all core features if Free version is not present
     108 * - Addon: Uses gfmr_loaded action if Free version is present (legacy support)
    42109 */
     110add_action(
     111    'plugins_loaded',
     112    function () {
     113        // Check if Free version is present and loaded
     114        if ( defined( 'GFMR_VERSION' ) && did_action( 'gfmr_loaded' ) ) {
     115            // Legacy addon mode: Free version already initialized
     116            return;
     117        }
     118
     119        // Standalone mode: Initialize Pro with embedded core
     120        $bootstrap = new \Wakalab\WpGfmRenderer\Pro\GFMR_Pro_Bootstrap();
     121        $bootstrap->init_standalone();
     122    },
     123    10
     124);
     125
     126// Legacy addon mode support (deprecated)
    43127add_action(
    44128    'gfmr_loaded',
    45129    function ( $free_version ) {
     130        // Skip if Pro is running in standalone mode
     131        if ( defined( 'GFMR_PRO_STANDALONE_MODE' ) && GFMR_PRO_STANDALONE_MODE ) {
     132            return;
     133        }
     134
    46135        $bootstrap = new \Wakalab\WpGfmRenderer\Pro\GFMR_Pro_Bootstrap();
    47         $bootstrap->init( $free_version );
     136        $bootstrap->init_addon_mode( $free_version );
    48137    }
    49138);
  • markdown-renderer-for-github/trunk/readme.txt

    r3440837 r3442330  
    66Tested up to: 6.9
    77Requires PHP: 8.1
    8 Stable tag: 1.15.0
     8Stable tag: 2.0.0
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    126126
    127127== Changelog ==
     128
     129= 1.16.0 =
     130* Pro版プラグインのライセンス管理UIと初期化フロー修正
     131* Add Pro version plugin implementation with assets and features
     132* Use script handle instead of file path in block.json
     133* Use script handle instead of file path in block.json
     134* Fix translation JSON hash and domain mismatch
     135* Fix translation JSON source field mismatch
     136* Add dynamic language path resolution for Pro version
     137* Replace Japanese comments with English in block registry
     138* Add comprehensive i18n workflow documentation
     139* Add comprehensive i18n workflow documentation
     140* Add source field troubleshooting to i18n documentation
     141* Add i18n translation skill and Pro version language file
     142* Add E2E tests for Gutenberg block translations
     143* Eliminate Pro/Free version core code duplication
     144* Activate Frontmatter Settings translations in Japanese
     145* Add JED format JSON for Frontmatter Settings translations
     146* Add automated translation hash fix script
     147* Update Pro roadmap status for v2.0.0   release
     148
     149= 1.16.0 =
     150* [Pro] Standalone mode: Pro version now works independently without requiring Free version
     151* [Pro] Automatic conflict detection and Free version deactivation
     152* [Pro] License recheck function with rate limiting and backoff strategy
     153* [Pro] Server-side feature guard system for Pro features
     154* [Pro] Enhanced license management with improved error handling
     155* [Pro] Architecture: Embedded Free version core for standalone operation
     156* [Pro] License validation: Improved caching and grace period handling
     157* [Pro] Created `includes/core/` with 15 Free version core files
     158* [Pro] Copied `assets/` and `blocks/` directories to Pro version
     159* [Pro] Added `SYNC_LOG.md` for tracking Free→Pro synchronization
     160* [Pro] Implemented `GFMR_Pro_Conflict_Detector` class
     161* [Pro] Updated bootstrap with `init_standalone()` method
    128162
    129163= 1.15.0 =
     
    232266* Resolve merge conflict in scripts/docker.sh
    233267
    234 = 1.7.9 =
    235 * Remove color:revert rules that broke Shiki syntax highlighting
    236 
    237 = 1.7.8 =
    238 * Parallelize CI tasks and optimize Docker readiness checks
    239 * Add slug parameter to Codecov upload action
    240 * Stabilize E2E tests by improving Docker environment and Mermaid detection
    241 
    242268== Upgrade Notice ==
    243269
Note: See TracChangeset for help on using the changeset viewer.