Automatizálja a prezentáció lokalizálását Pythonon keresztül Java-val
Áttekintés
Aspose.Slides for Python via Java lehetővé teszi, hogy egyes szövegrészek bizonyítási metaadatait konfigurálja. Használja a BasePortionFormat.setLanguageId metódust a bizonyítási nyelv azonosításához, a BasePortionFormat.setSpellCheck metódust a helyesírás-ellenőrzés engedélyezéséhez vagy letiltásához, valamint a BasePortionFormat.setProofDisabled metódust a tágabb „nem bizonyítás” állapot vezérléséhez. Mivel ezek a beállítások a rész szintjén kerülnek alkalmazásra, egy bekezdés több nyelvet és különböző bizonyítási szabályokat is tartalmazhat.
Ez a cikk bemutatja, hogyan lehet egy nyelvet hozzárendelni a konkrét szöveghez, hogyan állítható be az új szöveg alapértelmezett nyelve a LoadOptions.setDefaultTextLanguage segítségével, hogyan építhető többnyelvű bekezdés, hogyan választható a BasePortionFormat.setSpellCheck és a BasePortionFormat.setProofDisabled között, valamint hogyan őrizhetők meg a kívánt beállítások a Presentation.joinPortionsWithSameFormatting használata során. Ezek a tulajdonságok metaadatot tárolnak a prezentációs alkalmazások számára; nem fordítják le a szöveget, nem végeznek szótár alapú helyesírás-ellenőrzést, és nem adnak vissza hibás szavakat.
Állítsa be a bizonyítási nyelvet a szöveghez
Hozzon létre vagy töltsön be egy Presentation, érje el a szükséges szövegrészt a Portion.getPortionFormat segítségével, és rendelje hozzá a nyelvazonosítót. A következő példa egy alakzatot hoz létre, brit angolt állít be bizonyítási nyelvként, majd az eredményt a Presentation.save metódussal menti:
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()
Állítsa be az alapértelmezett nyelvet az új szöveghez
Használja a LoadOptions.setDefaultTextLanguage metódust a bizonyítási nyelv megadásához, amelyet az Aspose.Slides az újonnan létrehozott szöveghez rendel. Ez a beállítás akkor hasznos, ha a prezentáció legtöbb vagy összes új szövege ugyanazt a nyelvet használja. Nem változtatja meg a már kifejezett nyelvvel rendelkező szöveg nyelvi metaadatait.
A következő példa egy olyan prezentációt hoz létre, amelynek új szövege német bizonyítási szabályokat használ:
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()
Használjon több nyelvet egy bekezdésben
Egy Paragraph szövegrészek gyűjteményét tartalmazza. Hozzon létre minden nyelvhez külön Portion elemet, és állítsa be a BasePortionFormat.setLanguageId értékét önállóan.
Ez a példa egy bekezdést hoz létre angol és francia szövegrészekkel:
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()
Engedélyezze vagy tiltja a helyesírás-ellenőrzést egyedi szövegrészeknél
A PortionFormat örökli a BasePortionFormat által meghatározott közös szövegtulajdonságokat. A szövegrész formátumához a Portion.getPortionFormat segítségével férhet hozzá, és a BasePortionFormat.setSpellCheck használatával szabályozhatja, hogy egy prezentációs alkalmazás ellenőrizze-e a helyesírást az adott részben. Az alapértelmezett érték False: a True engedélyezi a helyesírás-ellenőrzést, míg a False letiltja azt.
A beállítás egyedi szövegrészekre vonatkozik. Ezért a ugyanabban a bekezdésben lévő különböző részek különböző értékeket használhatnak. A BasePortionFormat.setLanguageId és a setSpellCheck kiegészítő célokat szolgálnak: a setLanguageId határozza meg a bizonyítási nyelvet, míg a setSpellCheck meghatározza, hogy a részhez engedélyezett-e a helyesírás-ellenőrzés.
A BasePortionFormat.setProofDisabled is szabályozza a bizonyítást, de a tágabb „ne bizonyítsa” állapotot egy NullableBool segítségével ábrázolja. Használja a setSpellCheck metódust, ha közvetlen Boolean kapcsolóra van szüksége kifejezetten a helyesírás-ellenőrzéshez. Használja a setProofDisabled metódust, ha a prezentáció „nem bizonyítás” metaadatait szeretné megőrizni vagy kifejezetten vezérelni, beleértve a NullableBool.NotDefined állapotot is. Ha mindkét tulajdonságot beállítja, tartsa értékeiket konzisztensen; ne kombinálja a setSpellCheck True értékét a setProofDisabled NullableBool.True állapotával.
Ezek a tulajdonságok a PowerPoint és más prezentációs alkalmazások által használt bizonyítási metaadatokat konfigurálják. Az Aspose.Slides nem használja őket szótár alapú helyesírás-ellenőrzéshez vagy hibás szavak listájának visszaadásához.
A következő teljes példa egy bemeneti prezentációt hoz létre, betölti, két szövegrésznek a ugyanabban a bekezdésben különböző helyesírás-ellenőrzési beállításokat és bizonyítási nyelveket rendel, elmenti az eredményt, újra megnyitja, és ellenőrzi a tárolt értékeket:
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()
A Presentation.joinPortionsWithSameFormatting összevonja az egymás melletti, azonos formázású szövegrészeket. A BasePortionFormat.setSpellCheck különbsége önmagában nem tartja szét ezeket a részeket; összefűzés után az eredményrészlet megtartja az első rész BasePortionFormat.setSpellCheck értékét. Ha a részeknek különböző helyesírás-ellenőrzési beállításokra van szüksége, hívja meg a joinPortionsWithSameFormatting metódust a beállítások hozzárendelése előtt, vagy ellenőrizze az eredményes részlet határait, és később alkalmazza újra a beállításokat. A különböző BasePortionFormat.setLanguageId értékkel rendelkező részek továbbra is különállóak maradnak, mivel a bizonyítási nyelv formázása eltér.
GYIK
Átfordítja-e a nyelvazonosító a szöveget?
Nem. A BasePortionFormat.setLanguageId metaadatot tárol a helyesírás és nyelvtan ellenőrzéséhez; nem módosítja a szövegtartalmat. A szöveget külön kell lefordítani, majd a megfelelő nyelvazonosítót beállítani minden lefordított szövegrészhez.
A bizonyítási nyelv befolyásolja a betűtípusokat, szótagolást vagy a sortörést?
Nem. A nyelvazonosító a bizonyításra szolgál. A szöveg renderelése és elrendezése elsősorban a rendelkezésre álló fonts, a írásrendszer és a szövegkeret beállításai függvénye. A megbízható rendereléshez biztosítsa a szükséges betűtípusokat, konfigurálja a font substitution vagy embed fonts beállításokat a prezentációban.
Használhat-e egy bekezdés több bizonyítási nyelvet?
Igen. Rendeljen minden nyelvet egy külön szövegrészhez, ahogy a többnyelvű bekezdés példájában látható.
Használnom kell a setDefaultTextLanguage vagy a setLanguageId metódust?
Használja a LoadOptions.setDefaultTextLanguage metódust, amikor alapértelmezettet szeretne az újonnan létrehozott szövegre. Használja a BasePortionFormat.setLanguageId metódust, amikor egy adott szövegrésznek explicit bizonyítási nyelvre van szüksége, vagy ha egy bekezdés több nyelvet tartalmaz.