ჩვენ ვაგრძელებთ PyGObject პროგრამირების სერიას თქვენთან ერთად და აქ მე -5 ნაწილი, ჩვენ ვისწავლით თუ როგორ ვთარგმნოთ ჩვენი PyGObject პროგრამები სხვადასხვა ენაზე. თქვენი აპლიკაციების თარგმნა მნიშვნელოვანია, თუ თქვენ აპირებთ მის გამოქვეყნებას მსოფლიოსთვის, ის უფრო მოსახერხებელი იქნება საბოლოო მომხმარებლისთვის, რადგან ყველას არ ესმის ინგლისური.
ჩვენ შეგვიძლია შევაჯამოთ Linux პროგრამის ნებისმიერი პროგრამის თარგმნის ნაბიჯები ამ ნაბიჯების გამოყენებით:
და ეს არის ის! ამ ნაბიჯების შესრულების შემდეგ თქვენი აპლიკაცია მზად იქნება გამოსაყენებლად მთლიანი მსოფლიოს მომხმარებლებისთვის (იქნება.. თქვენ უნდა თარგმნოთ თქვენი პროგრამა მსოფლიოს ყველა ენაზე, თუმცა!), ადვილი ჟღერს, არა? :-)
პირველი, დროის დაზოგვის მიზნით, გადმოწერეთ პროექტის ფაილები ქვემოთ მოცემული ბმულიდან და ამოიღეთ ფაილი თქვენი სახლის დირექტორიაში.
Გააღე "setup.py”შეიტანეთ ფაილი და შენიშნეთ ცვლილებები, რაც ჩვენ გავაკეთეთ:
# აქ ჩვენ შემოვიღეთ 'კონფიგურაციის' მოდული, რომელიც საშუალებას გვაძლევს დავაყენოთ პითონის სკრიპტები ადგილობრივ სისტემაში სხვა ამოცანების შესრულების გარდა, თქვენ შეგიძლიათ იპოვოთ დოკუმენტაცია აქ: https://docs.python.org/2/distutils/apiref.html. distutils.core იმპორტის დაყენებიდან # ეს მოდულები დაგვეხმარება პროგრამის თარგმანის ფაილების ავტომატურად შექმნაში. ქვეპროცესული იმპორტის ზარიდან. გლობალური იმპორტის გლობუსიდან. os.path იმპორტი splitext, გაყოფილი # ნუ გადაყრით „myprogram“ - ის ჩანაცვლებას თქვენი პროგრამის სახელით ყოველ ამ ფაილში ამ პროექტში. data_files = [("lib/myprogram", ["ui.glade"]), # ეს აპირებს "ui.glade" ფაილის დაყენებას/usr/lib/myprogram ბილიკის ქვეშ. ("გაზიარება/პროგრამები", ["myprogram.desktop"])] # ეს კოდი აკეთებს ყველაფერს, რაც საჭიროა მთარგმნელობითი ფაილების შესაქმნელად, ჯერ ის ეძებს ყველა .po ფაილს po საქაღალდეში, შემდეგ ის განსაზღვრავს ნაგულისხმევ გზას, თუ სად უნდა დააყენოთ მთარგმნელობითი ფაილები (.mo) ადგილობრივ სისტემაზე, შემდეგ ის აპირებს შექმნას დირექტორია ჩვენი სისტემის მთარგმნელობითი ფაილების ადგილობრივი სისტემა და ბოლოს ის აპირებს ყველა .po ფაილების გადაქცევას .mo ფაილში "msgfmt" გამოყენებით ბრძანება. po_files = glob ("po/*. po") po_file– ს po_files– ში: lang = splitext (გაყოფა (po_file) [1]) [0] mo_path = "locale/{}/LC_MESSAGES/myprogram.mo" .format (lang) # განახორციელეთ ლოკალური დირექტორიების ზარი ("mkdir -p locale/{}/LC_MESSAGES/". ფორმატი (lang), shell = True) # შექმენით mo ფაილების ზარი ("msgfmt {} -o {}". ფორმატი (po_file, mo_path), shell = True) locales = რუკა (lambda i: ('share/'+i, [i+'/myprogram.mo',]), glob ('locale/*/LC_MESSAGES')) # აქ, ინსტალერი ავტომატურად დაამატებს .mo ფაილებს მონაცემთა ფაილებში დააინსტალირეთ ისინი მოგვიანებით. data_files.extend (locales) დაყენება (name = "myprogram", # პროგრამის სახელი. ვერსია = "1.0", # პროგრამის ვერსია. აღწერა = "ადვილად გამოსაყენებელი ვებ ინტერფეისი პასტების ადვილად შესაქმნელად და გასაზიარებლად", # თქვენ აქ დახმარება არ გჭირდებათ. ავტორი = "TecMint", # არც აქ. author_email = "[ელფოსტა დაცულია]",# არც აქ: D url ="http://example.com", # თუ თქვენ გაქვთ ვებგვერდი თქვენთვის პროგრამისთვის.. აქ დააყენე ლიცენზია = 'GPLv3', # პროგრამის ლიცენზია. სკრიპტები = ['myprogram'], # ეს არის პითონის მთავარი სკრიპტის ფაილის სახელი, ჩვენს შემთხვევაში ეს არის "myprogram", ეს არის ფაილი, რომელიც ჩვენ დავამატეთ "myprogram" საქაღალდის ქვეშ. # აქ თქვენ შეგიძლიათ აირჩიოთ სად გსურთ თქვენი ფაილების დაყენება ადგილობრივ სისტემაზე, "myprogram" ფაილი ავტომატურად დაინსტალირდება თავის სწორ ადგილას მოგვიანებით, ასე რომ თქვენ თქვენ მხოლოდ უნდა აირჩიოთ სად გსურთ დააინსტალიროთ ფაილები, რომლებსაც თქვენ ქმნით Python სკრიპტით data_files = data_files) # და ეს აპირებს. desktop– ის დაყენებას ფაილი/usr/share/applications საქაღალდეში, ყველა საქაღალდე ავტომატურად დაინსტალირდება/usr საქაღალდის ქვეშ თქვენს ძირეულ დანაყოფში, თქვენ არ გჭირდებათ დამატება "/usr/ გზა.
ასევე გახსენით "myprogram”შეიტანეთ ფაილი და ნახეთ პროგრამული ცვლილებები, რაც ჩვენ გავაკეთეთ, ყველა ცვლილება განმარტებულია კომენტარებში:
#!/usr/bin/python #-*-კოდირება: utf-8-*-## შეცვალეთ თქვენი სახელი და ელ.ფოსტა. # ჩემი სახელი <[ელფოსტა დაცულია]> ## აქ თქვენ უნდა დაამატოთ ფაილის ლიცენზია, შეცვალოთ "MyProgram" თქვენი პროგრამის სახელით. # ლიცენზია: # MyProgram არის უფასო პროგრამული უზრუნველყოფა: შეგიძლიათ მისი გადანაწილება და/ან შეცვლა. # ის GNU ზოგადი საჯარო ლიცენზიის პირობებით, როგორც გამოქვეყნებულია. # თავისუფალი პროგრამული უზრუნველყოფის ფონდი, ლიცენზიის მე -3 ვერსია, ან. # (თქვენი სურვილისამებრ) ნებისმიერი გვიანდელი ვერსია. # # MyProgram ვრცელდება იმ იმედით, რომ ის სასარგებლო იქნება, # მაგრამ ყოველგვარი გარანტიის გარეშე; თუნდაც გარანტირებული გარანტიის გარეშე. # სავაჭრო ან ვარგისიანობა კონკრეტული მიზნისათვის. ნახე. # GNU ზოგადი საჯარო ლიცენზია დამატებითი ინფორმაციისთვის. # # თქვენ უნდა მიიღოთ GNU ზოგადი საჯარო ლიცენზიის ასლი. # MyProgram– თან ერთად. თუ არა, ნახე. gi.repository import Gtk import os, gettext, locale ## ეს არის პროგრამული ცვლილება, რომელიც თქვენ უნდა დაამატოთ პითონის ფაილში, უბრალოდ შეცვალეთ "myprogram" თქვენი პროგრამის სახელით. "ლოკალური" და "გეტტექსტის" მოდულები იზრუნებენ დანარჩენ ოპერაციაზე. locale.setlocale (ლოკალი LC_ALL, '')) gettext.bindtextdomain ('myprogram', '/usr/share/locale') gettext.textdomain ('myprogram') _ = gettext.gettext. gettext.install ("myprogram", "/usr/share/locale") class Handler: def openterminal (self, button): ## როდესაც მომხმარებელი დააჭერს პირველ ღილაკს, ტერმინალი გაიხსნება. os.system ("x-terminal-emulator") def closeprogram (self, button): Gtk.main_quit () # აქ ახალი არაფერია.. ჩვენ უბრალოდ შემოვიღეთ 'ui.glade' ფაილი. მშენებელი = Gtk. აღმაშენებელი () builder.add_from_file ("/usr/lib/myprogram/ui.glade") builder.connect_signals (დამმუშავებელი ()) label = builder.get_object ("label1") # აქ არის კიდევ ერთი მცირე ცვლილება, ნაცვლად იმისა, რომ ტექსტი ("Welcome to my test program!") უნდა დავამატოთ "_" სიმბოლო მანამდე, რათა თარგმნის პროცესის შესახებ პასუხისმგებელმა სკრიპტებმა დაუშვან, რომ ის თარგმნადია სიმებიანი. label.set_text (_ ("კეთილი იყოს თქვენი მობრძანება ჩემს სატესტო პროგრამაში!")) ღილაკი = builder.get_object ("button2") # და აქ არის იგივე.. თქვენ უნდა გააკეთოთ ეს თქვენი პროგრამის ყველა ტექსტისთვის, სხვაგან, ისინი არ ითარგმნება. button.set_label (_ ("დააწკაპუნეთ ჩემზე ტერმინალის გასახსნელად")) window = builder.get_object ("window1") window.connect ("delete-event", Gtk.main_quit) window.show_all () Gtk.main ()
ახლა.. დავიწყოთ ჩვენი პროგრამის თარგმნა. ჯერ შექმენით .ქოთანი ფაილი (ფაილი, რომელიც შეიცავს პროგრამის ყველა მთარგმნელ სტრიქონს) ისე, რომ თქვენ
შეგიძლიათ დაიწყოთ თარგმნა შემდეგი ბრძანების გამოყენებით:
$ cd myprogram. $ xgettext -ენა = პითონი -საკვანძო სიტყვა = _ -o po/myprogram.pot myprogram.
ეს შექმნის "myprogram.pot"ფაილი შიგნით"po”საქაღალდე პროექტის მთავარ საქაღალდეში, რომელიც შეიცავს შემდეგ კოდს:
# ზოგიერთი აღწერითი სათაური. # საავტორო უფლება (გ) წელი პაკეტის საავტორო უფლებების მფლობელი. # ეს ფაილი განაწილებულია იმავე ლიცენზიით, როგორც PACKAGE პაკეტი. # პირველი ავტორი <[ელფოსტა დაცულია]>, წელი # #, ბუნდოვანი. msgstr "" msgstr "" "პროექტის ID- ვერსია: PACKAGE VERSION \ n" "ანგარიში-Msgid-Bugs-To: \ n" "ქოთანი-შექმნის თარიღი: 2014-12-29 21: 28+0200 \ n" "PO- გადასინჯვის თარიღი: YEAR-MO-DA HO: MI+ZONE \ n" "ბოლო მთარგმნელი: სრული სახელი <[ელფოსტა დაცულია]> \ n " "ენა-გუნდი: LANGUAGE <[ელფოსტა დაცულია]> \ n " "ენა: \ n" "MIME- ვერსია: 1.0 \ n" "შინაარსი-ტიპი: ტექსტი/უბრალო; charset = CHARSET \ n " "შინაარსის გადაცემა-კოდირება: 8 ბიტი \ n" #: myprogram: 48. msgstr "კეთილი იყოს თქვენი მობრძანება ჩემს სატესტო პროგრამაში!" msgstr "" #: myprogram: 52. msgstr "დააწკაპუნეთ ჩემზე ტერმინალის გასახსნელად" msgstr ""
ახლა იმისათვის, რომ დავიწყოთ სტრიქონების თარგმნა.. შექმენით გამოყოფილი ფაილი თითოეული ენისთვის, რომელზეც გსურთ გადათარგმნოთ თქვენი პროგრამა "ISO-639-1"ენების კოდები შიგნით"po”საქაღალდე, მაგალითად, თუ გსურთ თარგმნოთ თქვენი პროგრამა არაბულიშექმენით ფაილი სახელწოდებით "არ.პო"და დააკოპირეთ შინაარსი"myprogram.pot”შეიტანეთ იგი.
თუ გსურთ თარგმნოთ თქვენი პროგრამა გერმანული, შექმენი "de.po"ფაილი და დააკოპირეთ შინაარსი"myprogram.pot”შეიტანე ფაილი.. და ერთი, თქვენ უნდა შექმნათ ფაილი თითოეული ენისთვის, რომელზეც გსურთ თარგმნოთ თქვენი პროგრამა.
ახლა ჩვენ ვიმუშავებთ "არ.პო"ფაილი, დააკოპირეთ შინაარსი"myprogram.pot”შეიტანეთ ფაილში და შეცვალეთ შემდეგი:
ახლა დაიწყე თარგმნა! დაამატეთ თქვენი თარგმანი თითოეული სტრიქონისთვის ციტატების შემდეგ ”msgstr”. შეინახეთ ფაილი და გამოდით. კარგი თარგმანის ფაილი ამისთვის
არაბული ენა, როგორც მაგალითი, ასე უნდა გამოიყურებოდეს:
# ჩემი პროგრამა. # საავტორო უფლება (C) 2014 წ. # ეს ფაილი განაწილებულია იმავე ლიცენზიით, როგორც myprogram პაკეტი. # ჰანი ჰელალი <[ელფოსტა დაცულია]1.0 \ n" "ანგარიში-Msgid-Bugs-To: \ n" "ქოთანი-შექმნის თარიღი:2014-12-29 21:28+0200\ n " "PO- გადასინჯვის თარიღი:2014-12-29 22:28+0200\ n " "ბოლო მთარგმნელი:მ.ჰანი საბაგი \ n " "ენების გუნდი:არაბული <[ელფოსტა დაცულია]<\ n " "Ენა:არ \n " "MIME- ვერსია:1.0\ n " "შინაარსი-ტიპი: ტექსტი/უბრალო;charset = UTF-8\ n " "შინაარსის გადაცემა-კოდირება:8 ბიტიანი\ n " #: myprogram: 48. msgstr "კეთილი იყოს თქვენი მობრძანება ჩემს სატესტო პროგრამაში!" msgstr "أهلًا بك إلى برنامجي الاختباري!" #: myprogramag: 52. msgstr "დააწკაპუნეთ ჩემზე ტერმინალის გასახსნელად" msgstr "اضغط عليّ لفتح الطرفية"
მეტი არაფერია გასაკეთებელი, უბრალოდ ჩაალაგე პროგრამა შემდეგი ბრძანების გამოყენებით:
$ debuild -us -uc.
ახლა შეეცადეთ დააინსტალიროთ ახალი შექმნილი პაკეტი შემდეგი ბრძანების გამოყენებით.
$ sudo dpkg -i myprogram_1.0_all.deb.
შეცვალეთ სისტემის ენა "ენის მხარდაჭერა”პროგრამა ან სხვა პროგრამის გამოყენება არაბული (ან ენაზე, რომელზეც თარგმნეთ თქვენი ფაილი):
არჩევის შემდეგ, თქვენი პროგრამა ითარგმნება არაბულ ენაზე.
აქ მთავრდება ჩვენი სერია PyGObject პროგრამირების შესახებ Linux დესკტოპისთვის, რა თქმა უნდა, ბევრი სხვა რამის სწავლა შეგიძლიათ ოფიციალური დოკუმენტაცია და პითონის GI API მითითება ..
რას ფიქრობთ სერიალზე? როგორ ფიქრობთ, სასარგებლოა? შეძელით თქვენი პირველი აპლიკაციის შექმნა ამ სერიის დაცვით? გაგვიზიარეთ თქვენი აზრები!