# Greek translation of gettext-examples
# Copyright (C) 2005 Free Software Foundation, Inc.
# Simos Xenitellis <simos74@gmx.net>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: gettext-examples 0.14.1\n"
"Report-Msgid-Bugs-To: bug-gettext@gnu.org\n"
"POT-Creation-Date: 2020-04-11 22:35+0200\n"
"PO-Revision-Date: 2005-01-06 18:50+0000\n"
"Last-Translator: Simos Xenitellis <simos74@gmx.net>\n"
"Language-Team: Greek <nls@tux.hellug.gr>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: KBabel 1.3.1\n"

#: hello-c/hello.c:30 hello-c-gnome/hello.c:46
#: hello-c-gnome3/hello.desktop.in.in:5 hello-c++/hello.cc:39
#: hello-c++-qt/hello.cc:45 hello-c++-kde/hellowindow.cc:42
#: hello-c++-gnome/hello.cc:50 hello-c++-wxwidgets/hello.cc:68
#: hello-objc/hello.m:30 hello-objc-gnustep/Hello.m:49
#: hello-objc-gnome/hello.m:47 hello-sh/hello.sh:14 hello-python/hello.py.in:12
#: hello-clisp/hello.lisp.in:11 hello-librep/hello.jl.in:12
#: hello-guile/hello.scm:15 hello-smalltalk/hello.st.in:31
#: hello-java/Hello.java:14 hello-java-awt/Hello.java:23
#: hello-java-swing/Hello.java:20 hello-java-qtjambi/Hello.java:27
#: hello-csharp/hello.cs:14 hello-csharp-forms/hello.cs:29
#: hello-gawk/hello.awk:11 hello-pascal/hello.hello_world
#: hello-ycp/hello.ycp:15 hello-tcl/hello.tcl:11 hello-tcl-tk/hello.tcl:13
#: hello-perl/hello-1.pl.in:17 hello-perl/hello-2.pl.in:12
#: hello-php/hello.php:12
msgid "Hello, world!"
msgstr "Γεια σου, κόσμε!"

#: hello-c/hello.c:31 hello-c-gnome/hello.c:51 hello-c++/hello.cc:40
#: hello-c++-gnome/hello.cc:55 hello-c++-wxwidgets/hello.cc:71
#: hello-objc/hello.m:31 hello-objc-gnustep/Hello.m:58
#: hello-objc-gnome/hello.m:52 hello-librep/hello.jl.in:14
#: hello-gawk/hello.awk:12 hello-pascal/hello.running_as hello-tcl/hello.tcl:12
#: hello-tcl-tk/hello.tcl:16 hello-perl/hello-1.pl.in:19 hello-php/hello.php:14
#, php-format
msgid "This program is running as process number %d."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας %d."

#: hello-c-gnome3/hello.c:79
#, fuzzy, c-format
msgid ""
"<big>Hello world!</big>\n"
"This program is running as process number <b>%d</b>."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας %d."

#: hello-c-gnome3/hello.c:84
msgid "<big><u>This is another text</u></big>"
msgstr ""

#: hello-c-gnome3/hello.c:86
msgid "<big><i>This is yet another text</i></big>"
msgstr ""

#: hello-c-gnome3/hello.desktop.in.in:4
msgid "Hello"
msgstr ""

#: hello-c-gnome3/hello.ui:6
msgid "Example Application"
msgstr ""

#: hello-c-gnome3/hello.ui:34
msgid "Update text"
msgstr ""

#: hello-c-gnome3/hello.gschema.xml:8
msgid "Use XML markup"
msgstr ""

#: hello-c-gnome3/hello.gschema.xml:9
msgid "Whether to use XML markup in the text."
msgstr ""

#: hello-c++-qt/hello.cc:52 hello-c++-kde/hellowindow.cc:49
#: hello-smalltalk/hello.st.in:32 hello-ycp/hello.ycp:19
#, ycp-format
msgid "This program is running as process number %1."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας %1."

#: hello-c++-kde/hello.cc:46
msgid "Hello example"
msgstr "Παράδειγμα χαιρετισμού"

#: hello-c++-kde/hello.cc:48
msgid "Hello world example"
msgstr "Παράδειγμα \"γεια σου κόσμε\""

#: hello-sh/hello.sh:17
#, sh-format
msgid "This program is running as process number $pid."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας $pid."

#: hello-python/hello.py.in:13
#, python-format
msgid "This program is running as process number %(pid)d."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας %(pid)d."

#: hello-clisp/hello.lisp.in:13 hello-guile/hello.scm:17
#, scheme-format
msgid "This program is running as process number ~D."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας ~D."

#: hello-java/Hello.java:18 hello-java-awt/Hello.java:28
#: hello-java-swing/Hello.java:25 hello-java-qtjambi/Hello.java:34
#: hello-csharp/hello.cs:17 hello-csharp-forms/hello.cs:36
#, csharp-format
msgid "This program is running as process number {0}."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας {0}."

#: hello-perl/hello-2.pl.in:14
#, perl-brace-format
msgid "This program is running as process number {pid}."
msgstr "Αυτό το πρόγραμμα εκτελείται με αριθμό διεργασίας {pid}."
