Ịsụgharị ngwa PyGObject n'asụsụ dị iche iche - Nkebi 5


Anyị na gị na-aga n'ihu na usoro mmemme PyGObject na ebe a na akụkụ 5th, anyị ga-amụta ka esi atụgharịa ngwa PyGObject anyị n'asụsụ dị iche iche. Ịsụgharị ngwa gị dị mkpa ma ọ bụrụ na ị ga-ebipụta ya maka ụwa, ọ ga-abụ enyi na enyi maka ndị ọrụ njedebe n'ihi na ọ bụghị onye ọ bụla na-aghọta Bekee.

Ka usoro ntụgharị asụsụ si arụ ọrụ

Anyị nwere ike ichikota usoro ịsụgharị mmemme ọ bụla n'okpuru desktọpụ Linux site na iji usoro ndị a:

  1. Wepụ eriri ndị a na-atụgharịgharị na faịlụ Python.
  2. Chekwaa eriri n'ime faịlụ .pot bụ usoro na-enye gị ohere ịtụgharị ya ma emechaa gaa na asụsụ ndị ọzọ.
  3. Malite ịtụgharị asụsụ eriri.
  4. Bupu eriri ọhụrụ atụgharịrị n'ime faịlụ .po nke a ga-eji na-akpaghị aka mgbe agbanwere asụsụ sistemụ.
  5. Tinye obere mgbanwe mmemme na faịlụ Python isi yana faịlụ .desktop.

Ma nke ahụ bụ ya! Mgbe ịmechara usoro ndị a, ngwa gị ga-adị njikere maka ojiji maka ndị ọrụ njedebe sitere na gburugburu ụwa (ga-. :-)

Nke mbụ, iji chekwaa oge, budata faịlụ ọrụ site na njikọ dị n'okpuru wee wepụ faịlụ ahụ na ndekọ ụlọ gị.

  1. https://copy.com/TjyZAaNgeQ6BB7yn

Mepee faịlụ \setup.py wee hụ mgbanwe ndị anyị mere:

# Here we imported the 'setup' module which allows us to install Python scripts to the local system beside performing some other tasks, you can find the documentation here: https://docs.python.org/2/distutils/apiref.html
from distutils.core import setup

# Those modules will help us in creating the translation files for the program automatically.
from subprocess import call
from glob import glob
from os.path import splitext, split

# DON'T FOTGET TO REPLACE 'myprogram' WITH THE NAME OF YOUR PROGRAM IN EVERY FILE IN THIS PROJECT.

data_files = [ ("lib/myprogram", ["ui.glade"]), # This is going to install the "ui.glade" file under the /usr/lib/myprogram path.
                     ("share/applications", ["myprogram.desktop"]) ] 

# This code does everything needed for creating the translation files, first it will look for all the .po files inside the po folder, then it will define the default path for where to install the translation files (.mo) on the local system, then it's going to create the directory on the local system for the translation files of our program and finally it's going to convert all the .po files into .mo files using the "msgfmt" command.
po_files = glob("po/*.po")
for po_file in po_files:
  lang = splitext(split(po_file)[1])[0]
  mo_path = "locale/{}/LC_MESSAGES/myprogram.mo".format(lang)
# Make locale directories
  call("mkdir -p locale/{}/LC_MESSAGES/".format(lang), shell=True)
# Generate mo files
  call("msgfmt {} -o {}".format(po_file, mo_path), shell=True)
  locales = map(lambda i: ('share/'+i, [i+'/myprogram.mo', ]), glob('locale/*/LC_MESSAGES'))

# Here, the installer will automatically add the .mo files to the data files to install them later.
  data_files.extend(locales)

setup(name = "myprogram", # Name of the program.
      version = "1.0", # Version of the program.
      description = "An easy-to-use web interface to create & share pastes easily", # You don't need any help here.
      author = "TecMint", # Nor here.
      author_email = "[email ",# Nor here :D
      url = "http://example.com", # If you have a website for you program.. put it here.
      license='GPLv3', # The license of the program.
      scripts=['myprogram'], # This is the name of the main Python script file, in our case it's "myprogram", it's the file that we added under the "myprogram" folder.

# Here you can choose where do you want to install your files on the local system, the "myprogram" file will be automatically installed in its correct place later, so you have only to choose where do you want to install the optional files that you shape with the Python script
      data_files=data_files) # And this is going to install the .desktop file under the /usr/share/applications folder, all the folder are automatically installed under the /usr folder in your root partition, you don't need to add "/usr/ to the path.

Mepee faịlụ \myprogram wee hụ mgbanwe mmemme anyị mere, a kọwara mgbanwe niile na nkọwa ndị a:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

## Replace your name and email.
# My Name <[email >

## Here you must add the license of the file, replace "MyProgram" with your program name.
# License:
#    MyProgram is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    MyProgram is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with MyProgram.  If not, see <http://www.gnu.org/licenses/>.

from gi.repository import Gtk 
import os, gettext, locale

## This is the programmatic change that you need to add to the Python file, just replace "myprogram" with the name of your program. The "locale" and "gettext" modules will take care about the rest of the operation.
locale.setlocale(locale.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): 
    ## When the user clicks on the first button, the terminal will be opened.
    os.system("x-terminal-emulator ")
  
  def closeprogram(self, button):
    Gtk.main_quit()
    
# Nothing new here.. We just imported the 'ui.glade' file. 
builder = Gtk.Builder() 
builder.add_from_file("/usr/lib/myprogram/ui.glade") 
builder.connect_signals(Handler()) 

label = builder.get_object("label1")
# Here's another small change, instead of setting the text to ("Welcome to my Test program!") we must add a "_" char before it in order to allow the responsible scripts about the translation process to recognize that it's a translatable string.
label.set_text(_("Welcome to my Test program !"))

button = builder.get_object("button2")
# And here's the same thing.. You must do this for all the texts in your program, elsewhere, they won't be translated.
button.set_label(_("Click on me to open the Terminal"))


window = builder.get_object("window1") 
window.connect("delete-event", Gtk.main_quit)
window.show_all() 
Gtk.main()

Ugbu a. Ka anyị malite ịtụgharị asụsụ mmemme anyị. Buru ụzọ mepụta faịlụ .pot (faịlụ nwere eriri niile enwere ike ịtụgharị na mmemme) ka ị
nwere ike ịmalite ịtụgharị asụsụ site na iji iwu a:

$ cd myprogram
$ xgettext --language=Python --keyword=_ -o po/myprogram.pot myprogram

Nke a na-aga imepụta faịlụ \myprogram.pot n'ime nchekwa \po na folda isi ọrụ nke nwere koodu a:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <[email >, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-29 21:28+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <[email >\n"
"Language-Team: LANGUAGE <[email >\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: myprogram:48
msgid "Welcome to my Test program !"
msgstr ""

#: myprogram:52
msgid "Click on me to open the Terminal"
msgstr ""

Ugbu a ka ịmalite ịtụgharị asụsụ eriri. >po” nchekwa, dịka ọmụmaatụ, ọ bụrụ na ịchọrọ ịtụgharị mmemme gị ka ọ bụrụ Arabic, mepụta faịlụ akpọrọ \ar.po wee detuo ihe dị n'ime ya. site na faịlụ \myprogram.pot gaa na ya.

Ọ bụrụ na ịchọrọ ịtụgharị mmemme gị ka ọ bụrụ German, mepụta faịlụ \de.po wee detuo ọdịnaya ya na \myprogram.pot >” faịlụ na ya.. ya mere, ị ga-emepụtarịrị faịlụ maka asụsụ ọ bụla ịchọrọ ịtụgharị asụsụ mmemme gị na ya.

Ugbu a, anyị ga-arụ ọrụ na faịlụ \ar.po, detuo ihe dị n'ime ya na faịlụ \myprogram.pot wee tinye ya n'ime faịlụ ahụ wee dezie ya. ndị a:

  1. ISI Nkọwa: ị nwere ike tinye aha ọrụ gị ebe a ma ọ bụrụ na ịchọrọ.
  2. AFỌ ONYE Ngwugwu Nwebiisinka: dochie ya na afọ ị mepụtara ọrụ a.
  3. Ngwugwu: jiri aha ngwugwu dochie ya.
  4. Onye ode akwụkwọ mbụ <[email >, AFỌ: jiri ezigbo aha gị, email na afọ ị tụgharịrị asụsụ ahụ dochie nke a.
  5. Ngwugwu VERSION: dochie ya na ụdị ngwungwu sitere na faịlụ debian/control.
  6. YEAR-MO-DA HO:MI+ZONE: achọghị nkọwa, ị nwere ike ịgbanwe ya ka ọ bụrụ ụbọchị ọ bụla ịchọrọ.
  7. Aha zuru ezu <[email >: dochie ya aha gị na Email gị.
  8. Asụsụ- Otu: dochie ya na aha asụsụ ị na-atụgharị na ya, dịka ọmụmaatụ \Arabic ma ọ bụ \French
  9. Asụsụ: ebe a, ị ga-etinyerịrị koodu ISO-639-1 maka asụsụ ị na-atụgharị na ya, dịka ọmụmaatụ \ar, \fr, \de ..etc, ị nwere ike ịhụ ndepụta zuru oke ebe a.
  10. CHARSET: nzọụkwụ a dị mkpa, dochie eriri a na \UTF-8 (na-enweghị nhota okwu) nke na-akwado ọtụtụ asụsụ.

Ugbu a malite ịtụgharị asụsụ! Tinye ntụgharị asụsụ gị maka eriri ọ bụla ka ekwuru na \msgstr Chekwaa faịlụ wee pụọ. Faịlụ ntụgharị asụsụ dị mma maka
Asụsụ Arabic dịka ọmụmaatụ kwesịrị ịdị ka nke a:

# My Program
# Copyright (C) 2014
# This file is distributed under the same license as the myprogram package.
# Hanny Helal <[email <, 2014.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-29 21:28+0200\n"
"PO-Revision-Date: 2014-12-29 22:28+0200\n"
"Last-Translator: M.Hanny Sabbagh <hannysabbagh<@hotmail.com<\n"
"Language-Team: Arabic <[email <\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: myprogram:48
msgid "Welcome to my Test program !"
msgstr "أهلًا بك إلى برنامجي الاختباري!"

#: myprogram:52
msgid "Click on me to open the Terminal"
msgstr "اضغط عليّ لفتح الطرفية"

Ọ nweghị ihe ọzọ ị ga-eme, naanị kpochie mmemme ahụ site na iji iwu a:

$ debuild -us -uc

Ugbu a gbalịa ịwụnye ngwungwu emepụtara ọhụrụ site na iji iwu na-esonụ.

$ sudo dpkg -i myprogram_1.0_all.deb

Ma gbanwee asụsụ sistemụ site na iji mmemme \Asụsụ Nkwado ma ọ bụ jiri mmemme ọ bụla ọzọ gaa na Arabic (ma ọ bụ asụsụ ị tụgharịrị faịlụ gị na):

Mgbe ịhọrọchara, a ga-atụgharị asụsụ mmemme gị ka ọ bụrụ asụsụ Arabik.

Ebe a kwụsịrị usoro anyị gbasara mmemme PyGObject maka desktọpụ Linux, n'ezie enwere ọtụtụ ihe ndị ọzọ ị nwere ike ịmụta na ntụnye aka Python GI API..

Kedu ihe ị chere maka usoro ahụ? Ị hụrụ na ọ bara uru? Ị nwere ike ịmepụta ngwa mbụ gị site n'ịgbaso usoro a? Gwa anyị echiche gị!