Prezentációk lokalizációjának automatizálása PHP-ben
Áttekintés
Az Aspose.Slides for PHP via Java lehetővé teszi, hogy egyes szövegrészekhez konfigurálja a helyesírási metaadatokat. Használja a BasePortionFormat::setLanguageId a helyesírási nyelv azonosításához, a BasePortionFormat::setSpellCheck a helyesírás-ellenőrzés engedélyezéséhez vagy letiltásához, valamint a BasePortionFormat::setProofDisabled a szélesebb körű „ne ellenőrizze” á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ő helyesírási szabályokat is tartalmazhat.
Ez a cikk bemutatja, hogyan rendelhet nyelvet egy adott szöveghez, hogyan állíthatja be az új szöveg alapértelmezett nyelvét a LoadOptions::setDefaultTextLanguage segítségével, hogyan építhet többnyelvű bekezdéseket, hogyan választhat a SpellCheck és a ProofDisabled között, és hogyan őrizheti meg a kívánt beállításokat a Presentation::joinPortionsWithSameFormatting használata során. Ezek a tulajdonságok metaadatot tárolnak a bemutatóalkalmazások számára; nem fordítják le a szöveget, nem végeznek szótári alapú helyesírás-ellenőrzést, és nem adnak vissza hibás szavakat.
A helyesírási nyelv beállítása 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 állítsa be annak nyelvazonosítóját. Az alábbi példa létrehoz egy alakzatot, brit angolt állít be helyesírási nyelvként, és a Presentation::save segítségével menti az eredményt:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new 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();
}
Az új szöveg alapértelmezett nyelvének beállítása
Használja a LoadOptions::setDefaultTextLanguage metódust annak a helyesírási nyelvnek a megadására, amelyet az Aspose.Slides az újonnan létrehozott szövegre alkalmaz. Ez a beállítás akkor hasznos, ha a bemutató nagy része vagy egészben ugyanazt a nyelvet használja. Nem változtatja meg a már kifejezett nyelvi metaadatot tartalmazó szöveg nyelvét.
Az alábbi példa egy olyan bemutatót hoz létre, amelynek új szövege német helyesírási szabályokat használ:
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$loadOptions = new LoadOptions();
$loadOptions->setDefaultTextLanguage("de-DE");
$presentation = new Presentation($loadOptions);
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();
}
Több nyelv használata egy bekezdésben
Egy Paragraph a szövegrészek gyűjteményét tartalmazza. Hozzon létre külön Portion elemet minden nyelvhez, és állítsa be annak LanguageId értékét függetlenül.
Ez a példa egy bekezdést hoz létre angol és francia részekkel:
use aspose\slides\Portion;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new 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();
$englishPortion = new Portion("Welcome");
$englishPortion->getPortionFormat()->setLanguageId("en-US");
$paragraph->getPortions()->add($englishPortion);
$frenchPortion = new Portion(" — Bienvenue");
$frenchPortion->getPortionFormat()->setLanguageId("fr-FR");
$paragraph->getPortions()->add($frenchPortion);
$presentation->save("multilingual_text.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Helyesírás-ellenőrzés engedélyezése vagy letiltása az egyes részeknél
A PortionFormat örökli a BasePortionFormat által definiált közös szövegtulajdonságokat. Érje el egy rész formátumát a Portion::getPortionFormat segítségével, és használja a BasePortionFormat::setSpellCheck metódust annak szabályozására, hogy a bemutatóalkalmazás ellenőrizheti-e a helyesírást az adott részhez. Az alapé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 az egyes szövegrészekre vonatkozik. Így a ugyanabban a bekezdésben lévő különböző részek eltérő értékeket használhatnak. A BasePortionFormat::setLanguageId és a setSpellCheck kiegészítő célokat szolgálnak: az setLanguageId meghatározza a helyesírási nyelvet, míg a setSpellCheck szabályozza, hogy a rész számára engedélyezve van-e a helyesírás-ellenőrzés.
A BasePortionFormat::setProofDisabled szintén a helyesírást vezérli, de a szélesebb körű „ne ellenőrizze” állapotot egy NullableBool értékkel reprezentálja. Használja a setSpellCheck metódust, ha kifejezetten a helyesírás-ellenőrzés be- vagy kikapcsolására van szükség. Használja a setProofDisabled metódust, ha a bemutató „nem ellenőrzött” metaadatait, beleértve a NotDefined állapotot, meg kell őrizni vagy explicit módon szabályozni. Ha mindkét tulajdonságot beállítja, tartsa konzisztensen az értékeket; ne kombinálja a setSpellCheck(true)-t a setProofDisabled(NullableBool::True)-val.
Ezek a tulajdonságok a PowerPoint és egyéb bemutatóalkalmazások által használt helyesírási metaadatokat konfigurálják. Az Aspose.Slides nem használja őket szótári alapú helyesírás-ellenőrzéshez, és nem ad vissza hibás szavak listáját.
Az alábbi teljes példa bemutat egy bemeneti bemutató betöltését, különböző helyesírási beállítások és nyelvek hozzárendelését két részhez ugyanabban a bekezdésben, a végeredmény mentését, újbóli megnyitását és a tárolt értékek ellenőrzését:
use aspose\slides\Portion;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$inputFile = "spell_check_input.pptx";
$outputFile = "spell_check_settings.pptx";
$sourcePresentation = new Presentation();
try {
$sourceSlide = $sourcePresentation->getSlides()->get_Item(0);
$sourceShape = $sourceSlide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 420, 80);
$sourceParagraph = $sourceShape->getTextFrame()->getParagraphs()->get_Item(0);
$sourceParagraph->getPortions()->clear();
$sourceEnglishPortion = new Portion("Check this text. ");
$sourceEnglishPortion->getPortionFormat()->setLanguageId("en-US");
$sourceParagraph->getPortions()->add($sourceEnglishPortion);
$sourceFrenchPortion = new Portion("Ignorer ce code : ZX-81.");
$sourceFrenchPortion->getPortionFormat()->setLanguageId("fr-FR");
$sourceParagraph->getPortions()->add($sourceFrenchPortion);
$sourcePresentation->save($inputFile, SaveFormat::Pptx);
} finally {
$sourcePresentation->dispose();
}
$presentation = new Presentation($inputFile);
try {
$shape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
$portions = $shape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions();
$checkedPortion = $portions->get_Item(0);
$checkedPortion->getPortionFormat()->setLanguageId("en-US");
$checkedPortion->getPortionFormat()->setSpellCheck(true);
$suppressedPortion = $portions->get_Item(1);
$suppressedPortion->getPortionFormat()->setLanguageId("fr-FR");
$suppressedPortion->getPortionFormat()->setSpellCheck(false);
$presentation->save($outputFile, SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
$reopenedPresentation = new Presentation($outputFile);
try {
$reopenedShape = $reopenedPresentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
$storedPortions = $reopenedShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions();
$storedPortionCount = java_values($storedPortions->getCount());
$firstStoredFormat = $storedPortions->get_Item(0)->getPortionFormat();
$secondStoredFormat = $storedPortions->get_Item(1)->getPortionFormat();
$firstPortionStored = $storedPortionCount === 2 &&
java_values($firstStoredFormat->getLanguageId()) === "en-US" &&
java_values($firstStoredFormat->getSpellCheck());
$secondPortionStored = $storedPortionCount === 2 &&
java_values($secondStoredFormat->getLanguageId()) === "fr-FR" &&
!java_values($secondStoredFormat->getSpellCheck());
if ($firstPortionStored && $secondPortionStored) {
echo "The proofing settings were stored correctly.";
} else {
echo "The proofing settings could not be verified.";
}
} finally {
$reopenedPresentation->dispose();
}
A Presentation::joinPortionsWithSameFormatting azonos formázású szomszédos részeket egyesíti. A SpellCheck érték különbözése önmagában nem tartja szét ezeket a részeket; az egyesítés után az eredményrész megtartja az első rész SpellCheck értékét. Ha a részeknek különböző helyesírási beállításokra van szükségük, hívja a joinPortionsWithSameFormatting metódust a beállítások hozzárendelése előtt, vagy ellenőrizze az eredményrész határait, és alkalmazza újra a beállításokat utána. A különböző LanguageId értékű részek továbbra is külön maradnak, mivel a helyesírási nyelv formázása eltérő.
GYIK
A nyelvazonosító lefordítja a szöveget?
Nem. A BasePortionFormat::setLanguageId a helyesírási és nyelvtani metaadatokat tárolja; 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 az egyes lefordított részekhez.
A helyesírási nyelv befolyásolja a betűtípusokat, elválasztást vagy sortörést?
Nem. A nyelvazonosító csak a helyesírásra vonatkozik. A szöveg megjelenítése és elrendezése elsősorban az elérhető fonts, az írásrendszer és a szövegkeret beállításaitól függ. A megbízható megjelenítéshez biztosítsa a szükséges betűtípusokat, konfigurálja a font substitution lehetőséget, vagy ágyazza be a betűtípusokat a embed fonts résznél.
Egy bekezdés használhat több helyesírási nyelvet?
Igen. Rendeljen minden nyelvet egy külön részhez, ahogyan a többnyelvű bekezdés példában látható.
A setDefaultTextLanguage vagy a setLanguageId a megfelelő?
Használja a LoadOptions::setDefaultTextLanguage metódust, ha alapértelmezett nyelvet akar megadni az újonnan létrehozott szöveghez. Használja a BasePortionFormat::setLanguageId metódust, ha egy adott résznek explicit helyesírási nyelvre van szüksége, vagy ha egy bekezdés több nyelvet tartalmaz.