Class: Jekyll::L10n::ExtractionResultSaver
- Inherits:
-
Object
- Object
- Jekyll::L10n::ExtractionResultSaver
- Defined in:
- lib/jekyll-l10n/extraction/result_saver.rb
Overview
Saves extraction results to PO files and optionally translates compendia.
ExtractionResultSaver orchestrates the post-extraction process: writing page-specific PO files for all configured locales, merging with existing translations, optionally updating compendia, and triggering automatic translation via LibreTranslate if enabled.
Key responsibilities:
-
Save page-specific PO files for each locale
-
Merge new entries with existing translations
-
Update compendium files from page-specific extractions
-
Trigger automatic translation of compendia
-
Report extraction statistics
Instance Method Summary collapse
-
#finalize_compendia ⇒ void
Merge all page-specific PO files into compendia after all pages are extracted.
-
#initialize(site) ⇒ ExtractionResultSaver
constructor
Initialize a new ExtractionResultSaver.
-
#save_results(config, entries, page_path) ⇒ Hash
Save extraction results to PO files.
-
#translate_compendia(config) ⇒ void
Translate compendia using LibreTranslate.
Constructor Details
#initialize(site) ⇒ ExtractionResultSaver
Initialize a new ExtractionResultSaver.
34 35 36 37 38 |
# File 'lib/jekyll-l10n/extraction/result_saver.rb', line 34 def initialize(site) @site = site with_locales_data = SiteConfigAccessor.extract_locales_data(@site) @site_config = PageLocalesConfig.new({ 'with_locales_data' => with_locales_data }) end |
Instance Method Details
#finalize_compendia ⇒ void
This method returns an undefined value.
Merge all page-specific PO files into compendia after all pages are extracted.
Called once per build (from Extractor.extract_site) rather than per page, reducing disk I/O and fuzzy-matching passes from O(pages) to O(1).
72 73 74 75 76 77 |
# File 'lib/jekyll-l10n/extraction/result_saver.rb', line 72 def finalize_compendia return unless @site_config.update_compendium? po_manager = PoFileManager.new(@site, @site_config.locales_dir) CompendiumMerger.new(@site).merge_compendia(po_manager, @site_config) end |
#save_results(config, entries, page_path) ⇒ Hash
Save extraction results to PO files.
Saves extracted strings to PO files for each configured locale, merging with existing translations to preserve manual edits. Optionally merges new entries into compendium files. Returns statistics about the save operation.
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/jekyll-l10n/extraction/result_saver.rb', line 53 def save_results(config, entries, page_path) LoggerFormatter.debug_if_enabled('ExtractionResultSaver', "Processing page: #{page_path}") po_manager = PoFileManager.new(@site, config.locales_dir) po_files_created = save_po_files(po_manager, config, entries, page_path) { files_processed: 1, strings_extracted: entries.length, po_files_created: po_files_created } end |
#translate_compendia(config) ⇒ void
This method returns an undefined value.
Translate compendia using LibreTranslate.
If LibreTranslate is enabled in config, translates all empty entries in compendium files for configured locales. Called after extraction and compendium merging to fill in translations automatically.
87 88 89 |
# File 'lib/jekyll-l10n/extraction/result_saver.rb', line 87 def translate_compendia(config) CompendiumTranslator.new(@site).translate_compendia(config) end |