Python üzerinden Java ile Sunum Yerelleştirmesini Otomatikleştir

Genel Bakış

Aspose.Slides for Python via Java, bireysel metin bölümleri için denetleme üst verilerini yapılandırmanıza olanak tanır. Proofing dilini belirlemek için BasePortionFormat.setLanguageId, imla denetimini etkinleştirmek veya devre dışı bırakmak için BasePortionFormat.setSpellCheck ve daha geniş “proof” durumunu kontrol etmek için BasePortionFormat.setProofDisabled kullanın. Bu ayarlar bölüm (portion) seviyesinde uygulandığından, tek bir paragrafta birden çok dil ve farklı denetleme kuralları bulunabilir.

Bu makale, belirli bir metne nasıl dil atanacağını, LoadOptions.setDefaultTextLanguage ile yeni metin için varsayılan dilin nasıl ayarlanacağını, çok dilli paragrafların nasıl oluşturulacağını, BasePortionFormat.setSpellCheck ve BasePortionFormat.setProofDisabled arasında nasıl tercih yapılacağını ve Presentation.joinPortionsWithSameFormatting kullanılırken istenen ayarların nasıl korunacağını açıklar. Bu özellikler, sunum uygulamaları için üst veri depolar; metni çevremez, sözlük tabanlı imla denetimi yapmaz ve yanlış yazılmış kelimeleri döndürmez.

Metin İçin Proofing Dilini Ayarlama

Bir Presentation oluşturun veya yükleyin, Portion.getPortionFormat aracılığıyla gerekli metin bölümüne erişin ve dil tanımlayıcısını atayın. Aşağıdaki örnek bir şekil oluşturur, proofing dili olarak Britanya İngilizcesi ayarlar ve sonucu Presentation.save ile kaydeder:

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()

Yeni Metin İçin Varsayılan Dili Ayarlama

LoadOptions.setDefaultTextLanguage, Aspose.Slides’in yeni oluşturulan metne atayacağı proofing dilini belirlemenizi sağlar. Çoğu veya tüm yeni metin aynı dili kullanıyorsa faydalıdır. Zaten açık bir dili olan metnin üst verisini değiştirmez.

Aşağıdaki örnek, yeni metnin Almanca proofing kurallarını kullanacağı bir sunum oluşturur:

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()

Tek Bir Paragrafta Birden Çok Dil Kullanma

Bir Paragraph, metin bölümlerinin bir koleksiyonunu içerir. Her dil için ayrı bir Portion oluşturun ve BasePortionFormat.setLanguageId özelliğini bağımsız olarak ayarlayın.

Bu örnek, İngilizce ve Fransızca bölümleri olan tek bir paragraf oluşturur:

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()

Bireysel Bölümler İçin İmla Denetimini Açma veya Kapatma

PortionFormat, BasePortionFormat tarafından tanımlanan ortak metin özelliklerini devralır. Bir bölümün biçimine Portion.getPortionFormat ile erişin ve BasePortionFormat.setSpellCheck kullanarak sunum uygulamasının o bölüm için imla denetimi yapıp yapmayacağını kontrol edin. Varsayılan değer False tır: True imla denetimine izin verir, False ise engeller.

Ayar, bireysel metin bölümlerine uygulanır. Aynı paragraftaki farklı bölümler farklı değerler kullanabilir. BasePortionFormat.setLanguageId ve setSpellCheck tamamlayıcı amaçlara hizmet eder: setLanguageId proofing dilini belirlerken, setSpellCheck bölümün imla denetimine izin verilip verilmeyeceğini belirler.

BasePortionFormat.setProofDisabled da proofing’i kontrol eder, ancak daha geniş “proof yapılmasın” durumunu NullableBool olarak temsil eder. Yalnızca imla denetimi için doğrudan bir Boolean anahtarına ihtiyacınız olduğunda setSpellCheck kullanın. Sunumun “proof yapılmasın” üst verisini korumak veya açıkça kontrol etmek istediğinizde setProofDisabled kullanın; bu, NullableBool.NotDefined durumunu da kapsar. İki özelliği aynı anda ayarlıyorsanız değerlerini tutarlı tutun; setSpellCheck True iken setProofDisabled NullableBool.True durumunda olmamalıdır.

Bu özellikler, PowerPoint ve diğer sunum uygulamaları tarafından kullanılan proofing üst verilerini yapılandırır. Aspose.Slides bu verileri sözlük tabanlı imla denetimi yapmak veya yanlış yazılmış kelimelerin listesini döndürmek için kullanmaz.

Aşağıdaki tam örnek, bir giriş sunumu oluşturur, yükler, aynı paragraftaki iki bölüm için farklı imla denetimi ayarları ve proofing dilleri atar, sonucu kaydeder, yeniden açar ve kaydedilen değerleri doğrular:

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, aynı biçimlendirmeye sahip komşu bölümleri birleştirir. Sadece BasePortionFormat.setSpellCheck farkı, bölümleri ayrı tutmaz; birleştirildikten sonra oluşan bölüm, ilk bölümün BasePortionFormat.setSpellCheck değerini korur. Bölümlerin farklı imla denetimi ayarlarına ihtiyacı varsa, bu ayarları atamadan önce joinPortionsWithSameFormatting metodunu çağırın veya sonuçta oluşan bölüm sınırlarını inceleyip ayarları sonradan yeniden uygulayın. BasePortionFormat.setLanguageId değerleri farklı olan bölümler, proofing‑dil biçimlendirmeleri farklı olduğu için ayrı kalır.

SSS

Bir dil kimliği metni çevirir mi?

Hayır. BasePortionFormat.setLanguageId, imla ve dilbilgisi için proofing üst verilerini depolar; metin içeriğini değiştirmez. Metni ayrı olarak çevirin ve ardından her çevrilmiş bölüm için uygun dil tanımlayıcısını ayarlayın.

Proofing dili yazı tiplerini, hecelemeyi veya satır kaydırmayı kontrol eder mi?

Hayır. Dil tanımlayıcısı yalnızca proofing içindir. Metin renderleme ve yerleşim, öncelikle mevcut fonts, yazı sistemi ve metin‑çerçeve ayarlarına bağlıdır. Güvenilir renderleme için gerekli yazı tiplerini sağlayın, font substitution yapılandırın veya embed fonts ekleyin.

Bir paragrafta birden çok proofing dili kullanılabilir mi?

Evet. Çok dilli paragraf örneğinde gösterildiği gibi, her dili ayrı bir bölüme atayın.

setDefaultTextLanguage mi yoksa setLanguageId mi kullanılmalı?

Yeni oluşturulan metin için bir varsayılan istiyorsanız LoadOptions.setDefaultTextLanguage kullanın. Belirli bir bölüm için açık bir proofing dili gerekiyorsa veya bir paragrafta birden çok dil varsa BasePortionFormat.setLanguageId kullanın.