Automatizace lokalizace prezentace pomocí Pythonu

Přehled

Aspose.Slides pro Python přes .NET vám umožňuje konfigurovat metadata korektury pro jednotlivé textové úseky. Použijte BasePortionFormat.language_id k určení jazyka korektury, BasePortionFormat.spell_check k povolení nebo potlačení kontrol pravopisu a BasePortionFormat.proof_disabled k řízení širšího stavu „neprovádět korekturu“. Protože jsou tato nastavení aplikována na úroveň úseku, jeden odstavec může obsahovat více jazyků a různá pravidla korektury.

Tento článek vysvětluje, jak přiřadit jazyk konkrétnímu textu, nastavit výchozí jazyk pro nový text pomocí LoadOptions.default_text_language, vytvořit vícejazyčné odstavce, vybrat mezi spell_check a proof_disabled a zachovat požadovaná nastavení při použití Presentation.join_portions_with_same_formatting. Tyto vlastnosti ukládají metadata pro prezentační aplikace; nepřekládají text, neprovádějí kontrolu pravopisu založenou na slovníku ani nevrací slova s pravopisnými chybami.

Nastavte jazyk korektury pro text

Vytvořte nebo načtěte Presentation, získáte požadovaný úsek textu přes Portion.portion_format a přiřadíte jeho identifikátor jazyka. Následující příklad vytvoří tvar, nastaví britskou angličtinu jako jazyk korektury a výsledek uloží pomocí Presentation.save:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 320, 80)
    shape.text_frame.text = "Set the proofing language for this text."

    portion = shape.text_frame.paragraphs[0].portions[0]
    portion.portion_format.language_id = "en-GB"

    presentation.save("proofing_language.pptx", slides.export.SaveFormat.PPTX)

Nastavte výchozí jazyk pro nový text

Použijte LoadOptions.default_text_language k určení jazyka korektury, který Aspose.Slides přiřadí nově vytvořenému textu. Toto nastavení je užitečné, když většina nebo celý nový text v prezentaci používá stejný jazyk. Nemění metadata jazyka textu, který již má explicitně nastavený jazyk.

Následující příklad vytvoří prezentaci, jejíž nový text používá německá pravidla korektury:

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.default_text_language = "de-DE"

with slides.Presentation(load_options) as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 320, 80)
    shape.text_frame.text = "Willkommen zur Präsentation"

    presentation.save("default_text_language.pptx", slides.export.SaveFormat.PPTX)

Použijte více jazyků v jednom odstavci

Paragraph obsahuje kolekci textových úseků. Vytvořte samostatný Portion pro každý jazyk a nezávisle nastavte jeho language_id.

Tento příklad vytvoří jeden odstavec s úseky v angličtině a francouzštině:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 420, 80)
    paragraph = shape.text_frame.paragraphs[0]
    paragraph.portions.clear()

    english_portion = slides.Portion("Welcome")
    english_portion.portion_format.language_id = "en-US"
    paragraph.portions.add(english_portion)

    french_portion = slides.Portion(" — Bienvenue")
    french_portion.portion_format.language_id = "fr-FR"
    paragraph.portions.add(french_portion)

    presentation.save("multilingual_text.pptx", slides.export.SaveFormat.PPTX)

Povolte nebo potlačte kontrolu pravopisu pro jednotlivé úseky

PortionFormat dědí společné textové vlastnosti definované v BasePortionFormat. Přistupte k formátu úseku přes Portion.portion_format a nastavte BasePortionFormat.spell_check k určení, zda prezentační aplikace může kontrolovat pravopis pro tento úsek. Výchozí hodnota je False: True povolí kontrolu pravopisu, zatímco False ji potlačí.

Nastavení se vztahuje na jednotlivé textové úseky. Různé úseky ve stejném odstavci tak mohou mít odlišné hodnoty. BasePortionFormat.language_id a spell_check slouží doplňujícím způsobem: language_id určuje jazyk korektury, zatímco spell_check určuje, zda je kontrola pravopisu pro úsek povolena.

BasePortionFormat.proof_disabled také řídí korekturu, ale představuje širší stav „neprovádět korekturu“ jako NullableBool. Používejte spell_check, když potřebujete přímý logický přepínač specificky pro kontrolu pravopisu. Používejte proof_disabled, když chcete zachovat nebo výslovně řídit metadata o neprovádění korektury prezentace, včetně jejího stavu NOT_DEFINED. Pokud nastavíte obě vlastnosti, udržujte jejich hodnoty konzistentní; nekombinujte spell_check = True s proof_disabled = slides.NullableBool.TRUE.

Tyto vlastnosti konfigurují metadata korektury používaná PowerPointem a dalšími prezentačními aplikacemi. Aspose.Slides je nepoužívá k provádění slovníkových kontrol pravopisu ani k vracení seznamu pravopisně chybujících slov.

Následující kompletní příklad vytvoří vstupní prezentaci, načte ji, přiřadí různá nastavení kontroly pravopisu a jazyky korektury dvěma úsekům ve stejném odstavci, uloží výsledek, znovu jej otevře a ověří uložené hodnoty:

import aspose.slides as slides

input_file = "spell_check_input.pptx"
output_file = "spell_check_settings.pptx"

with slides.Presentation() as source_presentation:
    source_slide = source_presentation.slides[0]
    source_shape = source_slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 420, 80)
    source_paragraph = source_shape.text_frame.paragraphs[0]
    source_paragraph.portions.clear()

    source_english_portion = slides.Portion("Check this text. ")
    source_english_portion.portion_format.language_id = "en-US"
    source_paragraph.portions.add(source_english_portion)

    source_french_portion = slides.Portion("Ignorer ce code : ZX-81.")
    source_french_portion.portion_format.language_id = "fr-FR"
    source_paragraph.portions.add(source_french_portion)

    source_presentation.save(input_file, slides.export.SaveFormat.PPTX)

with slides.Presentation(input_file) as presentation:
    shape = presentation.slides[0].shapes[0]
    portions = shape.text_frame.paragraphs[0].portions

    checked_portion = portions[0]
    checked_portion.portion_format.language_id = "en-US"
    checked_portion.portion_format.spell_check = True

    suppressed_portion = portions[1]
    suppressed_portion.portion_format.language_id = "fr-FR"
    suppressed_portion.portion_format.spell_check = False

    presentation.save(output_file, slides.export.SaveFormat.PPTX)

with slides.Presentation(output_file) as reopened_presentation:
    reopened_shape = reopened_presentation.slides[0].shapes[0]
    stored_portions = reopened_shape.text_frame.paragraphs[0].portions

    has_two_portions = stored_portions.count == 2

    first_portion_stored = (
        has_two_portions 
        and stored_portions[0].portion_format.language_id == "en-US" 
        and stored_portions[0].portion_format.spell_check
    )

    second_portion_stored = (
        has_two_portions
        and stored_portions[1].portion_format.language_id == "fr-FR" 
        and not stored_portions[1].portion_format.spell_check
    )

    if first_portion_stored and second_portion_stored:
        print("The proofing settings were stored correctly.")
    else:
        print("The proofing settings could not be verified.")

Presentation.join_portions_with_same_formatting spojuje sousední úseky, které mají stejné formátování. Rozdíl pouze v spell_check neudrží úseky oddělené; po jejich sloučení nový úsek zachová hodnotu spell_check prvního úseku. Pokud úseky potřebují odlišná nastavení kontroly pravopisu, zavolejte join_portions_with_same_formatting před přiřazením těchto nastavení nebo po sloučení zkontrolujte hranice úseků a nastavení znovu aplikujte. Úseky s různými hodnotami language_id zůstávají oddělené, protože jejich formátování korektury jazyka se liší.

FAQ

Překládá ID jazyka text?

Ne. BasePortionFormat.language_id ukládá metadata korektury pro pravopis a gramatiku; nemění obsah textu. Přeložte text zvlášť a poté nastavte odpovídající identifikátor jazyka pro každý přeložený úsek.

Řídí jazyk korektury písma, dělení slov nebo zalomení řádků?

Ne. Identifikátor jazyka slouží jen ke korektuře. Vykreslování a rozvržení textu především závisí na dostupných fonts, písmovém systému a nastaveních textového rámce. Pro spolehlivé vykreslení poskytněte požadovaná písma, nakonfigurujte font substitution nebo embed fonts v prezentaci.

Může jeden odstavec používat několik jazyků korektury?

Ano. Přiřaďte každý jazyk samostatnému úseku, jak ukazuje příklad vícejazyčného odstavce.

Mám používat default_text_language nebo language_id?

Použijte LoadOptions.default_text_language, když chcete výchozí jazyk pro nově vytvořený text. Použijte BasePortionFormat.language_id, když konkrétní úsek potřebuje explicitní jazyk korektury nebo když odstavec obsahuje více jazyků.