Automatiser la localisation de présentations en Python via Java
Vue d’ensemble
Aspose.Slides for Python via Java vous permet de configurer les métadonnées de vérification pour des portions de texte individuelles. Utilisez BasePortionFormat.setLanguageId pour identifier la langue de vérification, BasePortionFormat.setSpellCheck pour autoriser ou supprimer les vérifications orthographiques, et BasePortionFormat.setProofDisabled pour contrôler l’état plus large « pas de vérification ». Étant donné que ces paramètres sont appliqués au niveau de la portion, un paragraphe peut contenir plusieurs langues et différentes règles de vérification.
Cet article explique comment affecter une langue à un texte spécifique, définir la langue par défaut pour le nouveau texte avec LoadOptions.setDefaultTextLanguage, créer des paragraphes multilingues, choisir entre BasePortionFormat.setSpellCheck et BasePortionFormat.setProofDisabled, et préserver les paramètres souhaités lors de l’utilisation de Presentation.joinPortionsWithSameFormatting. Ces propriétés stockent des métadonnées pour les applications de présentation ; elles ne traduisent pas le texte, n’effectuent pas de vérification orthographique basée sur un dictionnaire, et ne renvoient pas les mots mal orthographiés.
Définir la langue de vérification pour le texte
Créez ou chargez une Presentation, accédez à la portion de texte souhaitée via Portion.getPortionFormat, puis attribuez son identifiant de langue. L’exemple suivant crée une forme, définit l’anglais britannique comme langue de vérification, et enregistre le résultat avec 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()
Définir la langue par défaut pour le nouveau texte
Utilisez LoadOptions.setDefaultTextLanguage pour spécifier la langue de vérification qu’Aspose.Slides attribue au texte nouvellement créé. Ce paramètre est utile lorsque la plupart ou la totalité du nouveau texte d’une présentation utilise la même langue. Il ne modifie pas les métadonnées de langue du texte qui possède déjà une langue explicite.
L’exemple suivant crée une présentation dont le nouveau texte utilise les règles de vérification allemandes :
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()
Utiliser plusieurs langues dans un même paragraphe
Un Paragraph contient une collection de portions de texte. Créez une Portion distincte pour chaque langue et définissez son BasePortionFormat.setLanguageId indépendamment.
Cet exemple crée un paragraphe contenant des portions en anglais et en français :
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()
Activer ou désactiver la vérification orthographique pour des portions individuelles
PortionFormat hérite des propriétés de texte communes définies par BasePortionFormat. Accédez au format d’une portion via Portion.getPortionFormat et utilisez BasePortionFormat.setSpellCheck pour contrôler si une application de présentation peut vérifier l’orthographe de cette portion. La valeur par défaut est False : True autorise la vérification orthographique, tandis que False la désactive.
Ce paramètre s’applique aux portions de texte individuelles. Des portions différentes dans le même paragraphe peuvent ainsi utiliser des valeurs différentes. BasePortionFormat.setLanguageId et setSpellCheck ont des objectifs complémentaires : setLanguageId identifie la langue de vérification, tandis que setSpellCheck détermine si les vérifications orthographiques sont autorisées pour la portion.
BasePortionFormat.setProofDisabled contrôle également la vérification, mais il représente l’état plus large « ne pas vérifier » sous forme de NullableBool. Utilisez setSpellCheck lorsque vous avez besoin d’un commutateur booléen direct spécifiquement pour la vérification orthographique. Utilisez setProofDisabled lorsque vous devez conserver ou contrôler explicitement les métadonnées « pas de vérification » de la présentation, y compris son état NullableBool.NotDefined. Si vous définissez les deux propriétés, maintenez leurs valeurs cohérentes ; ne combinez pas setSpellCheck à True avec setProofDisabled à l’état NullableBool.True.
Ces propriétés configurent les métadonnées de vérification utilisées par PowerPoint et d’autres applications de présentation. Aspose.Slides ne les utilise pas pour exécuter une vérification orthographique basée sur un dictionnaire ou renvoyer une liste de mots mal orthographiés.
L’exemple complet suivant crée une présentation d’entrée, la charge, attribue des paramètres de vérification orthographique et des langues de vérification différents à deux portions du même paragraphe, enregistre le résultat, le rouvre et vérifie les valeurs stockées :
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 combine les portions adjacentes qui ont le même formatage. Une différence dans BasePortionFormat.setSpellCheck seule ne maintient pas ces portions séparées ; après leur fusion, la portion résultante conserve la valeur BasePortionFormat.setSpellCheck de la première portion. Si les portions nécessitent des paramètres de vérification orthographique différents, appelez joinPortionsWithSameFormatting avant d’attribuer ces paramètres, ou inspectez les frontières de la portion résultante et réappliquez les paramètres par la suite. Les portions avec des valeurs différentes de BasePortionFormat.setLanguageId restent séparées car leur formatage de langue de vérification diffère.
FAQ
Un identifiant de langue traduit-il le texte ?
Non. BasePortionFormat.setLanguageId stocke les métadonnées de vérification pour l’orthographe et la grammaire ; il ne modifie pas le contenu du texte. Traduisez le texte séparément, puis définissez l’identifiant de langue approprié pour chaque portion traduite.
La langue de vérification contrôle-t-elle les polices, la césure ou le retour à la ligne ?
Non. L’identifiant de langue sert à la vérification. Le rendu du texte et la mise en page dépendent principalement des fonts disponibles, du système d’écriture et des paramètres du cadre de texte. Pour un rendu fiable, fournissez les polices requises, configurez la font substitution ou embed fonts dans la présentation.
Un paragraphe peut-il utiliser plusieurs langues de vérification ?
Oui. Assignez chaque langue à une portion distincte, comme le montre l’exemple de paragraphe multilingue.
Dois-je utiliser setDefaultTextLanguage ou setLanguageId ?
Utilisez LoadOptions.setDefaultTextLanguage lorsque vous souhaitez une langue par défaut pour le texte nouvellement créé. Utilisez BasePortionFormat.setLanguageId lorsqu’une portion spécifique nécessite une langue de vérification explicite ou lorsqu’un paragraphe contient plusieurs langues.