Automatizar a Localização de Apresentações em Python via Java

Visão Geral

O Aspose.Slides para Python via Java permite que você configure metadados de revisão para trechos individuais de texto. Use BasePortionFormat.setLanguageId para identificar o idioma de revisão, BasePortionFormat.setSpellCheck para permitir ou suprimir a verificação ortográfica e BasePortionFormat.setProofDisabled para controlar o estado mais amplo de não‑revisão. Como essas configurações são aplicadas ao nível do trecho, um parágrafo pode conter vários idiomas e diferentes regras de revisão.

Este artigo explica como atribuir um idioma a um texto específico, definir o idioma padrão para novo texto com LoadOptions.setDefaultTextLanguage, criar parágrafos multilíngues, escolher entre BasePortionFormat.setSpellCheck e BasePortionFormat.setProofDisabled e preservar as configurações desejadas ao usar Presentation.joinPortionsWithSameFormatting. Essas propriedades armazenam metadados para aplicativos de apresentação; não traduzem texto, nem realizam verificação ortográfica baseada em dicionário, ou retornam palavras incorretas.

Definir o Idioma de Revisão para Texto

Crie ou carregue uma Presentation, acesse o trecho de texto necessário através de Portion.getPortionFormat e atribua seu identificador de idioma. O exemplo a seguir cria uma forma, define o inglês britânico como idioma de revisão e salva o resultado com Presentation.save:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, ShapeType

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 320, 80)
    shape.getTextFrame().setText("Set the proofing language for this text.")

    portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)
    portion.getPortionFormat().setLanguageId("en-GB")

    presentation.save("proofing_language.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Definir o Idioma Padrão para Novo Texto

Use LoadOptions.setDefaultTextLanguage para especificar o idioma de revisão que o Aspose.Slides atribui ao texto recém‑criado. Essa configuração é útil quando a maior parte ou todo o novo texto em uma apresentação usa o mesmo idioma. Ela não altera os metadados de idioma de textos que já possuam um idioma explícito.

O exemplo a seguir cria uma apresentação cujo novo texto utiliza as regras de revisão em alemão:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, SaveFormat, ShapeType

load_options = LoadOptions()
load_options.setDefaultTextLanguage("de-DE")

presentation = Presentation(load_options)
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 320, 80)
    shape.getTextFrame().setText("Willkommen zur Präsentation")

    presentation.save("default_text_language.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Usar Vários Idiomas em Um Parágrafo

Um Paragraph contém uma coleção de trechos de texto. Crie um Portion separado para cada idioma e defina seu BasePortionFormat.setLanguageId de forma independente.

Este exemplo cria um parágrafo com trechos em inglês e francês:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Portion, Presentation, SaveFormat, ShapeType

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 80)
    paragraph = shape.getTextFrame().getParagraphs().get_Item(0)
    paragraph.getPortions().clear()

    english_portion = Portion("Welcome")
    english_portion.getPortionFormat().setLanguageId("en-US")
    paragraph.getPortions().add(english_portion)

    french_portion = Portion(" — Bienvenue")
    french_portion.getPortionFormat().setLanguageId("fr-FR")
    paragraph.getPortions().add(french_portion)

    presentation.save("multilingual_text.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Ativar ou Suprimir a Verificação Ortográfica para Trechos Individuais

PortionFormat herda as propriedades de texto comuns definidas por BasePortionFormat. Acesse o formato de um trecho através de Portion.getPortionFormat e use BasePortionFormat.setSpellCheck para controlar se um aplicativo de apresentação pode verificar a ortografia desse trecho. O valor padrão é False: True permite a verificação ortográfica, enquanto False a suprime.

A configuração se aplica a trechos individuais de texto. Diferentes trechos no mesmo parágrafo podem, portanto, usar valores diferentes. BasePortionFormat.setLanguageId e setSpellCheck têm propósitos complementares: setLanguageId identifica o idioma de revisão, enquanto setSpellCheck determina se a verificação ortográfica é permitida para o trecho.

BasePortionFormat.setProofDisabled também controla a revisão, mas representa o estado mais amplo de “não revisar” como um NullableBool. Use setSpellCheck quando precisar de um interruptor booleano direto especificamente para verificações ortográficas. Use setProofDisabled quando precisar preservar ou controlar explicitamente os metadados de não‑revisão da apresentação, inclusive seu estado NullableBool.NotDefined. Se definir ambas as propriedades, mantenha seus valores consistentes; não combine setSpellCheck definido como True com setProofDisabled definido como o estado NullableBool.True.

Essas propriedades configuram metadados de revisão usados pelo PowerPoint e outros aplicativos de apresentação. O Aspose.Slides não os utiliza para executar verificações ortográficas baseadas em dicionário ou para retornar uma lista de palavras incorretas.

O exemplo completo a seguir cria uma apresentação de entrada, a carrega, atribui diferentes configurações de verificação ortográfica e idiomas de revisão a dois trechos no mesmo parágrafo, salva o resultado, reabre‑o e verifica os valores armazenados:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Portion, Presentation, SaveFormat, ShapeType

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

source_presentation = Presentation()
try:
    source_slide = source_presentation.getSlides().get_Item(0)
    source_shape = source_slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 80)
    source_paragraph = source_shape.getTextFrame().getParagraphs().get_Item(0)
    source_paragraph.getPortions().clear()

    source_english_portion = Portion("Check this text. ")
    source_english_portion.getPortionFormat().setLanguageId("en-US")
    source_paragraph.getPortions().add(source_english_portion)

    source_french_portion = Portion("Ignorer ce code : ZX-81.")
    source_french_portion.getPortionFormat().setLanguageId("fr-FR")
    source_paragraph.getPortions().add(source_french_portion)

    source_presentation.save(input_file, SaveFormat.Pptx)
finally:
    source_presentation.dispose()

presentation = Presentation(input_file)
try:
    shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    portions = shape.getTextFrame().getParagraphs().get_Item(0).getPortions()

    checked_portion = portions.get_Item(0)
    checked_portion.getPortionFormat().setLanguageId("en-US")
    checked_portion.getPortionFormat().setSpellCheck(True)

    suppressed_portion = portions.get_Item(1)
    suppressed_portion.getPortionFormat().setLanguageId("fr-FR")
    suppressed_portion.getPortionFormat().setSpellCheck(False)

    presentation.save(output_file, SaveFormat.Pptx)
finally:
    presentation.dispose()

reopened_presentation = Presentation(output_file)
try:
    reopened_shape = reopened_presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    stored_portions = reopened_shape.getTextFrame().getParagraphs().get_Item(0).getPortions()

    first_portion_stored = stored_portions.getCount() == 2 and stored_portions.get_Item(0).getPortionFormat().getLanguageId() == "en-US" and stored_portions.get_Item(0).getPortionFormat().getSpellCheck()

    second_portion_stored = stored_portions.getCount() == 2 and stored_portions.get_Item(1).getPortionFormat().getLanguageId() == "fr-FR" and not stored_portions.get_Item(1).getPortionFormat().getSpellCheck()

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

finally:
    reopened_presentation.dispose()

Presentation.joinPortionsWithSameFormatting combina trechos adjacentes que possuem o mesmo formato. Uma diferença em BasePortionFormat.setSpellCheck sozinha não mantém esses trechos separados; após a junção, o trecho resultante retém o valor de BasePortionFormat.setSpellCheck do primeiro trecho. Se os trechos precisarem de configurações de verificação ortográfica diferentes, chame joinPortionsWithSameFormatting antes de atribuir essas configurações, ou inspecione os limites do trecho resultante e reaplique as configurações posteriormente. Trechos com valores diferentes de BasePortionFormat.setLanguageId permanecem separados porque a formatação de idioma de revisão difere.

FAQ

O ID do idioma traduz o texto?

Não. BasePortionFormat.setLanguageId armazena metadados de revisão para ortografia e gramática; não altera o conteúdo do texto. Traduza o texto separadamente e, em seguida, defina o identificador de idioma apropriado para cada trecho traduzido.

O idioma de revisão controla fontes, hifenização ou quebra de linha?

Não. O identificador de idioma serve apenas para revisão. A renderização e o layout do texto dependem principalmente das fonts, do sistema de escrita e das configurações da caixa de texto. Para renderização confiável, forneça as fontes necessárias, configure a font substitution ou embed fonts na apresentação.

Um parágrafo pode usar vários idiomas de revisão?

Sim. Atribua cada idioma a um trecho separado, como demonstrado no exemplo de parágrafo multilíngue.

Devo usar setDefaultTextLanguage ou setLanguageId?

Use LoadOptions.setDefaultTextLanguage quando quiser um padrão para textos recém‑criados. Use BasePortionFormat.setLanguageId quando um trecho específico precisar de um idioma de revisão explícito ou quando um parágrafo contiver vários idiomas.