Codebase list ktp-call-ui / 9d4e700
Imported Upstream version 0.4.0 George Kiagiadakis 11 years ago
116 changed file(s) with 19647 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 project(ktp-call-ui)
1
2 set(IS_KTP_INTERNAL_MODULE TRUE)
3
4 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
5
6 find_package(KDE4 REQUIRED)
7 find_package(TelepathyQt4 REQUIRED)
8 find_package(TelepathyQt4Farstream REQUIRED)
9 find_package(KTp REQUIRED)
10 find_package(QtGStreamer REQUIRED)
11 find_package(PkgConfig REQUIRED)
12
13 include_directories(
14 ${KDE4_INCLUDES}
15 ${TELEPATHY_QT4_INCLUDE_DIR}
16 ${KTP_INCLUDE_DIR}
17 ${QTGSTREAMER_INCLUDES}
18 )
19 add_definitions(
20 ${KDE4_DEFINITIONS}
21 ${QTGSTREAMER_DEFINITIONS}
22 )
23 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}")
24
25 add_subdirectory(libqtf)
26 add_subdirectory(libktpcall)
27 add_subdirectory(src)
28 find_package(Msgfmt REQUIRED)
29 find_package(Gettext REQUIRED)
30 add_subdirectory( po )
0 GNU GENERAL PUBLIC LICENSE
1 Version 2, June 1991
2
3 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
4 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5 Everyone is permitted to copy and distribute verbatim copies
6 of this license document, but changing it is not allowed.
7
8 Preamble
9
10 The licenses for most software are designed to take away your
11 freedom to share and change it. By contrast, the GNU General Public
12 License is intended to guarantee your freedom to share and change free
13 software--to make sure the software is free for all its users. This
14 General Public License applies to most of the Free Software
15 Foundation's software and to any other program whose authors commit to
16 using it. (Some other Free Software Foundation software is covered by
17 the GNU Lesser General Public License instead.) You can apply it to
18 your programs, too.
19
20 When we speak of free software, we are referring to freedom, not
21 price. Our General Public Licenses are designed to make sure that you
22 have the freedom to distribute copies of free software (and charge for
23 this service if you wish), that you receive source code or can get it
24 if you want it, that you can change the software or use pieces of it
25 in new free programs; and that you know you can do these things.
26
27 To protect your rights, we need to make restrictions that forbid
28 anyone to deny you these rights or to ask you to surrender the rights.
29 These restrictions translate to certain responsibilities for you if you
30 distribute copies of the software, or if you modify it.
31
32 For example, if you distribute copies of such a program, whether
33 gratis or for a fee, you must give the recipients all the rights that
34 you have. You must make sure that they, too, receive or can get the
35 source code. And you must show them these terms so they know their
36 rights.
37
38 We protect your rights with two steps: (1) copyright the software, and
39 (2) offer you this license which gives you legal permission to copy,
40 distribute and/or modify the software.
41
42 Also, for each author's protection and ours, we want to make certain
43 that everyone understands that there is no warranty for this free
44 software. If the software is modified by someone else and passed on, we
45 want its recipients to know that what they have is not the original, so
46 that any problems introduced by others will not reflect on the original
47 authors' reputations.
48
49 Finally, any free program is threatened constantly by software
50 patents. We wish to avoid the danger that redistributors of a free
51 program will individually obtain patent licenses, in effect making the
52 program proprietary. To prevent this, we have made it clear that any
53 patent must be licensed for everyone's free use or not licensed at all.
54
55 The precise terms and conditions for copying, distribution and
56 modification follow.
57
58 GNU GENERAL PUBLIC LICENSE
59 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
60
61 0. This License applies to any program or other work which contains
62 a notice placed by the copyright holder saying it may be distributed
63 under the terms of this General Public License. The "Program", below,
64 refers to any such program or work, and a "work based on the Program"
65 means either the Program or any derivative work under copyright law:
66 that is to say, a work containing the Program or a portion of it,
67 either verbatim or with modifications and/or translated into another
68 language. (Hereinafter, translation is included without limitation in
69 the term "modification".) Each licensee is addressed as "you".
70
71 Activities other than copying, distribution and modification are not
72 covered by this License; they are outside its scope. The act of
73 running the Program is not restricted, and the output from the Program
74 is covered only if its contents constitute a work based on the
75 Program (independent of having been made by running the Program).
76 Whether that is true depends on what the Program does.
77
78 1. You may copy and distribute verbatim copies of the Program's
79 source code as you receive it, in any medium, provided that you
80 conspicuously and appropriately publish on each copy an appropriate
81 copyright notice and disclaimer of warranty; keep intact all the
82 notices that refer to this License and to the absence of any warranty;
83 and give any other recipients of the Program a copy of this License
84 along with the Program.
85
86 You may charge a fee for the physical act of transferring a copy, and
87 you may at your option offer warranty protection in exchange for a fee.
88
89 2. You may modify your copy or copies of the Program or any portion
90 of it, thus forming a work based on the Program, and copy and
91 distribute such modifications or work under the terms of Section 1
92 above, provided that you also meet all of these conditions:
93
94 a) You must cause the modified files to carry prominent notices
95 stating that you changed the files and the date of any change.
96
97 b) You must cause any work that you distribute or publish, that in
98 whole or in part contains or is derived from the Program or any
99 part thereof, to be licensed as a whole at no charge to all third
100 parties under the terms of this License.
101
102 c) If the modified program normally reads commands interactively
103 when run, you must cause it, when started running for such
104 interactive use in the most ordinary way, to print or display an
105 announcement including an appropriate copyright notice and a
106 notice that there is no warranty (or else, saying that you provide
107 a warranty) and that users may redistribute the program under
108 these conditions, and telling the user how to view a copy of this
109 License. (Exception: if the Program itself is interactive but
110 does not normally print such an announcement, your work based on
111 the Program is not required to print an announcement.)
112
113 These requirements apply to the modified work as a whole. If
114 identifiable sections of that work are not derived from the Program,
115 and can be reasonably considered independent and separate works in
116 themselves, then this License, and its terms, do not apply to those
117 sections when you distribute them as separate works. But when you
118 distribute the same sections as part of a whole which is a work based
119 on the Program, the distribution of the whole must be on the terms of
120 this License, whose permissions for other licensees extend to the
121 entire whole, and thus to each and every part regardless of who wrote it.
122
123 Thus, it is not the intent of this section to claim rights or contest
124 your rights to work written entirely by you; rather, the intent is to
125 exercise the right to control the distribution of derivative or
126 collective works based on the Program.
127
128 In addition, mere aggregation of another work not based on the Program
129 with the Program (or with a work based on the Program) on a volume of
130 a storage or distribution medium does not bring the other work under
131 the scope of this License.
132
133 3. You may copy and distribute the Program (or a work based on it,
134 under Section 2) in object code or executable form under the terms of
135 Sections 1 and 2 above provided that you also do one of the following:
136
137 a) Accompany it with the complete corresponding machine-readable
138 source code, which must be distributed under the terms of Sections
139 1 and 2 above on a medium customarily used for software interchange; or,
140
141 b) Accompany it with a written offer, valid for at least three
142 years, to give any third party, for a charge no more than your
143 cost of physically performing source distribution, a complete
144 machine-readable copy of the corresponding source code, to be
145 distributed under the terms of Sections 1 and 2 above on a medium
146 customarily used for software interchange; or,
147
148 c) Accompany it with the information you received as to the offer
149 to distribute corresponding source code. (This alternative is
150 allowed only for noncommercial distribution and only if you
151 received the program in object code or executable form with such
152 an offer, in accord with Subsection b above.)
153
154 The source code for a work means the preferred form of the work for
155 making modifications to it. For an executable work, complete source
156 code means all the source code for all modules it contains, plus any
157 associated interface definition files, plus the scripts used to
158 control compilation and installation of the executable. However, as a
159 special exception, the source code distributed need not include
160 anything that is normally distributed (in either source or binary
161 form) with the major components (compiler, kernel, and so on) of the
162 operating system on which the executable runs, unless that component
163 itself accompanies the executable.
164
165 If distribution of executable or object code is made by offering
166 access to copy from a designated place, then offering equivalent
167 access to copy the source code from the same place counts as
168 distribution of the source code, even though third parties are not
169 compelled to copy the source along with the object code.
170
171 4. You may not copy, modify, sublicense, or distribute the Program
172 except as expressly provided under this License. Any attempt
173 otherwise to copy, modify, sublicense or distribute the Program is
174 void, and will automatically terminate your rights under this License.
175 However, parties who have received copies, or rights, from you under
176 this License will not have their licenses terminated so long as such
177 parties remain in full compliance.
178
179 5. You are not required to accept this License, since you have not
180 signed it. However, nothing else grants you permission to modify or
181 distribute the Program or its derivative works. These actions are
182 prohibited by law if you do not accept this License. Therefore, by
183 modifying or distributing the Program (or any work based on the
184 Program), you indicate your acceptance of this License to do so, and
185 all its terms and conditions for copying, distributing or modifying
186 the Program or works based on it.
187
188 6. Each time you redistribute the Program (or any work based on the
189 Program), the recipient automatically receives a license from the
190 original licensor to copy, distribute or modify the Program subject to
191 these terms and conditions. You may not impose any further
192 restrictions on the recipients' exercise of the rights granted herein.
193 You are not responsible for enforcing compliance by third parties to
194 this License.
195
196 7. If, as a consequence of a court judgment or allegation of patent
197 infringement or for any other reason (not limited to patent issues),
198 conditions are imposed on you (whether by court order, agreement or
199 otherwise) that contradict the conditions of this License, they do not
200 excuse you from the conditions of this License. If you cannot
201 distribute so as to satisfy simultaneously your obligations under this
202 License and any other pertinent obligations, then as a consequence you
203 may not distribute the Program at all. For example, if a patent
204 license would not permit royalty-free redistribution of the Program by
205 all those who receive copies directly or indirectly through you, then
206 the only way you could satisfy both it and this License would be to
207 refrain entirely from distribution of the Program.
208
209 If any portion of this section is held invalid or unenforceable under
210 any particular circumstance, the balance of the section is intended to
211 apply and the section as a whole is intended to apply in other
212 circumstances.
213
214 It is not the purpose of this section to induce you to infringe any
215 patents or other property right claims or to contest validity of any
216 such claims; this section has the sole purpose of protecting the
217 integrity of the free software distribution system, which is
218 implemented by public license practices. Many people have made
219 generous contributions to the wide range of software distributed
220 through that system in reliance on consistent application of that
221 system; it is up to the author/donor to decide if he or she is willing
222 to distribute software through any other system and a licensee cannot
223 impose that choice.
224
225 This section is intended to make thoroughly clear what is believed to
226 be a consequence of the rest of this License.
227
228 8. If the distribution and/or use of the Program is restricted in
229 certain countries either by patents or by copyrighted interfaces, the
230 original copyright holder who places the Program under this License
231 may add an explicit geographical distribution limitation excluding
232 those countries, so that distribution is permitted only in or among
233 countries not thus excluded. In such case, this License incorporates
234 the limitation as if written in the body of this License.
235
236 9. The Free Software Foundation may publish revised and/or new versions
237 of the General Public License from time to time. Such new versions will
238 be similar in spirit to the present version, but may differ in detail to
239 address new problems or concerns.
240
241 Each version is given a distinguishing version number. If the Program
242 specifies a version number of this License which applies to it and "any
243 later version", you have the option of following the terms and conditions
244 either of that version or of any later version published by the Free
245 Software Foundation. If the Program does not specify a version number of
246 this License, you may choose any version ever published by the Free Software
247 Foundation.
248
249 10. If you wish to incorporate parts of the Program into other free
250 programs whose distribution conditions are different, write to the author
251 to ask for permission. For software which is copyrighted by the Free
252 Software Foundation, write to the Free Software Foundation; we sometimes
253 make exceptions for this. Our decision will be guided by the two goals
254 of preserving the free status of all derivatives of our free software and
255 of promoting the sharing and reuse of software generally.
256
257 NO WARRANTY
258
259 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
260 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
261 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
262 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
263 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
264 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
265 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
266 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
267 REPAIR OR CORRECTION.
268
269 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
270 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
271 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
272 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
273 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
274 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
275 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
276 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
277 POSSIBILITY OF SUCH DAMAGES.
278
279 END OF TERMS AND CONDITIONS
280
281 How to Apply These Terms to Your New Programs
282
283 If you develop a new program, and you want it to be of the greatest
284 possible use to the public, the best way to achieve this is to make it
285 free software which everyone can redistribute and change under these terms.
286
287 To do so, attach the following notices to the program. It is safest
288 to attach them to the start of each source file to most effectively
289 convey the exclusion of warranty; and each file should have at least
290 the "copyright" line and a pointer to where the full notice is found.
291
292 <one line to give the program's name and a brief idea of what it does.>
293 Copyright (C) <year> <name of author>
294
295 This program is free software; you can redistribute it and/or modify
296 it under the terms of the GNU General Public License as published by
297 the Free Software Foundation; either version 2 of the License, or
298 (at your option) any later version.
299
300 This program is distributed in the hope that it will be useful,
301 but WITHOUT ANY WARRANTY; without even the implied warranty of
302 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
303 GNU General Public License for more details.
304
305 You should have received a copy of the GNU General Public License along
306 with this program; if not, write to the Free Software Foundation, Inc.,
307 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
308
309 Also add information on how to contact you by electronic and paper mail.
310
311 If the program is interactive, make it output a short notice like this
312 when it starts in an interactive mode:
313
314 Gnomovision version 69, Copyright (C) year name of author
315 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
316 This is free software, and you are welcome to redistribute it
317 under certain conditions; type `show c' for details.
318
319 The hypothetical commands `show w' and `show c' should show the appropriate
320 parts of the General Public License. Of course, the commands you use may
321 be called something other than `show w' and `show c'; they could even be
322 mouse-clicks or menu items--whatever suits your program.
323
324 You should also get your employer (if you work as a programmer) or your
325 school, if any, to sign a "copyright disclaimer" for the program, if
326 necessary. Here is a sample; alter the names:
327
328 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
329 `Gnomovision' (which makes passes at compilers) written by James Hacker.
330
331 <signature of Ty Coon>, 1 April 1989
332 Ty Coon, President of Vice
333
334 This General Public License does not permit incorporating your program into
335 proprietary programs. If your program is a subroutine library, you may
336 consider it more useful to permit linking proprietary applications with the
337 library. If this is what you want to do, use the GNU Lesser General
338 Public License instead of this License.
0
1 GNU LESSER GENERAL PUBLIC LICENSE
2 Version 2.1, February 1999
3
4 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 [This is the first released version of the Lesser GPL. It also counts
10 as the successor of the GNU Library Public License, version 2, hence
11 the version number 2.1.]
12
13 Preamble
14
15 The licenses for most software are designed to take away your
16 freedom to share and change it. By contrast, the GNU General Public
17 Licenses are intended to guarantee your freedom to share and change
18 free software--to make sure the software is free for all its users.
19
20 This license, the Lesser General Public License, applies to some
21 specially designated software packages--typically libraries--of the
22 Free Software Foundation and other authors who decide to use it. You
23 can use it too, but we suggest you first think carefully about whether
24 this license or the ordinary General Public License is the better
25 strategy to use in any particular case, based on the explanations
26 below.
27
28 When we speak of free software, we are referring to freedom of use,
29 not price. Our General Public Licenses are designed to make sure that
30 you have the freedom to distribute copies of free software (and charge
31 for this service if you wish); that you receive source code or can get
32 it if you want it; that you can change the software and use pieces of
33 it in new free programs; and that you are informed that you can do
34 these things.
35
36 To protect your rights, we need to make restrictions that forbid
37 distributors to deny you these rights or to ask you to surrender these
38 rights. These restrictions translate to certain responsibilities for
39 you if you distribute copies of the library or if you modify it.
40
41 For example, if you distribute copies of the library, whether gratis
42 or for a fee, you must give the recipients all the rights that we gave
43 you. You must make sure that they, too, receive or can get the source
44 code. If you link other code with the library, you must provide
45 complete object files to the recipients, so that they can relink them
46 with the library after making changes to the library and recompiling
47 it. And you must show them these terms so they know their rights.
48
49 We protect your rights with a two-step method: (1) we copyright the
50 library, and (2) we offer you this license, which gives you legal
51 permission to copy, distribute and/or modify the library.
52
53 To protect each distributor, we want to make it very clear that
54 there is no warranty for the free library. Also, if the library is
55 modified by someone else and passed on, the recipients should know
56 that what they have is not the original version, so that the original
57 author's reputation will not be affected by problems that might be
58 introduced by others.
59
60 Finally, software patents pose a constant threat to the existence of
61 any free program. We wish to make sure that a company cannot
62 effectively restrict the users of a free program by obtaining a
63 restrictive license from a patent holder. Therefore, we insist that
64 any patent license obtained for a version of the library must be
65 consistent with the full freedom of use specified in this license.
66
67 Most GNU software, including some libraries, is covered by the
68 ordinary GNU General Public License. This license, the GNU Lesser
69 General Public License, applies to certain designated libraries, and
70 is quite different from the ordinary General Public License. We use
71 this license for certain libraries in order to permit linking those
72 libraries into non-free programs.
73
74 When a program is linked with a library, whether statically or using
75 a shared library, the combination of the two is legally speaking a
76 combined work, a derivative of the original library. The ordinary
77 General Public License therefore permits such linking only if the
78 entire combination fits its criteria of freedom. The Lesser General
79 Public License permits more lax criteria for linking other code with
80 the library.
81
82 We call this license the "Lesser" General Public License because it
83 does Less to protect the user's freedom than the ordinary General
84 Public License. It also provides other free software developers Less
85 of an advantage over competing non-free programs. These disadvantages
86 are the reason we use the ordinary General Public License for many
87 libraries. However, the Lesser license provides advantages in certain
88 special circumstances.
89
90 For example, on rare occasions, there may be a special need to
91 encourage the widest possible use of a certain library, so that it
92 becomes a de-facto standard. To achieve this, non-free programs must
93 be allowed to use the library. A more frequent case is that a free
94 library does the same job as widely used non-free libraries. In this
95 case, there is little to gain by limiting the free library to free
96 software only, so we use the Lesser General Public License.
97
98 In other cases, permission to use a particular library in non-free
99 programs enables a greater number of people to use a large body of
100 free software. For example, permission to use the GNU C Library in
101 non-free programs enables many more people to use the whole GNU
102 operating system, as well as its variant, the GNU/Linux operating
103 system.
104
105 Although the Lesser General Public License is Less protective of the
106 users' freedom, it does ensure that the user of a program that is
107 linked with the Library has the freedom and the wherewithal to run
108 that program using a modified version of the Library.
109
110 The precise terms and conditions for copying, distribution and
111 modification follow. Pay close attention to the difference between a
112 "work based on the library" and a "work that uses the library". The
113 former contains code derived from the library, whereas the latter must
114 be combined with the library in order to run.
115
116 GNU LESSER GENERAL PUBLIC LICENSE
117 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
118
119 0. This License Agreement applies to any software library or other
120 program which contains a notice placed by the copyright holder or
121 other authorized party saying it may be distributed under the terms of
122 this Lesser General Public License (also called "this License").
123 Each licensee is addressed as "you".
124
125 A "library" means a collection of software functions and/or data
126 prepared so as to be conveniently linked with application programs
127 (which use some of those functions and data) to form executables.
128
129 The "Library", below, refers to any such software library or work
130 which has been distributed under these terms. A "work based on the
131 Library" means either the Library or any derivative work under
132 copyright law: that is to say, a work containing the Library or a
133 portion of it, either verbatim or with modifications and/or translated
134 straightforwardly into another language. (Hereinafter, translation is
135 included without limitation in the term "modification".)
136
137 "Source code" for a work means the preferred form of the work for
138 making modifications to it. For a library, complete source code means
139 all the source code for all modules it contains, plus any associated
140 interface definition files, plus the scripts used to control
141 compilation and installation of the library.
142
143 Activities other than copying, distribution and modification are not
144 covered by this License; they are outside its scope. The act of
145 running a program using the Library is not restricted, and output from
146 such a program is covered only if its contents constitute a work based
147 on the Library (independent of the use of the Library in a tool for
148 writing it). Whether that is true depends on what the Library does
149 and what the program that uses the Library does.
150
151 1. You may copy and distribute verbatim copies of the Library's
152 complete source code as you receive it, in any medium, provided that
153 you conspicuously and appropriately publish on each copy an
154 appropriate copyright notice and disclaimer of warranty; keep intact
155 all the notices that refer to this License and to the absence of any
156 warranty; and distribute a copy of this License along with the
157 Library.
158
159 You may charge a fee for the physical act of transferring a copy,
160 and you may at your option offer warranty protection in exchange for a
161 fee.
162
163 2. You may modify your copy or copies of the Library or any portion
164 of it, thus forming a work based on the Library, and copy and
165 distribute such modifications or work under the terms of Section 1
166 above, provided that you also meet all of these conditions:
167
168 a) The modified work must itself be a software library.
169
170 b) You must cause the files modified to carry prominent notices
171 stating that you changed the files and the date of any change.
172
173 c) You must cause the whole of the work to be licensed at no
174 charge to all third parties under the terms of this License.
175
176 d) If a facility in the modified Library refers to a function or a
177 table of data to be supplied by an application program that uses
178 the facility, other than as an argument passed when the facility
179 is invoked, then you must make a good faith effort to ensure that,
180 in the event an application does not supply such function or
181 table, the facility still operates, and performs whatever part of
182 its purpose remains meaningful.
183
184 (For example, a function in a library to compute square roots has
185 a purpose that is entirely well-defined independent of the
186 application. Therefore, Subsection 2d requires that any
187 application-supplied function or table used by this function must
188 be optional: if the application does not supply it, the square
189 root function must still compute square roots.)
190
191 These requirements apply to the modified work as a whole. If
192 identifiable sections of that work are not derived from the Library,
193 and can be reasonably considered independent and separate works in
194 themselves, then this License, and its terms, do not apply to those
195 sections when you distribute them as separate works. But when you
196 distribute the same sections as part of a whole which is a work based
197 on the Library, the distribution of the whole must be on the terms of
198 this License, whose permissions for other licensees extend to the
199 entire whole, and thus to each and every part regardless of who wrote
200 it.
201
202 Thus, it is not the intent of this section to claim rights or contest
203 your rights to work written entirely by you; rather, the intent is to
204 exercise the right to control the distribution of derivative or
205 collective works based on the Library.
206
207 In addition, mere aggregation of another work not based on the Library
208 with the Library (or with a work based on the Library) on a volume of
209 a storage or distribution medium does not bring the other work under
210 the scope of this License.
211
212 3. You may opt to apply the terms of the ordinary GNU General Public
213 License instead of this License to a given copy of the Library. To do
214 this, you must alter all the notices that refer to this License, so
215 that they refer to the ordinary GNU General Public License, version 2,
216 instead of to this License. (If a newer version than version 2 of the
217 ordinary GNU General Public License has appeared, then you can specify
218 that version instead if you wish.) Do not make any other change in
219 these notices.
220
221 Once this change is made in a given copy, it is irreversible for
222 that copy, so the ordinary GNU General Public License applies to all
223 subsequent copies and derivative works made from that copy.
224
225 This option is useful when you wish to copy part of the code of
226 the Library into a program that is not a library.
227
228 4. You may copy and distribute the Library (or a portion or
229 derivative of it, under Section 2) in object code or executable form
230 under the terms of Sections 1 and 2 above provided that you accompany
231 it with the complete corresponding machine-readable source code, which
232 must be distributed under the terms of Sections 1 and 2 above on a
233 medium customarily used for software interchange.
234
235 If distribution of object code is made by offering access to copy
236 from a designated place, then offering equivalent access to copy the
237 source code from the same place satisfies the requirement to
238 distribute the source code, even though third parties are not
239 compelled to copy the source along with the object code.
240
241 5. A program that contains no derivative of any portion of the
242 Library, but is designed to work with the Library by being compiled or
243 linked with it, is called a "work that uses the Library". Such a
244 work, in isolation, is not a derivative work of the Library, and
245 therefore falls outside the scope of this License.
246
247 However, linking a "work that uses the Library" with the Library
248 creates an executable that is a derivative of the Library (because it
249 contains portions of the Library), rather than a "work that uses the
250 library". The executable is therefore covered by this License.
251 Section 6 states terms for distribution of such executables.
252
253 When a "work that uses the Library" uses material from a header file
254 that is part of the Library, the object code for the work may be a
255 derivative work of the Library even though the source code is not.
256 Whether this is true is especially significant if the work can be
257 linked without the Library, or if the work is itself a library. The
258 threshold for this to be true is not precisely defined by law.
259
260 If such an object file uses only numerical parameters, data
261 structure layouts and accessors, and small macros and small inline
262 functions (ten lines or less in length), then the use of the object
263 file is unrestricted, regardless of whether it is legally a derivative
264 work. (Executables containing this object code plus portions of the
265 Library will still fall under Section 6.)
266
267 Otherwise, if the work is a derivative of the Library, you may
268 distribute the object code for the work under the terms of Section 6.
269 Any executables containing that work also fall under Section 6,
270 whether or not they are linked directly with the Library itself.
271
272 6. As an exception to the Sections above, you may also combine or
273 link a "work that uses the Library" with the Library to produce a
274 work containing portions of the Library, and distribute that work
275 under terms of your choice, provided that the terms permit
276 modification of the work for the customer's own use and reverse
277 engineering for debugging such modifications.
278
279 You must give prominent notice with each copy of the work that the
280 Library is used in it and that the Library and its use are covered by
281 this License. You must supply a copy of this License. If the work
282 during execution displays copyright notices, you must include the
283 copyright notice for the Library among them, as well as a reference
284 directing the user to the copy of this License. Also, you must do one
285 of these things:
286
287 a) Accompany the work with the complete corresponding
288 machine-readable source code for the Library including whatever
289 changes were used in the work (which must be distributed under
290 Sections 1 and 2 above); and, if the work is an executable linked
291 with the Library, with the complete machine-readable "work that
292 uses the Library", as object code and/or source code, so that the
293 user can modify the Library and then relink to produce a modified
294 executable containing the modified Library. (It is understood
295 that the user who changes the contents of definitions files in the
296 Library will not necessarily be able to recompile the application
297 to use the modified definitions.)
298
299 b) Use a suitable shared library mechanism for linking with the
300 Library. A suitable mechanism is one that (1) uses at run time a
301 copy of the library already present on the user's computer system,
302 rather than copying library functions into the executable, and (2)
303 will operate properly with a modified version of the library, if
304 the user installs one, as long as the modified version is
305 interface-compatible with the version that the work was made with.
306
307 c) Accompany the work with a written offer, valid for at least
308 three years, to give the same user the materials specified in
309 Subsection 6a, above, for a charge no more than the cost of
310 performing this distribution.
311
312 d) If distribution of the work is made by offering access to copy
313 from a designated place, offer equivalent access to copy the above
314 specified materials from the same place.
315
316 e) Verify that the user has already received a copy of these
317 materials or that you have already sent this user a copy.
318
319 For an executable, the required form of the "work that uses the
320 Library" must include any data and utility programs needed for
321 reproducing the executable from it. However, as a special exception,
322 the materials to be distributed need not include anything that is
323 normally distributed (in either source or binary form) with the major
324 components (compiler, kernel, and so on) of the operating system on
325 which the executable runs, unless that component itself accompanies
326 the executable.
327
328 It may happen that this requirement contradicts the license
329 restrictions of other proprietary libraries that do not normally
330 accompany the operating system. Such a contradiction means you cannot
331 use both them and the Library together in an executable that you
332 distribute.
333
334 7. You may place library facilities that are a work based on the
335 Library side-by-side in a single library together with other library
336 facilities not covered by this License, and distribute such a combined
337 library, provided that the separate distribution of the work based on
338 the Library and of the other library facilities is otherwise
339 permitted, and provided that you do these two things:
340
341 a) Accompany the combined library with a copy of the same work
342 based on the Library, uncombined with any other library
343 facilities. This must be distributed under the terms of the
344 Sections above.
345
346 b) Give prominent notice with the combined library of the fact
347 that part of it is a work based on the Library, and explaining
348 where to find the accompanying uncombined form of the same work.
349
350 8. You may not copy, modify, sublicense, link with, or distribute
351 the Library except as expressly provided under this License. Any
352 attempt otherwise to copy, modify, sublicense, link with, or
353 distribute the Library is void, and will automatically terminate your
354 rights under this License. However, parties who have received copies,
355 or rights, from you under this License will not have their licenses
356 terminated so long as such parties remain in full compliance.
357
358 9. You are not required to accept this License, since you have not
359 signed it. However, nothing else grants you permission to modify or
360 distribute the Library or its derivative works. These actions are
361 prohibited by law if you do not accept this License. Therefore, by
362 modifying or distributing the Library (or any work based on the
363 Library), you indicate your acceptance of this License to do so, and
364 all its terms and conditions for copying, distributing or modifying
365 the Library or works based on it.
366
367 10. Each time you redistribute the Library (or any work based on the
368 Library), the recipient automatically receives a license from the
369 original licensor to copy, distribute, link with or modify the Library
370 subject to these terms and conditions. You may not impose any further
371 restrictions on the recipients' exercise of the rights granted herein.
372 You are not responsible for enforcing compliance by third parties with
373 this License.
374
375 11. If, as a consequence of a court judgment or allegation of patent
376 infringement or for any other reason (not limited to patent issues),
377 conditions are imposed on you (whether by court order, agreement or
378 otherwise) that contradict the conditions of this License, they do not
379 excuse you from the conditions of this License. If you cannot
380 distribute so as to satisfy simultaneously your obligations under this
381 License and any other pertinent obligations, then as a consequence you
382 may not distribute the Library at all. For example, if a patent
383 license would not permit royalty-free redistribution of the Library by
384 all those who receive copies directly or indirectly through you, then
385 the only way you could satisfy both it and this License would be to
386 refrain entirely from distribution of the Library.
387
388 If any portion of this section is held invalid or unenforceable under
389 any particular circumstance, the balance of the section is intended to
390 apply, and the section as a whole is intended to apply in other
391 circumstances.
392
393 It is not the purpose of this section to induce you to infringe any
394 patents or other property right claims or to contest validity of any
395 such claims; this section has the sole purpose of protecting the
396 integrity of the free software distribution system which is
397 implemented by public license practices. Many people have made
398 generous contributions to the wide range of software distributed
399 through that system in reliance on consistent application of that
400 system; it is up to the author/donor to decide if he or she is willing
401 to distribute software through any other system and a licensee cannot
402 impose that choice.
403
404 This section is intended to make thoroughly clear what is believed to
405 be a consequence of the rest of this License.
406
407 12. If the distribution and/or use of the Library is restricted in
408 certain countries either by patents or by copyrighted interfaces, the
409 original copyright holder who places the Library under this License
410 may add an explicit geographical distribution limitation excluding those
411 countries, so that distribution is permitted only in or among
412 countries not thus excluded. In such case, this License incorporates
413 the limitation as if written in the body of this License.
414
415 13. The Free Software Foundation may publish revised and/or new
416 versions of the Lesser General Public License from time to time.
417 Such new versions will be similar in spirit to the present version,
418 but may differ in detail to address new problems or concerns.
419
420 Each version is given a distinguishing version number. If the Library
421 specifies a version number of this License which applies to it and
422 "any later version", you have the option of following the terms and
423 conditions either of that version or of any later version published by
424 the Free Software Foundation. If the Library does not specify a
425 license version number, you may choose any version ever published by
426 the Free Software Foundation.
427
428 14. If you wish to incorporate parts of the Library into other free
429 programs whose distribution conditions are incompatible with these,
430 write to the author to ask for permission. For software which is
431 copyrighted by the Free Software Foundation, write to the Free
432 Software Foundation; we sometimes make exceptions for this. Our
433 decision will be guided by the two goals of preserving the free status
434 of all derivatives of our free software and of promoting the sharing
435 and reuse of software generally.
436
437 NO WARRANTY
438
439 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
440 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
441 EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
442 OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
443 KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
444 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
445 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
446 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
447 THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
448
449 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
450 WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
451 AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
452 FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
453 CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
454 LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
455 RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
456 FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
457 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
458 DAMAGES.
459
460 END OF TERMS AND CONDITIONS
461
462 How to Apply These Terms to Your New Libraries
463
464 If you develop a new library, and you want it to be of the greatest
465 possible use to the public, we recommend making it free software that
466 everyone can redistribute and change. You can do so by permitting
467 redistribution under these terms (or, alternatively, under the terms
468 of the ordinary General Public License).
469
470 To apply these terms, attach the following notices to the library.
471 It is safest to attach them to the start of each source file to most
472 effectively convey the exclusion of warranty; and each file should
473 have at least the "copyright" line and a pointer to where the full
474 notice is found.
475
476
477 <one line to give the library's name and a brief idea of what it does.>
478 Copyright (C) <year> <name of author>
479
480 This library is free software; you can redistribute it and/or
481 modify it under the terms of the GNU Lesser General Public
482 License as published by the Free Software Foundation; either
483 version 2.1 of the License, or (at your option) any later version.
484
485 This library is distributed in the hope that it will be useful,
486 but WITHOUT ANY WARRANTY; without even the implied warranty of
487 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
488 Lesser General Public License for more details.
489
490 You should have received a copy of the GNU Lesser General Public
491 License along with this library; if not, write to the Free Software
492 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
493
494 Also add information on how to contact you by electronic and paper mail.
495
496 You should also get your employer (if you work as a programmer) or
497 your school, if any, to sign a "copyright disclaimer" for the library,
498 if necessary. Here is a sample; alter the names:
499
500 Yoyodyne, Inc., hereby disclaims all copyright interest in the
501 library `Frob' (a library for tweaking knobs) written by James
502 Random Hacker.
503
504 <signature of Ty Coon>, 1 April 1990
505 Ty Coon, President of Vice
506
507 That's all there is to it!
508
509
0 #!bin/sh
1 $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp
2 $XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h` -o $podir/ktp-call-ui.pot
3 rm -f rc.cpp
0 0. About KCall
1 --------------
2
3 KCall is a GUI VoIP client software which uses the telepathy framework underneath.
4 You can find the latest version of KCall at the kde svn:
5 HTTP URL: http://websvn.kde.org/trunk/playground/network/kcall/
6 SVN URL: svn://anonsvn.kde.org/home/kde/trunk/playground/network/kcall/
7
8 1. Dependencies
9 ---------------
10
11 For compiling KCall, you will need the following development software:
12
13 - Qt developement headers and tools (version 4.5.0 or later)
14 - kdelibs developement headers and tools (version 4.3.74 or later)
15 - telepathy-qt4 0.1.8 or later with telepathy-qt4-farsight compiled (requires telepathy-farsight)
16 - telepathy-farsight
17 - GStreamer 0.10 (version 0.10.23 or later)
18 - GLib/GObject
19 - telepathy-glib headers (required by telepathy-farsight)
20 - libxml2 headers (required by gstreamer)
21
22 At runtime, you will also need the following:
23
24 - telepathy-mission-control (version 5.1.0 or later)
25 - telepathy-gabble
26 - gstreamer-plugins-base and gstreamer-plugins-good (also recommended are gstreamer-plugins-bad)
27 - optionally, telepathy-accounts-kcm, for configuring accounts
28 (svn://anonsvn.kde.org/home/kde/trunk/playground/network/telepathy-accounts-kcm)
29
30 2. Compilation
31 --------------
32
33 KCall uses cmake as its build system, like the rest of KDE.
34 If you haven't used cmake in the past, here is a simple usage example:
35
36 $ cd path/to/kcall/source
37 $ mkdir build
38 $ cd build
39 $ cmake -DCMAKE_INSTALL_PREFIX=/path/to/installation/prefix ..
40 $ make
41 $ sudo make install
42
43 3. Explanation of the various executables
44 -----------------------------------------
45
46 In the telepathy framework, every part of an IM/VoIP client is split into several processes.
47 Here I will explain which of those processes need to be running to use KCall and what each one does:
48
49 - telepathy-gabble: This is the jabber connection manager that will handle the network
50 communication with the jabber server and channel negotiation with other users.
51 Normally, it is auto-launched when you set your jabber account online,
52 so there is no need to worry about it.
53 - mission-control-5: This process implements the account manager and channel dispatcher. This must
54 be running in order to do anything with KCall. Normally this should be shipped
55 with a dbus .service file, so that it is autolaunched, however I have noticed
56 that this is not the case (yet). So, you should always launch this in the
57 background before starting KCall.
58 - kcall: This process implements the main window of KCall (the contact list). This is
59 just an interface to be able to put your accounts online/offline and start calls.
60 Note that this is not required to be running in order to receive calls. If
61 your account is online, you can receive calls without having any frontend running.
62 Only mission-control-5 is required to be running for this.
63 - kcall_handler: This process is the call handler. It shows a window for every call that is going
64 on and handles all the media streaming internally, using gstreamer and
65 telepathy-farsight. This process comes with a dbus .service file, so it should
66 be launched automatically when a call happens. However, if you install it in a
67 non-standard path, dbus may not be able to find the .service file, so you will
68 have to launch this process before starting or receiving a call. Also note that
69 this process quits when a call has finished, so you will have to restart it
70 in this case. If this process is not running or cannot be launched through
71 dbus service activation, you will not be able to make calls.
72 - kcall_approver: This is the standard approver of kcall. When you receive an incoming call,
73 kcall_approver will be launched and will show a KNotification with options to
74 answer/reject the call. As with kcall_handler, this process comes with a .service
75 file and should be autolaunched. However, if you install it in a non-standard path,
76 you may have to launch this manually in order to have an approver. Note that if
77 an approver is not available, the call will be auto-accepted and passed to the
78 handler.
79
80 4. Configuring accounts
81 -----------------------
82
83 KCall is currently known to work only with Jabber (with telepathy-gabble).
84 SIP (with telepathy-sofiasip) also works, but it has many issues; for example, you can't make
85 calls to others, you can only answer calls. So, to use kcall you probably need a jabber account.
86 Note that gtalk/gmail accounts are also jabber accounts.
87
88 To configure your jabber account, first you need to install the telepathy-accounts-kcm.
89 Then follow these steps:
90 - Launch telepathy-mission-control-5 in the background
91 - Launch kcall
92 - Go to Settings->Configure KCall->Instant Messaging and VoIP Accounts
93 - Click on "Add Account"
94 - Select "Jabber/XMPP/Google Talk" and click next
95 - Enter your account information and click finish
96
97 5. Running
98 ----------
99
100 When you open KCall you will see all your accounts in the contact list.
101 There are two ways to get accounts online. Either click on the master connect button, which
102 will attempt to put all the accounts online, or right click on an account and set its status
103 from the right click menu. Note that not all statuses are available on all protocols, so if you
104 request a status that is not available, the closest available status will be used.
105
106 Once an account is online, all the known contacts for it will be shown in the second level of
107 the tree, under the account. To call a contact, right click on it and select voice or video call.
108
109 You can also call contacts directly from the second tab of KCall's main window. This is useful
110 if you want to call a person that is not in your contact list. To call a contact using this method,
111 you will have to type the identifier of that contact (ex. "foobar@jabber.org"), select the account
112 through which the call should be made and click on one of the buttons below, depending on whether
113 you want an audio-only or audio/video call.
114
115 6. Known bugs
116 -------------
117
118 1. Sometimes video is not sent to the other side, although KCall is actually sending it. This
119 might be a bug in telepathy-farsight.
120 2. Sometimes the video widgets stuck, showing a still image and when the call finishes,
121 kcall_handler deadlocks.
122
123
124 ---
125 George Kiagiadakis <kiagiadakis.george@gmail.com>
126 Last updated: 9 November 2009
0 Redistribution and use in source and binary forms, with or without
1 modification, are permitted provided that the following conditions
2 are met:
3
4 1. Redistributions of source code must retain the copyright
5 notice, this list of conditions and the following disclaimer.
6 2. Redistributions in binary form must reproduce the copyright
7 notice, this list of conditions and the following disclaimer in the
8 documentation and/or other materials provided with the distribution.
9 3. The name of the author may not be used to endorse or promote products
10 derived from this software without specific prior written permission.
11
12 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
13 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
14 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
15 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
16 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
21 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0 # Try to find the KTp library
1 # KTP_FOUND
2 # KTP_INCLUDE_DIR
3 # KTP_LIBRARIES
4 # KTP_MODELS_LIBRARIES
5 # KTP_WIDGETS_LIBRARIES
6
7 # Copyright (c) 2011, Dario Freddi <drf@kde.org>
8 #
9 # Redistribution and use is allowed according to the terms of the BSD license.
10 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
11
12 if (NOT IS_KTP_INTERNAL_MODULE)
13 message (FATAL_ERROR "KTp can be used just from internal components at this time")
14 endif (NOT IS_KTP_INTERNAL_MODULE)
15
16 SET (KTP_FIND_REQUIRED ${KTp_FIND_REQUIRED})
17 if (KTP_INCLUDE_DIRS AND KTP_LIBRARIES)
18 # Already in cache, be silent
19 set(KTP_FIND_QUIETLY TRUE)
20 endif (KTP_INCLUDE_DIRS AND KTP_LIBRARIES)
21
22 find_path(KTP_INCLUDE_DIR
23 NAMES KTp/presence.h
24 PATHS ${KDE4_INCLUDE_DIR}
25 )
26
27 find_library(KTP_LIBRARIES NAMES ktpcommoninternalsprivate )
28 find_library(KTP_MODELS_LIBRARIES NAMES ktpmodelsprivate )
29 find_library(KTP_WIDGETS_LIBRARIES NAMES ktpwidgetsprivate )
30
31 include(FindPackageHandleStandardArgs)
32 FIND_PACKAGE_HANDLE_STANDARD_ARGS(KTp DEFAULT_MSG
33 KTP_LIBRARIES
34 KTP_MODELS_LIBRARIES
35 KTP_INCLUDE_DIR)
36
37 mark_as_advanced(KTP_INCLUDE_DIRS KTP_LIBRARIES)
0 include_directories(${CMAKE_CURRENT_BINARY_DIR})
1
2 #####
3
4 set(libktpcall_SRCS
5 call-channel-handler.cpp
6 call-content-handler.cpp
7 volume-controller.cpp
8
9 private/source-controllers.cpp
10 private/sink-controllers.cpp
11 private/sink-managers.cpp
12 private/device-element-factory.cpp
13 private/phonon-integration.cpp
14 private/input-control-bin.cpp
15 private/video-sink-bin.cpp
16 )
17
18 kde4_add_library(ktpcall STATIC ${libktpcall_SRCS})
19 target_link_libraries(ktpcall
20 ${KDE4_KDECORE_LIBS}
21 ${QT_QTDBUS_LIBRARY}
22 ${QTGSTREAMER_LIBRARIES}
23 ${TELEPATHY_QT4_LIBRARIES}
24 qtf
25 )
26
27 #####
28
29 add_subdirectory(tests)
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "call-channel-handler.h"
18 #include "call-content-handler_p.h"
19 #include "../libqtf/qtf.h"
20 #include <QGlib/Error>
21 #include <QGlib/Connect>
22 #include <QGst/Init>
23 #include <QGst/Bus>
24 #include <KDebug>
25
26 //BEGIN CallChannelHandlerPrivate
27
28 class CallChannelHandlerPrivate : public QObject
29 {
30 Q_OBJECT
31 public:
32 CallChannelHandlerPrivate(const Tp::CallChannelPtr & channel, CallChannelHandler *qq);
33
34 private Q_SLOTS:
35 void init();
36 void onPendingTfChannelFinished(Tp::PendingOperation *op);
37 void onCallContentHandlerReady(const QTf::ContentPtr & tfContent,
38 CallContentHandler *contentHandler);
39 void onCallChannelInvalidated();
40
41 private:
42 void onTfChannelClosed();
43 void onContentAdded(const QTf::ContentPtr & tfContent);
44 void onContentRemoved(const QTf::ContentPtr & tfContent);
45 void onFsConferenceAdded(const QGst::ElementPtr & conference);
46 void onFsConferenceRemoved(const QGst::ElementPtr & conference);
47 void onBusMessage(const QGst::MessagePtr & message);
48
49 private:
50 CallChannelHandler * const q;
51
52 QGst::PipelinePtr m_pipeline;
53 QTf::ChannelPtr m_tfChannel;
54 uint m_channelClosedCounter;
55 QList<QGlib::ObjectPtr> m_fsElementAddedNotifiers;
56
57 public:
58 Tp::CallChannelPtr m_callChannel;
59 QHash<QTf::ContentPtr, CallContentHandler*> m_contents;
60 };
61
62 CallChannelHandlerPrivate::CallChannelHandlerPrivate(const Tp::CallChannelPtr & channel,
63 CallChannelHandler *qq)
64 : QObject(),
65 q(qq),
66 m_channelClosedCounter(0),
67 m_callChannel(channel)
68 {
69 connect(m_callChannel.data(), SIGNAL(invalidated (Tp::DBusProxy*,QString,QString)),
70 SLOT(onCallChannelInvalidated()));
71
72 QTimer::singleShot(0, this, SLOT(init()));
73 }
74
75 void CallChannelHandlerPrivate::init()
76 {
77 try {
78 QGst::init();
79 QTf::init();
80 } catch (const QGlib::Error & error) {
81 kError() << error;
82 m_callChannel->hangup(Tp::CallStateChangeReasonInternalError,
83 TP_QT_ERROR_MEDIA_STREAMING_ERROR,
84 error.message());
85
86 return;
87 }
88
89 QTf::PendingChannel *pendingChannel = new QTf::PendingChannel(m_callChannel);
90 connect(pendingChannel, SIGNAL(finished(Tp::PendingOperation*)),
91 this, SLOT(onPendingTfChannelFinished(Tp::PendingOperation*)));
92 }
93
94 void CallChannelHandlerPrivate::onPendingTfChannelFinished(Tp::PendingOperation *op)
95 {
96 if (op->isError()) {
97 kError() << op->errorMessage();
98 m_callChannel->hangup(Tp::CallStateChangeReasonInternalError,
99 TP_QT_ERROR_MEDIA_STREAMING_ERROR,
100 op->errorMessage());
101 return;
102 }
103
104 kDebug() << "TfChannel ready";
105 m_tfChannel = qobject_cast<QTf::PendingChannel*>(op)->channel();
106
107 m_pipeline = QGst::Pipeline::create();
108 m_pipeline->setState(QGst::StatePlaying);
109
110 m_pipeline->bus()->addSignalWatch();
111 QGlib::connect(m_pipeline->bus(), "message", this, &CallChannelHandlerPrivate::onBusMessage);
112
113 QGlib::connect(m_tfChannel, "closed",
114 this, &CallChannelHandlerPrivate::onTfChannelClosed);
115 QGlib::connect(m_tfChannel, "content-added",
116 this, &CallChannelHandlerPrivate::onContentAdded);
117 QGlib::connect(m_tfChannel, "content-removed",
118 this, &CallChannelHandlerPrivate::onContentRemoved);
119 QGlib::connect(m_tfChannel, "fs-conference-added",
120 this, &CallChannelHandlerPrivate::onFsConferenceAdded);
121 QGlib::connect(m_tfChannel, "fs-conference-removed",
122 this, &CallChannelHandlerPrivate::onFsConferenceRemoved);
123 }
124
125 void CallChannelHandlerPrivate::onCallChannelInvalidated()
126 {
127 kDebug() << "Tp::Channel invalidated";
128
129 if (++m_channelClosedCounter == 2) {
130 kDebug() << "emit channelClosed()";
131 Q_EMIT q->channelClosed();
132 }
133 }
134
135 void CallChannelHandlerPrivate::onTfChannelClosed()
136 {
137 kDebug() << "TfChannel closed";
138
139 Q_ASSERT(m_pipeline);
140 m_pipeline->bus()->removeSignalWatch();
141 m_pipeline->setState(QGst::StateNull);
142 m_fsElementAddedNotifiers.clear();
143
144 if (++m_channelClosedCounter == 2) {
145 kDebug() << "emit channelClosed()";
146 Q_EMIT q->channelClosed();
147 }
148 }
149
150 void CallChannelHandlerPrivate::onContentAdded(const QTf::ContentPtr & tfContent)
151 {
152 kDebug() << "TfContent added. media-type:" << tfContent->property("media-type").toInt();
153
154 connect(new PendingCallContentHandler(m_callChannel, tfContent, m_pipeline, q),
155 SIGNAL(ready(QTf::ContentPtr,CallContentHandler*)),
156 SLOT(onCallContentHandlerReady(QTf::ContentPtr,CallContentHandler*)));
157 }
158
159 void CallChannelHandlerPrivate::onCallContentHandlerReady(const QTf::ContentPtr & tfContent,
160 CallContentHandler *contentHandler)
161 {
162 kDebug() << "CallContentHandler ready";
163 m_contents.insert(tfContent, contentHandler);
164 Q_EMIT q->contentAdded(contentHandler);
165 }
166
167 void CallChannelHandlerPrivate::onContentRemoved(const QTf::ContentPtr & tfContent)
168 {
169 kDebug() << "TfContent removed. media-type:" << tfContent->property("media-type").toInt();
170
171 CallContentHandler *contentHandler = m_contents.take(tfContent);
172 Q_EMIT q->contentRemoved(contentHandler);
173 delete contentHandler;
174 }
175
176 void CallChannelHandlerPrivate::onFsConferenceAdded(const QGst::ElementPtr & conference)
177 {
178 kDebug() << "Adding fsconference in the pipeline";
179 m_fsElementAddedNotifiers.append(QTf::loadFsElementAddedNotifier(conference, m_pipeline));
180 m_pipeline->add(conference);
181 conference->syncStateWithParent();
182 }
183
184 void CallChannelHandlerPrivate::onFsConferenceRemoved(const QGst::ElementPtr & conference)
185 {
186 kDebug() << "Removing fsconference from the pipeline";
187 m_pipeline->remove(conference);
188 conference->setState(QGst::StateNull);
189 }
190
191 void CallChannelHandlerPrivate::onBusMessage(const QGst::MessagePtr & message)
192 {
193 m_tfChannel->processBusMessage(message);
194 }
195
196 //END CallChannelHandlerPrivate
197 //BEGIN CallChannelHandler
198
199 CallChannelHandler::CallChannelHandler(const Tp::CallChannelPtr & channel, QObject *parent)
200 : QObject(parent), d(new CallChannelHandlerPrivate(channel, this))
201 {
202 }
203
204 CallChannelHandler::~CallChannelHandler()
205 {
206 delete d;
207 }
208
209 QList<CallContentHandler*> CallChannelHandler::contents() const
210 {
211 return d->m_contents.values();
212 }
213
214 void CallChannelHandler::shutdown()
215 {
216 //This will cause invalidated() to be emited on the 2 proxies (Tp::Channel & TpChannel)
217 //we catch the tp-qt one in onCallChannelInvalidated() and the tp-glib one
218 //in onTfChannelClosed() through TfChannel, which is closed when the TpChannel
219 //is invalidated. When both are invalidated, we emit the channelClosed() signal.
220 d->m_callChannel->requestClose();
221 }
222
223 //END CallChannelHandler
224
225 #include "call-channel-handler.moc"
226 #include "moc_call-channel-handler.cpp"
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef CALL_CHANNEL_HANDLER_H
18 #define CALL_CHANNEL_HANDLER_H
19
20 #include "call-content-handler.h"
21 #include <TelepathyQt/CallChannel>
22
23 class CallChannelHandlerPrivate;
24
25 /** This class handles streaming in a telepathy Call channel.
26 * To begin streaming, construct an instance of this class and use the
27 * CallContentHandler objects that this class creates to control streaming
28 * for the individual contents of the call.
29 */
30 class CallChannelHandler : public QObject
31 {
32 Q_OBJECT
33 public:
34 explicit CallChannelHandler(const Tp::CallChannelPtr & channel, QObject *parent = 0);
35 virtual ~CallChannelHandler();
36
37 QList<CallContentHandler*> contents() const;
38
39 public Q_SLOTS:
40 /**
41 * This method closes the channel and stops the streaming engine.
42 * The operation is asyncrhonous. When finished, the channelClosed()
43 * signal is emited. You should call this method AND wait for
44 * channelClosed() before destroying this object.
45 */
46 void shutdown();
47
48 Q_SIGNALS:
49 void contentAdded(CallContentHandler *content);
50 void contentRemoved(CallContentHandler *content);
51 void channelClosed();
52
53 private:
54 friend class CallChannelHandlerPrivate;
55 CallChannelHandlerPrivate *const d;
56 };
57
58 #endif // CALL_CHANNEL_HANDLER_H
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "call-content-handler_p.h"
18 #include <TelepathyQt/ReferencedHandles>
19 #include <QGlib/Connect>
20 #include <QGst/Pad>
21 #include <QGst/ElementFactory>
22 #include <KDebug>
23
24 //BEGIN PendingCallContentHandler
25
26 PendingCallContentHandler::PendingCallContentHandler(const Tp::CallChannelPtr & callChannel,
27 const QTf::ContentPtr & tfContent,
28 const QGst::PipelinePtr & pipeline,
29 QObject *parent)
30 : QObject(parent)
31 {
32 switch(tfContent->property("media-type").toInt()) {
33 case Tp::MediaStreamTypeAudio:
34 m_contentHandler = new AudioContentHandler(parent);
35 break;
36 case Tp::MediaStreamTypeVideo:
37 m_contentHandler = new VideoContentHandler(parent);
38 break;
39 default:
40 Q_ASSERT(false);
41 }
42
43 m_contentHandler->d->init(tfContent, pipeline);
44
45 m_callChannel = callChannel;
46 m_tfContent = tfContent;
47 QTimer::singleShot(0, this, SLOT(findCallContent()));
48 }
49
50 void PendingCallContentHandler::findCallContent()
51 {
52 Tp::CallContents callContents = m_callChannel->contents();
53 Q_FOREACH (const Tp::CallContentPtr & callContent, callContents) {
54 if (callContent->objectPath() == m_tfContent->property("object-path").toString()) {
55 m_contentHandler->d->setCallContent(callContent);
56 Q_EMIT ready(m_tfContent, m_contentHandler);
57 deleteLater();
58 return;
59 }
60 }
61
62 kDebug() << "CallContent not found. Waiting for tp-qt4 to synchronize with d-bus.";
63 connect(m_callChannel.data(), SIGNAL(contentAdded(Tp::CallContentPtr)),
64 SLOT(onContentAdded(Tp::CallContentPtr)));
65 }
66
67 void PendingCallContentHandler::onContentAdded(const Tp::CallContentPtr & callContent)
68 {
69 if (callContent->objectPath() == m_tfContent->property("object-path").toString()) {
70 m_contentHandler->d->setCallContent(callContent);
71 Q_EMIT ready(m_tfContent, m_contentHandler);
72 deleteLater();
73 }
74 }
75
76 //END PendingCallContentHandler
77 //BEGIN CallContentHandlerPrivate
78
79 CallContentHandlerPrivate::~CallContentHandlerPrivate()
80 {
81 kDebug();
82 m_sourceControllerPad->unlink(m_queue->getStaticPad("sink"));
83 if (m_tfContent->property("sink-pad").get<QGst::PadPtr>()) {
84 m_queue->getStaticPad("src")->unlink(m_tfContent->property("sink-pad").get<QGst::PadPtr>());
85 }
86 m_queue->setState(QGst::StateNull);
87 m_sourceController->releaseSrcPad(m_sourceControllerPad);
88 m_sinkManager->unlinkAllPads();
89
90 delete m_sourceController;
91 delete m_sinkManager;
92 }
93
94 void CallContentHandlerPrivate::init(const QTf::ContentPtr & tfContent,
95 const QGst::PipelinePtr & pipeline)
96 {
97 kDebug();
98
99 m_tfContent = tfContent;
100 m_pipeline = pipeline;
101 QGlib::connect(tfContent, "src-pad-added", this, &CallContentHandlerPrivate::onSrcPadAdded);
102 QGlib::connect(tfContent, "start-sending", this, &CallContentHandlerPrivate::onStartSending);
103 QGlib::connect(tfContent, "stop-sending", this, &CallContentHandlerPrivate::onStopSending);
104 QGlib::connect(tfContent, "start-receiving", this, &CallContentHandlerPrivate::onStartReceiving);
105 QGlib::connect(tfContent, "stop-receiving", this, &CallContentHandlerPrivate::onStopReceiving);
106
107 switch(tfContent->property("media-type").toInt()) {
108 case Tp::MediaStreamTypeAudio:
109 m_sourceController = new AudioSourceController(pipeline);
110 m_sinkManager = new AudioSinkManager(pipeline, this);
111 break;
112 case Tp::MediaStreamTypeVideo:
113 m_sourceController = new VideoSourceController(pipeline);
114 m_sinkManager = new VideoSinkManager(pipeline, this);
115 break;
116 default:
117 Q_ASSERT(false);
118 }
119
120 m_queue = QGst::ElementFactory::make("queue");
121 m_pipeline->add(m_queue);
122 m_queue->syncStateWithParent();
123
124 m_sourceControllerPad = m_sourceController->requestSrcPad();
125 m_sourceControllerPad->link(m_queue->getStaticPad("sink"));
126 m_queue->getStaticPad("src")->link(m_tfContent->property("sink-pad").get<QGst::PadPtr>());
127
128 connect(m_sinkManager, SIGNAL(controllerCreated(BaseSinkController*)),
129 this, SLOT(onControllerCreated(BaseSinkController*)));
130 connect(m_sinkManager, SIGNAL(controllerDestroyed(BaseSinkController*)),
131 this, SLOT(onControllerDestroyed(BaseSinkController*)));
132 }
133
134 void CallContentHandlerPrivate::setCallContent(const Tp::CallContentPtr & callContent)
135 {
136 kDebug();
137 m_callContent = callContent;
138
139 //the sink manager needs the content to discover contacts
140 m_sinkManager->setCallContent(callContent);
141 }
142
143 void CallContentHandlerPrivate::onSrcPadAdded(uint contactHandle,
144 const QGlib::ObjectPtr & fsStream,
145 const QGst::PadPtr & pad)
146 {
147 Q_UNUSED(fsStream);
148 m_sinkManager->handleNewSinkPad(contactHandle, pad);
149 }
150
151 bool CallContentHandlerPrivate::onStartSending()
152 {
153 kDebug() << "Start sending requested";
154
155 m_sourceController->connectToSource();
156 Q_EMIT q->localSendingStateChanged(true);
157 return true;
158 }
159
160 void CallContentHandlerPrivate::onStopSending()
161 {
162 kDebug() << "Stop sending requested";
163
164 m_sourceController->disconnectFromSource();
165 Q_EMIT q->localSendingStateChanged(false);
166 }
167
168 bool CallContentHandlerPrivate::onStartReceiving(void *handles, uint handleCount)
169 {
170 kDebug() << "Start receiving requested";
171
172 uint *ihandles = reinterpret_cast<uint*>(handles);
173 for (uint i = 0; i < handleCount; ++i) {
174 if (m_handlesToContacts.contains(ihandles[i])) {
175 Tp::ContactPtr contact = m_handlesToContacts[ihandles[i]];
176 Q_ASSERT(m_sinkControllers.contains(contact));
177
178 //if we are not already receiving
179 if (!m_sinkControllers[contact].second) {
180 kDebug() << "Starting receiving from" << contact->alias();
181
182 m_sinkControllers[contact].second = true;
183 Q_EMIT q->remoteSendingStateChanged(contact, true);
184 }
185 }
186 }
187 return true;
188 }
189
190 void CallContentHandlerPrivate::onStopReceiving(void *handles, uint handleCount)
191 {
192 kDebug() << "Stop receiving requested";
193
194 uint *ihandles = reinterpret_cast<uint*>(handles);
195 for (uint i = 0; i < handleCount; ++i) {
196 if (m_handlesToContacts.contains(ihandles[i])) {
197 Tp::ContactPtr contact = m_handlesToContacts[ihandles[i]];
198 Q_ASSERT(m_sinkControllers.contains(contact));
199
200 //if we are receiving
201 if (m_sinkControllers[contact].second) {
202 kDebug() << "Stopping receiving from" << contact->alias();
203
204 m_sinkControllers[contact].second = false;
205 Q_EMIT q->remoteSendingStateChanged(contact, false);
206 }
207 }
208 }
209 }
210
211 void CallContentHandlerPrivate::onControllerCreated(BaseSinkController *controller)
212 {
213 kDebug() << "Sink controller created. Contact:" << controller->contact()->alias()
214 << "media-type:" << m_tfContent->property("media-type").toInt();
215
216 m_sinkControllers.insert(controller->contact(), qMakePair(controller, true));
217 m_handlesToContacts.insert(controller->contact()->handle()[0], controller->contact());
218
219 Q_EMIT q->remoteSendingStateChanged(controller->contact(), true);
220 }
221
222 void CallContentHandlerPrivate::onControllerDestroyed(BaseSinkController *controller)
223 {
224 kDebug() << "Sink controller destroyed. Contact:" << controller->contact()->alias()
225 << "media-type:" << m_tfContent->property("media-type").toInt();
226
227 bool wasReceiving = m_sinkControllers.take(controller->contact()).second;
228 m_handlesToContacts.remove(controller->contact()->handle()[0]);
229
230 if (wasReceiving) {
231 Q_EMIT q->remoteSendingStateChanged(controller->contact(), false);
232 }
233 }
234
235 //END CallContentHandlerPrivate
236 //BEGIN CallContentHandler
237
238 CallContentHandler::CallContentHandler(QObject *parent)
239 : QObject(parent), d(new CallContentHandlerPrivate(this))
240 {
241 }
242
243 CallContentHandler::~CallContentHandler()
244 {
245 delete d;
246 }
247
248 Tp::CallContentPtr CallContentHandler::callContent() const
249 {
250 return d->m_callContent;
251 }
252
253 Tp::Contacts CallContentHandler::remoteMembers() const
254 {
255 return d->m_sinkControllers.keys().toSet();
256 }
257
258 //END CallContentHandler
259 //BEGIN AudioContentHandler
260
261 AudioContentHandler::AudioContentHandler(QObject *parent)
262 : CallContentHandler(parent)
263 {
264 }
265
266 VolumeController *AudioContentHandler::sourceVolumeControl() const
267 {
268 return static_cast<AudioSourceController*>(d->m_sourceController)->volumeController();
269 }
270
271 VolumeController *AudioContentHandler::remoteMemberVolumeControl(const Tp::ContactPtr & contact) const
272 {
273 if (d->m_sinkControllers.contains(contact)) {
274 BaseSinkController *ctrl = d->m_sinkControllers[contact].first;
275 return static_cast<AudioSinkController*>(ctrl)->volumeController();
276 } else {
277 return NULL;
278 }
279 }
280
281 //END AudioContentHandler
282 //BEGIN VideoContentHandler
283
284 VideoContentHandler::VideoContentHandler(QObject *parent)
285 : CallContentHandler(parent)
286 {
287 }
288
289 void VideoContentHandler::linkVideoPreviewSink(const QGst::ElementPtr & sink)
290 {
291 static_cast<VideoSourceController*>(d->m_sourceController)->linkVideoPreviewSink(sink);
292 }
293
294 void VideoContentHandler::unlinkVideoPreviewSink()
295 {
296 static_cast<VideoSourceController*>(d->m_sourceController)->unlinkVideoPreviewSink();
297 }
298
299 void VideoContentHandler::linkRemoteMemberVideoSink(const Tp::ContactPtr & contact,
300 const QGst::ElementPtr & sink)
301 {
302 if (d->m_sinkControllers.contains(contact)) {
303 BaseSinkController *ctrl = d->m_sinkControllers[contact].first;
304 static_cast<VideoSinkController*>(ctrl)->linkVideoSink(sink);
305 }
306 }
307
308 void VideoContentHandler::unlinkRemoteMemberVideoSink(const Tp::ContactPtr & contact)
309 {
310 if (d->m_sinkControllers.contains(contact)) {
311 BaseSinkController *ctrl = d->m_sinkControllers[contact].first;
312 static_cast<VideoSinkController*>(ctrl)->unlinkVideoSink();
313 }
314 }
315
316 //END VideoContentHandler
317
318 #include "moc_call-content-handler.cpp"
319 #include "moc_call-content-handler_p.cpp"
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef CALL_CONTENT_HANDLER_H
18 #define CALL_CONTENT_HANDLER_H
19
20 #include "volume-controller.h"
21 #include <TelepathyQt/CallContent>
22
23 class CallContentHandlerPrivate;
24 class PendingCallContentHandler;
25 class CallChannelHandlerPrivate;
26
27 /**
28 * This class handles streaming in a telepathy Call channel Content.
29 * Everything related to streaming is handled internally.
30 * In audio contents, this class can be safely cast to AudioContentHandler
31 * and on video contents, to VideoContentHandler. Those subclasses expose
32 * all you need to interract with the internal gstreamer pipeline.
33 */
34 class CallContentHandler : public QObject
35 {
36 Q_OBJECT
37 public:
38 /** \returns the telepathy content associated with this handler */
39 Tp::CallContentPtr callContent() const;
40
41 /**
42 * \returns a set of contacts that are actively participating in
43 * the call at the moment (i.e. there is media flowing from them to us)
44 */
45 Tp::Contacts remoteMembers() const;
46
47 Q_SIGNALS:
48 void localSendingStateChanged(bool sending);
49 void remoteSendingStateChanged(const Tp::ContactPtr & contact, bool sending);
50
51 protected:
52 explicit CallContentHandler(QObject *parent = 0);
53 virtual ~CallContentHandler();
54
55 friend class CallContentHandlerPrivate; //emits the signals
56 friend class PendingCallContentHandler; //uses d
57 friend class CallChannelHandlerPrivate; //calls the destructor
58 CallContentHandlerPrivate *const d;
59 };
60
61
62 class AudioContentHandler : public CallContentHandler
63 {
64 Q_OBJECT
65 public:
66 VolumeController *sourceVolumeControl() const;
67 VolumeController *remoteMemberVolumeControl(const Tp::ContactPtr & contact) const;
68
69 private:
70 friend class PendingCallContentHandler;
71 explicit AudioContentHandler(QObject *parent = 0);
72 virtual ~AudioContentHandler() {}
73 };
74
75
76 class VideoContentHandler : public CallContentHandler
77 {
78 Q_OBJECT
79 public:
80 void linkVideoPreviewSink(const QGst::ElementPtr & sink);
81 void unlinkVideoPreviewSink();
82 void linkRemoteMemberVideoSink(const Tp::ContactPtr & contact, const QGst::ElementPtr & sink);
83 void unlinkRemoteMemberVideoSink(const Tp::ContactPtr & contact);
84
85 private:
86 friend class PendingCallContentHandler;
87 explicit VideoContentHandler(QObject *parent = 0);
88 virtual ~VideoContentHandler() {}
89 };
90
91 #endif // CALL_CONTENT_HANDLER_H
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef CALL_CONTENT_HANDLER_P_H
18 #define CALL_CONTENT_HANDLER_P_H
19
20 #include "call-content-handler.h"
21 #include "private/source-controllers.h"
22 #include "private/sink-controllers.h"
23 #include "private/sink-managers.h"
24 #include "../libqtf/qtf.h"
25 #include <QGst/Pipeline>
26 #include <QGst/Pad>
27
28 /* This class constructs a CallContentHandler. This operation is asynchronous
29 * because we need to construct a CallContentHandler as soon as we receive
30 * the TfContent from tp-farstream, however, because tp-qt4 and tp-glib check
31 * dbus separately, tp-qt4 may not be synchronized with tp-glib and thus the
32 * Tp::CallContent may not be available when the TfContent comes. This class
33 * basically waits for tp-qt4 to synchronize.
34 */
35 class PendingCallContentHandler : public QObject
36 {
37 Q_OBJECT
38 public:
39 PendingCallContentHandler(const Tp::CallChannelPtr & callChannel,
40 const QTf::ContentPtr & tfContent,
41 const QGst::PipelinePtr & pipeline,
42 QObject *parent);
43
44 private Q_SLOTS:
45 void findCallContent();
46 void onContentAdded(const Tp::CallContentPtr & callContent);
47
48 Q_SIGNALS:
49 void ready(const QTf::ContentPtr & tfContent, CallContentHandler *contentHandler);
50
51 private:
52 CallContentHandler *m_contentHandler;
53 Tp::CallChannelPtr m_callChannel;
54 QTf::ContentPtr m_tfContent;
55 };
56
57
58 class CallContentHandlerPrivate : public QObject
59 {
60 Q_OBJECT
61 public:
62 CallContentHandlerPrivate(CallContentHandler *qq) : QObject(), q(qq) {}
63 virtual ~CallContentHandlerPrivate();
64
65 /* Called from PendingCallContentHandler right after constructing the CallContentHandler */
66 void init(const QTf::ContentPtr & tfContent, const QGst::PipelinePtr & pipeline);
67
68 /* Called from PendingCallContentHandler when the CallContent is ready */
69 void setCallContent(const Tp::CallContentPtr & callContent);
70
71 private:
72 void onSrcPadAdded(uint contactHandle,
73 const QGlib::ObjectPtr & fsStream,
74 const QGst::PadPtr & pad);
75 bool onStartSending();
76 void onStopSending();
77 bool onStartReceiving(void *handles, uint handleCount);
78 void onStopReceiving(void *handles, uint handleCount);
79
80 private Q_SLOTS:
81 void onControllerCreated(BaseSinkController *controller);
82 void onControllerDestroyed(BaseSinkController *controller);
83
84 public: //accessed from the public class
85 BaseSourceController *m_sourceController;
86 QHash<Tp::ContactPtr, QPair<BaseSinkController*, bool> > m_sinkControllers; //bool -> receiving state
87 Tp::CallContentPtr m_callContent;
88
89 private:
90 CallContentHandler * const q;
91 BaseSinkManager *m_sinkManager;
92 QTf::ContentPtr m_tfContent;
93 QGst::PipelinePtr m_pipeline;
94 QGst::PadPtr m_sourceControllerPad;
95 QGst::ElementPtr m_queue;
96 QHash<uint, Tp::ContactPtr> m_handlesToContacts;
97 };
98
99 #endif // CALL_CONTENT_HANDLER_P_H
0 /*
1 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "device-element-factory.h"
18 #include "phonon-integration.h"
19 #include <QGst/Bin>
20 #include <QGst/ElementFactory>
21 #include <KDebug>
22 #include <KConfig>
23 #include <KConfigGroup>
24 #include <KGlobal>
25
26 QGst::ElementPtr DeviceElementFactory::makeAudioCaptureElement()
27 {
28 QGst::ElementPtr element;
29
30 //allow overrides from the application's configuration file
31 element = tryOverrideForKey("audiosrc");
32 if (element) {
33 return element;
34 }
35
36 //use gconf on non-kde environments
37 if (qgetenv("KDE_FULL_SESSION").isEmpty()) {
38 element = tryElement("gconfaudiosrc");
39 return element;
40 }
41
42 //for kde environments try to do what phonon does:
43 //first try pulseaudio,
44 element = tryElement("pulsesrc");
45 if (element) {
46 return element;
47 }
48
49 //then try alsa/oss devices reported by phononserver
50 //in the order that they are configured in phonon
51 QList<Phonon::DeviceAccessList> phononDeviceLists
52 = PhononIntegration::readDevices(Phonon::AudioCaptureDeviceType, Phonon::CommunicationCategory);
53
54 Q_FOREACH (const Phonon::DeviceAccessList & deviceList, phononDeviceLists) {
55 Q_FOREACH (const Phonon::DeviceAccess & device, deviceList) {
56 if (device.first == "alsa") {
57 //skip x-phonon devices, we will use plughw which is always second in the list
58 if (!device.second.startsWith("x-phonon")) {
59 element = tryElement("alsasrc", device.second);
60 }
61 } else if (device.first == "oss") {
62 element = tryElement("osssrc", device.second);
63 }
64
65 if (element) {
66 return element;
67 }
68 }
69 }
70
71 //as a last resort, try gstreamer's autodetection
72 element = tryElement("autoaudiosrc");
73 return element;
74 }
75
76 QGst::ElementPtr DeviceElementFactory::makeAudioOutputElement()
77 {
78 QGst::ElementPtr element;
79
80 //allow overrides from the application's configuration file
81 element = tryOverrideForKey("audiosink");
82 if (element) {
83 return element;
84 }
85
86 //use gconf on non-kde environments
87 if (qgetenv("KDE_FULL_SESSION").isEmpty()) {
88 element = tryElement("gconfaudiosink");
89 if (element) {
90 element->setProperty("profile", 2 /*chat*/);
91 }
92 return element;
93 }
94
95 //for kde environments try to do what phonon does:
96 //first try pulseaudio,
97 element = tryElement("pulsesink");
98 if (element) {
99 //TODO set category somehow...
100 return element;
101 }
102
103 //then try alsa/oss devices reported by phononserver
104 //in the order that they are configured in phonon
105 QList<Phonon::DeviceAccessList> phononDeviceLists
106 = PhononIntegration::readDevices(Phonon::AudioOutputDeviceType, Phonon::CommunicationCategory);
107
108 Q_FOREACH (const Phonon::DeviceAccessList & deviceList, phononDeviceLists) {
109 Q_FOREACH (const Phonon::DeviceAccess & device, deviceList) {
110 if (device.first == "alsa") {
111 //use dmix instead of x-phonon, since we don't have phonon's alsa configuration file
112 QString deviceString = device.second;
113 deviceString.replace("x-phonon", "dmix");
114 element = tryElement("alsasink", deviceString);
115 } else if (device.first == "oss") {
116 element = tryElement("osssink", device.second);
117 }
118
119 if (element) {
120 return element;
121 }
122 }
123 }
124
125 //as a last resort, try gstreamer's autodetection
126 element = tryElement("autoaudiosink");
127 return element;
128 }
129
130 QGst::ElementPtr DeviceElementFactory::makeVideoCaptureElement()
131 {
132 QGst::ElementPtr element;
133
134 //allow overrides from the application's configuration file
135 element = tryOverrideForKey("videosrc");
136 if (element) {
137 return element;
138 }
139
140 //use gconf on non-kde environments
141 if (qgetenv("KDE_FULL_SESSION").isEmpty()) {
142 element = tryElement("gconfvideosrc");
143 return element;
144 }
145
146 //TODO implement phonon settings
147
148 //as a last resort, try gstreamer's autodetection
149 element = tryElement("autovideosrc");
150 return element;
151 }
152
153 QGst::ElementPtr DeviceElementFactory::tryElement(const char *name, const QString & device)
154 {
155 QGst::ElementPtr element = QGst::ElementFactory::make(name);
156 if (!element) {
157 kDebug() << "Could not make element" << name;
158 return element;
159 }
160
161 if (!device.isEmpty()) {
162 try {
163 element->setProperty("device", device);
164 } catch (const std::logic_error & error) {
165 kDebug() << "FIXME: Element" << name << "doesn't support string device property";
166 }
167 }
168
169 if (!element->setState(QGst::StateReady)) {
170 kDebug() << "Element" << name << "with device string" << device << "doesn't want to become ready";
171 return QGst::ElementPtr();
172 }
173
174 kDebug() << "Using element" << name << "with device string" << device;
175 return element;
176 }
177
178 QGst::ElementPtr DeviceElementFactory::tryOverrideForKey(const char *keyName)
179 {
180 QGst::ElementPtr element;
181 const KConfigGroup configGroup = KGlobal::config()->group("GStreamer");
182
183 if (configGroup.hasKey(keyName)) {
184 QString binDescription = configGroup.readEntry(keyName);
185 element = QGst::Bin::fromDescription(binDescription);
186
187 if (!element) {
188 kDebug() << "Could not construct bin" << binDescription;
189 return element;
190 }
191
192 if (!element->setState(QGst::StateReady)) {
193 kDebug() << "Custom bin" << binDescription << "doesn't want to become ready";
194 return QGst::ElementPtr();
195 }
196
197 kDebug() << "Using custom bin" << binDescription;
198 }
199
200 return element;
201 }
0 /*
1 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef DEVICE_ELEMENT_FACTORY_P_H
18 #define DEVICE_ELEMENT_FACTORY_P_H
19
20 #include <QtCore/QList>
21 #include <QtCore/QHash>
22 #include <QGst/Global>
23
24 class DeviceElementFactory
25 {
26 public:
27 static QGst::ElementPtr makeAudioCaptureElement();
28 static QGst::ElementPtr makeAudioOutputElement();
29 static QGst::ElementPtr makeVideoCaptureElement();
30
31 private:
32 static QGst::ElementPtr tryElement(const char *name, const QString & device = QString());
33 static QGst::ElementPtr tryOverrideForKey(const char *keyName);
34 };
35
36 #endif // DEVICE_ELEMENT_FACTORY_H
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.com>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "input-control-bin.h"
18
19 #include <QtCore/QString>
20
21 #include <QGst/ElementFactory>
22 #include <QGst/GhostPad>
23 #include <QGst/Structure>
24 #include <QGst/Caps>
25 #include <QGst/Fraction>
26
27
28 InputControlBin::InputControlBin(const QGst::ElementPtr & silenceSrc,
29 const QGst::ElementPtr & filter)
30 {
31 m_bin = QGst::Bin::create();
32 m_silenceSource = silenceSrc;
33 m_inputSelector = QGst::ElementFactory::make("input-selector");
34 m_tee = QGst::ElementFactory::make("tee");
35 m_fakesink = QGst::ElementFactory::make("fakesink");
36 m_fakesink->setProperty("sync", false);
37 m_fakesink->setProperty("async", false);
38 m_fakesink->setProperty("silent", true);
39 m_fakesink->setProperty("enable-last-buffer", false);
40
41 m_bin->add(m_silenceSource, m_inputSelector, filter, m_tee, m_fakesink);
42
43 // silencesource ! input-selector
44 QGst::PadPtr selectorSinkPad = m_inputSelector->getRequestPad("sink%d");
45 m_silenceSource->getStaticPad("src")->link(selectorSinkPad);
46
47 // input-selector ! (filter bin) ! tee
48 QGst::Element::linkMany(m_inputSelector, filter, m_tee);
49
50 // tee ! fakesink
51 m_tee->getRequestPad("src%d")->link(m_fakesink->getStaticPad("sink"));
52 }
53
54 InputControlBin::~InputControlBin()
55 {
56
57 }
58
59 void InputControlBin::connectSource(const QGst::ElementPtr & source)
60 {
61 m_source = source;
62 m_bin->add(m_source);
63
64 //connect the source to the input-selector sink pad
65 m_selectorSinkPad = m_inputSelector->getRequestPad("sink%d");
66 m_source->getStaticPad("src")->link(m_selectorSinkPad);
67
68 //set the source to playing state
69 m_source->syncStateWithParent();
70
71 //swap sources
72 switchToRealSource();
73 }
74
75 void InputControlBin::disconnectSource()
76 {
77 switchToSilenceSource();
78
79 //disconnect the source from the input-selector sink pad
80 m_source->getStaticPad("src")->unlink(m_selectorSinkPad);
81 m_inputSelector->releaseRequestPad(m_selectorSinkPad);
82 m_selectorSinkPad.clear();
83
84 //destroy the source
85 m_source->setState(QGst::StateNull);
86 m_bin->remove(m_source);
87 m_source.clear();
88 }
89
90 QGst::PadPtr InputControlBin::requestSrcPad()
91 {
92 static uint padNameCounter = 0;
93
94 QString newPadName = QString("src%1").arg(padNameCounter);
95 padNameCounter++;
96
97 QGst::PadPtr teeSrcPad = m_tee->getRequestPad("src%d");
98 QGst::PadPtr ghostSrcPad = QGst::GhostPad::create(teeSrcPad, newPadName.toAscii());
99
100 ghostSrcPad->setActive(true);
101 m_bin->addPad(ghostSrcPad);
102 m_pads.insert(ghostSrcPad, teeSrcPad);
103
104 return ghostSrcPad;
105 }
106
107 void InputControlBin::releaseSrcPad(const QGst::PadPtr & pad)
108 {
109 QGst::PadPtr teeSrcPad = m_pads.take(pad);
110 Q_ASSERT(!teeSrcPad.isNull());
111
112 m_bin->removePad(pad);
113 m_tee->releaseRequestPad(teeSrcPad);
114 }
115
116 void InputControlBin::switchToRealSource()
117 {
118 //wait for data to arrive on the source src pad
119 //required for synchronization with the streaming thread
120 QGst::PadPtr sourceSrcPad = m_source->getStaticPad("src");
121 sourceSrcPad->setBlocked(true);
122 sourceSrcPad->setBlocked(false);
123
124 //switch inputs
125 m_inputSelector->setProperty("active-pad", m_selectorSinkPad);
126 }
127
128 void InputControlBin::switchToSilenceSource()
129 {
130 //switch inputs
131 m_inputSelector->setProperty("active-pad", m_inputSelector->getStaticPad("sink0"));
132
133 //wait for data to arrive on the inputselector src pad
134 //required for synchronization with the streaming thread
135 QGst::PadPtr selectorSrcPad = m_inputSelector->getStaticPad("src");
136 selectorSrcPad->setBlocked(true);
137 selectorSrcPad->setBlocked(false);
138 }
139
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.com>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef INPUT_CONTROL_BIN_H
18 #define INPUT_CONTROL_BIN_H
19
20 #include <QGst/Bin>
21 #include <QGst/Pad>
22
23 class InputControlBin
24 {
25 public:
26 InputControlBin(const QGst::ElementPtr & silenceSrc, const QGst::ElementPtr & filter);
27 virtual ~InputControlBin();
28
29 QGst::BinPtr bin() const { return m_bin; }
30
31 void connectSource(const QGst::ElementPtr & source);
32 void disconnectSource();
33
34 QGst::PadPtr requestSrcPad();
35 void releaseSrcPad(const QGst::PadPtr & pad);
36
37 private:
38 void switchToRealSource();
39 void switchToSilenceSource();
40
41 //<ghost src pad, tee request src pad>
42 QHash<QGst::PadPtr, QGst::PadPtr> m_pads;
43 //the bin that keeps all the elements below grouped together
44 QGst::BinPtr m_bin;
45 //the tee that gives us the source pads for whomever connects on this bin
46 QGst::ElementPtr m_tee;
47 //a fake sink that is connected on the tee to avoid not-linked errors
48 QGst::ElementPtr m_fakesink;
49 //the input-selector that switches between m_source and m_silenceSource
50 QGst::ElementPtr m_inputSelector;
51 //a fake source that generates silence (audio) or black image (video)
52 QGst::ElementPtr m_silenceSource;
53 //the real source bin, as constructed from the subclass
54 QGst::ElementPtr m_source;
55 //the input-selector pad where the source is connected
56 QGst::PadPtr m_selectorSinkPad;
57 };
58
59 #endif // INPUT_CONTROL_BIN_H
0 /*
1 This file contains code from the phonon project.
2
3 Copyright (C) 2006-2008 Matthias Kretz <kretz@kde.org>
4 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
5 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) version 3, or any
11 later version accepted by the membership of KDE e.V. (or its
12 successor approved by the membership of KDE e.V.), Nokia Corporation
13 (or its successors, if any) and the KDE Free Qt Foundation, which shall
14 act as a proxy defined in Section 6 of version 3 of the license.
15
16 This library is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 Lesser General Public License for more details.
20
21 You should have received a copy of the GNU Lesser General Public
22 License along with this library. If not, see <http://www.gnu.org/licenses/>.
23 */
24 #include "phonon-integration.h"
25 #include <QtCore/QSettings>
26 #include <QtDBus/QDBusInterface>
27 #include <QtDBus/QDBusReply>
28 #include <KDebug>
29 #include <KGlobal>
30
31 Q_DECLARE_METATYPE(QList<int>)
32
33 struct PhononIntegrationPrivate
34 {
35 PhononIntegrationPrivate()
36 : phononSettings(QLatin1String("kde.org"), QLatin1String("libphonon")),
37 phononServer(QLatin1String("org.kde.kded"),
38 QLatin1String("/modules/phononserver"),
39 QLatin1String("org.kde.PhononServer"))
40 {
41 registerMetaTypes();
42 }
43
44 void registerMetaTypes()
45 {
46 // Register the PhononDeviceAccessList type if it has not been registered yet
47 if (qMetaTypeId<Phonon::DeviceAccess>())
48 {
49 qRegisterMetaType<Phonon::DeviceAccess>();
50 qRegisterMetaTypeStreamOperators<Phonon::DeviceAccess>("Phonon::DeviceAccess");
51 }
52
53 if (qMetaTypeId<Phonon::DeviceAccessList>())
54 {
55 qRegisterMetaType<Phonon::DeviceAccessList>();
56 qRegisterMetaTypeStreamOperators<Phonon::DeviceAccessList>("Phonon::DeviceAccessList");
57
58 //compatibility with kde 4.5
59 qRegisterMetaTypeStreamOperators<Phonon::DeviceAccessList>("PhononDeviceAccessList");
60 }
61
62 if (qMetaTypeId< QList<int> >()) {
63 qRegisterMetaType< QList<int> >();
64 qRegisterMetaTypeStreamOperators< QList<int> >("QList<int>");
65 }
66 }
67
68 QSettings phononSettings;
69 QDBusInterface phononServer;
70 };
71
72 K_GLOBAL_STATIC(PhononIntegrationPrivate, s_priv);
73
74
75 QList<Phonon::DeviceAccessList> PhononIntegration::readDevices(Phonon::ObjectDescriptionType type,
76 Phonon::Category category)
77 {
78 switch (type) {
79 case Phonon::AudioOutputDeviceType:
80 case Phonon::AudioCaptureDeviceType:
81 return readAudioDevices(type, category);
82 break;
83 case Phonon::VideoCaptureDeviceType:
84 return readVideoDevices(category);
85 break;
86 default:
87 return QList<Phonon::DeviceAccessList>();
88 }
89 }
90
91 template <typename R>
92 static inline R dbusCall(QDBusInterface & interface, const QString & method, int argument)
93 {
94 R r;
95 QDBusReply<QByteArray> reply = interface.call(method, argument);
96 if (!reply.isValid()) {
97 kDebug() << reply.error();
98 return r;
99 }
100
101 QDataStream stream(reply.value());
102 stream >> r;
103 return r;
104 }
105
106 QList<Phonon::DeviceAccessList> PhononIntegration::readAudioDevices(Phonon::ObjectDescriptionType type,
107 Phonon::Category category)
108 {
109 QList<Phonon::DeviceAccessList> list;
110
111 QList<int> indices = dbusCall< QList<int> >(s_priv->phononServer,
112 QLatin1String("audioDevicesIndexes"), type);
113 kDebug() << "got audio device indices" << indices << "for type" << type;
114
115 indices = sortDevicesByCategoryPriority(type, category, indices);
116 kDebug() << "sorted audio devices indices" << indices << "for category" << category;
117
118 for (int i=0; i < indices.size(); ++i) {
119 QHash<QByteArray, QVariant> properties =
120 dbusCall< QHash<QByteArray, QVariant> >(s_priv->phononServer,
121 QLatin1String("audioDevicesProperties"),
122 indices.at(i));
123
124 if (hideAdvancedDevices()) {
125 const QVariant var = properties.value("isAdvanced");
126 if (var.isValid() && var.toBool()) {
127 kDebug() << "hiding device" << indices.at(i)
128 << "because it is advanced and HideAdvancedDevices is specified";
129 continue;
130 }
131 }
132
133 QVariant accessList = properties.value("deviceAccessList");
134 if (accessList.isValid()) {
135 kDebug() << "appending device access list for device" << indices.at(i);
136 list.append(accessList.value<Phonon::DeviceAccessList>());
137 }
138 }
139 return list;
140 }
141
142 QList<Phonon::DeviceAccessList> PhononIntegration::readVideoDevices(Phonon::Category category)
143 {
144 Q_UNUSED (category);
145 return QList<Phonon::DeviceAccessList>(); //TODO implement me
146 }
147
148 bool PhononIntegration::hideAdvancedDevices()
149 {
150 return s_priv->phononSettings.value(QLatin1String("General/HideAdvancedDevices"), true).toBool();
151 }
152
153 QList<int> PhononIntegration::sortDevicesByCategoryPriority(Phonon::ObjectDescriptionType type,
154 Phonon::Category category,
155 QList<int> originalList)
156 {
157 switch(type) {
158 case Phonon::AudioOutputDeviceType:
159 s_priv->phononSettings.beginGroup(QLatin1String("AudioOutputDevice"));
160 break;
161 case Phonon::AudioCaptureDeviceType:
162 s_priv->phononSettings.beginGroup(QLatin1String("AudioCaptureDevice"));
163 break;
164 case Phonon::VideoCaptureDeviceType:
165 s_priv->phononSettings.beginGroup(QLatin1String("VideoCaptureDevice"));
166 break;
167 default:
168 Q_ASSERT(false);
169 }
170
171 if (originalList.size() <= 1) {
172 // nothing to sort
173 return originalList;
174 } else {
175 // make entries unique
176 QSet<int> seen;
177 QMutableListIterator<int> it(originalList);
178 while (it.hasNext()) {
179 if (seen.contains(it.next())) {
180 it.remove();
181 } else {
182 seen.insert(it.value());
183 }
184 }
185 }
186
187 QString categoryKey = QLatin1String("Category_") + QString::number(static_cast<int>(category));
188 if (!s_priv->phononSettings.contains(categoryKey)) {
189 // no list in config for the given category
190 categoryKey = QLatin1String("Category_") + QString::number(static_cast<int>(Phonon::NoCategory));
191 if (!s_priv->phononSettings.contains(categoryKey)) {
192 // no list in config for NoCategory
193 return originalList;
194 }
195 }
196
197 //Now the list from the config
198 QList<int> deviceList = s_priv->phononSettings.value(categoryKey).value< QList<int> >();
199
200 //if there are devices in the config that phononserver doesn't report, remove them from the list
201 QMutableListIterator<int> i(deviceList);
202 while (i.hasNext()) {
203 if (0 == originalList.removeAll(i.next())) {
204 i.remove();
205 }
206 }
207
208 //if the backend reports more devices that are not in d->config append them to the list
209 deviceList += originalList;
210
211 s_priv->phononSettings.endGroup();
212 return deviceList;
213 }
0 /*
1 This file contains code from the phonon project.
2
3 Copyright (C) 2006-2008 Matthias Kretz <kretz@kde.org>
4 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
5 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) version 3, or any
11 later version accepted by the membership of KDE e.V. (or its
12 successor approved by the membership of KDE e.V.), Nokia Corporation
13 (or its successors, if any) and the KDE Free Qt Foundation, which shall
14 act as a proxy defined in Section 6 of version 3 of the license.
15
16 This library is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 Lesser General Public License for more details.
20
21 You should have received a copy of the GNU Lesser General Public
22 License along with this library. If not, see <http://www.gnu.org/licenses/>.
23 */
24 #ifndef PHONON_INTEGRATION_P_H
25 #define PHONON_INTEGRATION_P_H
26
27 #include <phonon/Global>
28 #include <phonon/ObjectDescription>
29
30 class PhononIntegration
31 {
32 public:
33 static QList<Phonon::DeviceAccessList> readDevices(Phonon::ObjectDescriptionType type,
34 Phonon::Category category);
35
36 private:
37 static QList<Phonon::DeviceAccessList> readAudioDevices(Phonon::ObjectDescriptionType type,
38 Phonon::Category category);
39 static QList<Phonon::DeviceAccessList> readVideoDevices(Phonon::Category category);
40 static bool hideAdvancedDevices();
41 static QList<int> sortDevicesByCategoryPriority(Phonon::ObjectDescriptionType type,
42 Phonon::Category category,
43 QList<int> originalList);
44 };
45
46 #endif // PHONONINTEGRATION_P_H
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "sink-controllers.h"
18 #include <QGst/ElementFactory>
19 #include <QGst/Pipeline>
20 #include <QGst/GhostPad>
21 #include <KDebug>
22
23 //BEGIN BaseSinkController
24
25 Tp::ContactPtr BaseSinkController::contact() const
26 {
27 return m_contact;
28 }
29
30 void BaseSinkController::initFromMainThread(const Tp::ContactPtr & contact)
31 {
32 m_contact = contact;
33 }
34
35 void BaseSinkController::releaseFromStreamingThread(const QGst::PipelinePtr & pipeline)
36 {
37 m_bin->setState(QGst::StateNull);
38 pipeline->remove(m_bin);
39 m_bin.clear();
40 }
41
42 //END BaseSinkController
43 //BEGIN AudioSinkController
44
45 AudioSinkController::AudioSinkController(const QGst::PadPtr & adderSinkPad)
46 : m_adderRequestPad(adderSinkPad),
47 m_volumeController(NULL)
48 {
49 }
50
51 AudioSinkController::~AudioSinkController()
52 {
53 delete m_volumeController;
54 }
55
56 QGst::PadPtr AudioSinkController::adderRequestPad() const
57 {
58 return m_adderRequestPad;
59 }
60
61 VolumeController *AudioSinkController::volumeController() const
62 {
63 return m_volumeController;
64 }
65
66 void AudioSinkController::initFromStreamingThread(const QGst::PadPtr & srcPad,
67 const QGst::PipelinePtr & pipeline)
68 {
69 m_bin = QGst::Bin::fromDescription(
70 "volume ! "
71 "audioconvert ! "
72 "audioresample ! "
73 "level"
74 );
75
76 pipeline->add(m_bin);
77 m_bin->syncStateWithParent();
78
79 m_bin->getStaticPad("src")->link(m_adderRequestPad);
80 srcPad->link(m_bin->getStaticPad("sink"));
81 }
82
83 void AudioSinkController::initFromMainThread(const Tp::ContactPtr & contact)
84 {
85 m_volumeController = new VolumeController;
86 m_volumeController->setElement(m_bin->getElementByInterface<QGst::StreamVolume>());
87
88 BaseSinkController::initFromMainThread(contact);
89 }
90
91 void AudioSinkController::releaseFromStreamingThread(const QGst::PipelinePtr & pipeline)
92 {
93 m_bin->getStaticPad("src")->unlink(m_adderRequestPad);
94 m_adderRequestPad.clear();
95
96 BaseSinkController::releaseFromStreamingThread(pipeline);
97 }
98
99 //END AudioSinkController
100 //BEGIN VideoSinkController
101
102 VideoSinkController::VideoSinkController()
103 : m_padNameCounter(0),
104 m_videoSinkBin(NULL)
105 {
106 }
107
108 VideoSinkController::~VideoSinkController()
109 {
110 }
111
112 QGst::PadPtr VideoSinkController::requestSrcPad()
113 {
114 QString newPadName = QString("src%1").arg(m_padNameCounter);
115 m_padNameCounter++;
116
117 QGst::PadPtr teeSrcPad = m_tee->getRequestPad("src%d");
118 QGst::PadPtr ghostSrcPad = QGst::GhostPad::create(teeSrcPad, newPadName.toAscii());
119
120 ghostSrcPad->setActive(true);
121 m_bin->addPad(ghostSrcPad);
122 m_pads.insert(ghostSrcPad, teeSrcPad);
123
124 return ghostSrcPad;
125 }
126
127 void VideoSinkController::releaseSrcPad(const QGst::PadPtr & pad)
128 {
129 QGst::PadPtr teeSrcPad = m_pads.take(pad);
130 Q_ASSERT(!teeSrcPad.isNull());
131
132 m_bin->removePad(pad);
133 m_tee->releaseRequestPad(teeSrcPad);
134 }
135
136 void VideoSinkController::linkVideoSink(const QGst::ElementPtr & sink)
137 {
138 //initFromStreamingThread() is always called before the user knows
139 //anything about this content's src pad, so nobody can possibly link
140 //a video sink before the bin is created.
141 Q_ASSERT(m_bin);
142 kDebug();
143
144 QGst::PadPtr srcPad = m_tee->getRequestPad("src%d");
145 m_videoSinkBin = new VideoSinkBin(sink);
146
147 m_bin->add(m_videoSinkBin->bin());
148 m_videoSinkBin->bin()->syncStateWithParent();
149 srcPad->link(m_videoSinkBin->bin()->getStaticPad("sink"));
150 }
151
152 void VideoSinkController::unlinkVideoSink()
153 {
154 //lock because releaseFromStreamingThread() is always called before the user
155 //knows about the removal of the content's src pad and may try to unlink
156 //externally while releaseFromStreamingThread() is running.
157 QMutexLocker l(&m_videoSinkMutex);
158
159 if (m_videoSinkBin) {
160 kDebug();
161
162 QGst::PadPtr sinkPad = m_videoSinkBin->bin()->getStaticPad("sink");
163 QGst::PadPtr srcPad = sinkPad->peer();
164
165 srcPad->unlink(sinkPad);
166 m_videoSinkBin->bin()->setState(QGst::StateNull);
167 m_bin->remove(m_videoSinkBin->bin());
168 delete m_videoSinkBin;
169 m_videoSinkBin = NULL;
170
171 m_tee->releaseRequestPad(srcPad);
172 }
173 }
174
175 void VideoSinkController::initFromStreamingThread(const QGst::PadPtr & srcPad,
176 const QGst::PipelinePtr & pipeline)
177 {
178 m_bin = QGst::Bin::create();
179 m_tee = QGst::ElementFactory::make("tee");
180
181 QGst::ElementPtr fakesink = QGst::ElementFactory::make("fakesink");
182 fakesink->setProperty("sync", false);
183 fakesink->setProperty("async", false);
184 fakesink->setProperty("silent", true);
185 fakesink->setProperty("enable-last-buffer", false);
186
187 m_bin->add(m_tee, fakesink);
188 m_tee->getRequestPad("src%d")->link(fakesink->getStaticPad("sink"));
189
190 QGst::PadPtr binSinkPad = QGst::GhostPad::create(m_tee->getStaticPad("sink"), "sink");
191 m_bin->addPad(binSinkPad);
192
193 pipeline->add(m_bin);
194 m_bin->syncStateWithParent();
195
196 srcPad->link(binSinkPad);
197 }
198
199 void VideoSinkController::releaseFromStreamingThread(const QGst::PipelinePtr & pipeline)
200 {
201 unlinkVideoSink();
202 BaseSinkController::releaseFromStreamingThread(pipeline);
203 }
204
205 //END VideoSinkController
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef SINK_CONTROLLERS_H
18 #define SINK_CONTROLLERS_H
19
20 #include "../volume-controller.h"
21 #include "video-sink-bin.h"
22 #include <TelepathyQt/Contact>
23 #include <QGst/Pipeline>
24 #include <QGst/Pad>
25
26 class BaseSinkController
27 {
28 public:
29 virtual ~BaseSinkController() {}
30
31 Tp::ContactPtr contact() const;
32
33 virtual void initFromStreamingThread(const QGst::PadPtr & srcPad,
34 const QGst::PipelinePtr & pipeline) = 0;
35 virtual void initFromMainThread(const Tp::ContactPtr & contact);
36 virtual void releaseFromStreamingThread(const QGst::PipelinePtr & pipeline);
37
38 protected:
39 Tp::ContactPtr m_contact;
40 QGst::BinPtr m_bin;
41 };
42
43
44 class AudioSinkController : public BaseSinkController
45 {
46 public:
47 AudioSinkController(const QGst::PadPtr & adderRequestPad);
48 virtual ~AudioSinkController();
49
50 QGst::PadPtr adderRequestPad() const;
51 VolumeController *volumeController() const;
52
53 virtual void initFromStreamingThread(const QGst::PadPtr & srcPad,
54 const QGst::PipelinePtr & pipeline);
55 virtual void initFromMainThread(const Tp::ContactPtr & contact);
56 virtual void releaseFromStreamingThread(const QGst::PipelinePtr & pipeline);
57
58 private:
59 QGst::PadPtr m_adderRequestPad;
60 VolumeController *m_volumeController;
61 };
62
63
64 class VideoSinkController : public BaseSinkController
65 {
66 public:
67 VideoSinkController();
68 virtual ~VideoSinkController();
69
70 QGst::PadPtr requestSrcPad();
71 void releaseSrcPad(const QGst::PadPtr & pad);
72
73 void linkVideoSink(const QGst::ElementPtr & sink);
74 void unlinkVideoSink();
75
76 virtual void initFromStreamingThread(const QGst::PadPtr & srcPad,
77 const QGst::PipelinePtr & pipeline);
78 virtual void releaseFromStreamingThread(const QGst::PipelinePtr & pipeline);
79
80 private:
81 //<ghost src pad, tee request src pad>
82 QHash<QGst::PadPtr, QGst::PadPtr> m_pads;
83 QGst::ElementPtr m_tee;
84 uint m_padNameCounter;
85 VideoSinkBin *m_videoSinkBin;
86 QMutex m_videoSinkMutex;
87 };
88
89
90 Q_DECLARE_METATYPE(BaseSinkController*)
91
92 #endif //SINK_CONTROLLERS_H
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "sink-managers.h"
18 #include "device-element-factory.h"
19 #include <TelepathyQt/ReferencedHandles>
20 #include <QGlib/Connect>
21 #include <QGst/ElementFactory>
22 #include <QGst/Pipeline>
23 #include <QGst/Pad>
24 #include <KDebug>
25
26 //BEGIN BaseSinkManager
27
28 BaseSinkManager::BaseSinkManager(QObject *parent)
29 : QObject(parent)
30 {
31 }
32
33 BaseSinkManager::~BaseSinkManager()
34 {
35 }
36
37 void BaseSinkManager::handleNewSinkPad(uint contactHandle, const QGst::PadPtr & pad)
38 {
39 kDebug() << "New src pad" << pad->name() << "from handle" << contactHandle;
40
41 //link the pad
42 BaseSinkController *ctrl = createController(pad);
43
44 //notify when the pad is unlinked (probably because it was removed from the fsconference)
45 QGlib::connect(pad, "unlinked", this, &BaseSinkManager::onPadUnlinked, QGlib::PassSender);
46
47 m_mutex.lock();
48 m_controllersWaitingForContact.insert(contactHandle, ctrl);
49 m_controllers.insert(pad, ctrl);
50 m_mutex.unlock();
51
52 //continue processing from the main thread
53 QMetaObject::invokeMethod(this, "handleNewSinkPadAsync", Qt::QueuedConnection,
54 Q_ARG(uint, contactHandle));
55 }
56
57 void BaseSinkManager::handleNewSinkPadAsync(uint contactHandle)
58 {
59 QMutexLocker l(&m_mutex);
60
61 BaseSinkController *ctrl = m_controllersWaitingForContact.value(contactHandle);
62 if (KDE_ISUNLIKELY(!ctrl)) {
63 //just in case the pad was unlinked before we reached this slot
64 kDebug() << "Not handling new pad. The pad was unlinked too early.";
65 return;
66 }
67
68 if (m_content) {
69 kDebug() << "Content exists. Looking for contact...";
70
71 Q_FOREACH (const Tp::CallStreamPtr & stream, m_content->streams()) {
72 Q_FOREACH (const Tp::ContactPtr & contact, stream->remoteMembers()) {
73 if (contact->handle()[0] == contactHandle) {
74 kDebug() << "Found contact" << contact;
75
76 m_controllersWaitingForContact.remove(contactHandle);
77 ctrl->initFromMainThread(contact);
78 Q_EMIT controllerCreated(ctrl);
79
80 return;
81 }
82 }
83 }
84 }
85
86 kDebug() << "Contact not found. Waiting for tp-qt to sync with dbus";
87 }
88
89 void BaseSinkManager::setCallContent(const Tp::CallContentPtr & callContent)
90 {
91 m_content = callContent;
92 connect(m_content.data(), SIGNAL(streamAdded(Tp::CallStreamPtr)),
93 SLOT(onStreamAdded(Tp::CallStreamPtr)));
94
95 Q_FOREACH(const Tp::CallStreamPtr & stream, m_content->streams()) {
96 onStreamAdded(stream);
97 }
98 }
99
100 void BaseSinkManager::onStreamAdded(const Tp::CallStreamPtr & stream)
101 {
102 connect(stream.data(),
103 SIGNAL(remoteSendingStateChanged(QHash<Tp::ContactPtr,Tp::SendingState>,Tp::CallStateReason)),
104 SLOT(onRemoteSendingStateChanged(QHash<Tp::ContactPtr,Tp::SendingState>)));
105
106 Tp::Contacts remoteMembers = stream->remoteMembers();
107 if (!remoteMembers.isEmpty()) {
108 checkForNewContacts(remoteMembers.toList());
109 }
110 }
111
112 void BaseSinkManager::onRemoteSendingStateChanged(const QHash<Tp::ContactPtr, Tp::SendingState> & states)
113 {
114 checkForNewContacts(states.keys());
115 }
116
117 void BaseSinkManager::checkForNewContacts(const QList<Tp::ContactPtr> & contacts)
118 {
119 QMutexLocker l(&m_mutex);
120
121 if (!m_controllersWaitingForContact.isEmpty()) {
122 Q_FOREACH (const Tp::ContactPtr & contact, contacts) {
123 if (m_controllersWaitingForContact.contains(contact->handle()[0])) {
124 kDebug() << "Found contact" << contact;
125
126 BaseSinkController *ctrl = m_controllersWaitingForContact.take(contact->handle()[0]);
127 ctrl->initFromMainThread(contact);
128 Q_EMIT controllerCreated(ctrl);
129
130 return;
131 }
132 }
133 }
134 }
135
136 void BaseSinkManager::unlinkAllPads()
137 {
138 QMutexLocker l(&m_mutex);
139
140 kDebug() << m_controllers.size() << "pads need unlinking";
141
142 QHashIterator<QGst::PadPtr, BaseSinkController*> it(m_controllers);
143 while (it.hasNext()) {
144 it.next();
145
146 QGst::PadPtr srcPad = it.key();
147 QGst::PadPtr sinkPad = srcPad->peer();
148
149 QGlib::disconnect(srcPad, 0, this, 0);
150 srcPad->unlink(sinkPad);
151
152 Q_ASSERT(!m_releasedControllers.contains(it.value()));
153
154 releaseControllerData(it.value());
155 Q_EMIT controllerDestroyed(it.value());
156 delete it.value();
157 }
158 m_controllers.clear();
159
160 //this is not empty when onPadUnlinked() was called from the streaming thread
161 //but destroyController() has not yet been executed in the main thread.
162 //since this is the destructor, we need to cleanup because destroyController()
163 //will never be actually executed.
164 Q_FOREACH(BaseSinkController *ctrl, m_releasedControllers) {
165 Q_EMIT controllerDestroyed(ctrl);
166 delete ctrl;
167 }
168 m_releasedControllers.clear();
169 }
170
171 void BaseSinkManager::onPadUnlinked(const QGst::PadPtr & srcPad)
172 {
173 QMutexLocker l(&m_mutex);
174
175 kDebug() << srcPad->name() << "was unlinked.";
176 kDebug() << "Current thread:" << QThread::currentThread()
177 << "Main thread:" << QCoreApplication::instance()->thread();
178
179 BaseSinkController *ctrl = m_controllers.value(srcPad);
180
181 if (KDE_ISUNLIKELY(!ctrl)) {
182 //just in case unlinkAllPads() locked the mutex first...
183 kDebug() << "Looks like unlinkAllPads() wins...";
184 return;
185 }
186
187 //check if the controller still has not finished its initialization
188 QMutableHashIterator<uint, BaseSinkController*> it(m_controllersWaitingForContact);
189 while (it.hasNext()) {
190 it.next();
191 if (it.value() == ctrl) {
192 it.remove();
193 }
194 }
195
196 //release data now
197 releaseControllerData(ctrl);
198
199 //delete from the main thread, if we are not being called from the main thread
200 if (QThread::currentThread() != QCoreApplication::instance()->thread()) {
201 m_releasedControllers.insert(ctrl);
202 QMetaObject::invokeMethod(this, "destroyController", Qt::QueuedConnection,
203 Q_ARG(BaseSinkController*, ctrl));
204 } else {
205 Q_EMIT controllerDestroyed(ctrl);
206 delete ctrl;
207 }
208
209 m_controllers.remove(srcPad);
210 }
211
212 void BaseSinkManager::destroyController(BaseSinkController *controller)
213 {
214 Q_EMIT controllerDestroyed(controller);
215 delete controller;
216
217 m_mutex.lock();
218 m_releasedControllers.remove(controller);
219 m_mutex.unlock();
220 }
221
222 //END BaseSinkManager
223 //BEGIN AudioSinkManager
224
225 AudioSinkManager::AudioSinkManager(const QGst::PipelinePtr & pipeline, QObject *parent)
226 : BaseSinkManager(parent),
227 m_pipeline(pipeline),
228 m_sinkRefCount(0)
229 {
230 }
231
232 AudioSinkManager::~AudioSinkManager()
233 {
234 Q_ASSERT(m_sinkRefCount == 0);
235 }
236
237 BaseSinkController *AudioSinkManager::createController(const QGst::PadPtr & srcPad)
238 {
239 refSink();
240 AudioSinkController *ctrl = new AudioSinkController(m_adder->getRequestPad("sink%d"));
241 ctrl->initFromStreamingThread(srcPad, m_pipeline);
242 return ctrl;
243 }
244
245 void AudioSinkManager::releaseControllerData(BaseSinkController *ctrl)
246 {
247 AudioSinkController *actrl = static_cast<AudioSinkController*>(ctrl);
248 QGst::PadPtr adderRequestPad = actrl->adderRequestPad();
249
250 ctrl->releaseFromStreamingThread(m_pipeline);
251
252 m_adder->releaseRequestPad(adderRequestPad);
253 adderRequestPad.clear();
254
255 unrefSink();
256 }
257
258 void AudioSinkManager::refSink()
259 {
260 QMutexLocker l(&m_mutex);
261 if (m_sinkRefCount++ == 0) {
262 m_sink = DeviceElementFactory::makeAudioOutputElement();
263 if (!m_sink) {
264 kWarning() << "Failed to create audio sink. Using fakesink. "
265 "You will need to restart the call to get audio output.";
266 m_sink = QGst::ElementFactory::make("fakesink");
267 m_sink->setProperty("sync", false);
268 m_sink->setProperty("async", false);
269 m_sink->setProperty("silent", true);
270 m_sink->setProperty("enable-last-buffer", false);
271 }
272
273 m_adder = QGst::ElementFactory::make("liveadder");
274 if (!m_adder) {
275 kWarning() << "Failed to create liveadder. Using adder. This may cause trouble...";
276 m_adder = QGst::ElementFactory::make("adder");
277 }
278
279 m_pipeline->add(m_adder, m_sink);
280 m_adder->link(m_sink);
281 m_sink->syncStateWithParent();
282 m_adder->syncStateWithParent();
283 }
284 }
285
286 void AudioSinkManager::unrefSink()
287 {
288 QMutexLocker l(&m_mutex);
289 if (--m_sinkRefCount == 0) {
290 m_adder->unlink(m_sink);
291 m_adder->setState(QGst::StateNull);
292 m_sink->setState(QGst::StateNull);
293 m_pipeline->remove(m_adder);
294 m_pipeline->remove(m_sink);
295 m_adder.clear();
296 m_sink.clear();
297 }
298 }
299
300 //END AudioSinkManager
301 //BEGIN VideoSinkManager
302
303 VideoSinkManager::VideoSinkManager(const QGst::PipelinePtr & pipeline, QObject *parent)
304 : BaseSinkManager(parent),
305 m_pipeline(pipeline)
306 {
307 }
308
309 BaseSinkController *VideoSinkManager::createController(const QGst::PadPtr & srcPad)
310 {
311 VideoSinkController *ctrl = new VideoSinkController;
312 ctrl->initFromStreamingThread(srcPad, m_pipeline);
313 return ctrl;
314 }
315
316 void VideoSinkManager::releaseControllerData(BaseSinkController *ctrl)
317 {
318 ctrl->releaseFromStreamingThread(m_pipeline);
319 }
320
321 //END VideoSinkManager
322
323 #include "moc_sink-managers.cpp"
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef SINK_MANAGERS_H
18 #define SINK_MANAGERS_H
19
20 #include "sink-controllers.h"
21 #include <TelepathyQt/Types>
22 #include <TelepathyQt/CallContent>
23 #include <QGst/Pipeline>
24
25 class BaseSinkManager : public QObject
26 {
27 Q_OBJECT
28 public:
29 virtual ~BaseSinkManager();
30
31 /* This needs to be called before the destructor.
32 * It is a public function because it calls pure virtual functions internally,
33 * so it cannot be called from inside the destructor.
34 */
35 void unlinkAllPads();
36
37 /* Called from the streaming thread */
38 void handleNewSinkPad(uint contactHandle, const QGst::PadPtr & pad);
39
40 void setCallContent(const Tp::CallContentPtr & callContent);
41
42 protected:
43 explicit BaseSinkManager(QObject *parent = 0);
44
45 /* Called from the streaming thread to do the initial linking of srcPad to the sink */
46 virtual BaseSinkController *createController(const QGst::PadPtr & srcPad) = 0;
47
48 /* Called from the streaming thread when the src pad associated with ctrl is unlinked */
49 virtual void releaseControllerData(BaseSinkController *ctrl) = 0;
50
51 private Q_SLOTS:
52 void handleNewSinkPadAsync(uint contactHandle);
53 void onStreamAdded(const Tp::CallStreamPtr & stream);
54 void onRemoteSendingStateChanged(const QHash<Tp::ContactPtr, Tp::SendingState> & states);
55 void destroyController(BaseSinkController *controller);
56
57 private:
58 void checkForNewContacts(const QList<Tp::ContactPtr> & contacts);
59 /* Called from the streaming thread */
60 void onPadUnlinked(const QGst::PadPtr & srcPad);
61
62 Q_SIGNALS:
63 void controllerCreated(BaseSinkController *controller);
64 void controllerDestroyed(BaseSinkController *controller);
65
66 private:
67 Tp::CallContentPtr m_content;
68 QMutex m_mutex;
69 QHash<uint, BaseSinkController*> m_controllersWaitingForContact;
70 QHash<QGst::PadPtr, BaseSinkController*> m_controllers;
71 QSet<BaseSinkController*> m_releasedControllers;
72 };
73
74
75 class AudioSinkManager : public BaseSinkManager
76 {
77 Q_OBJECT
78 public:
79 AudioSinkManager(const QGst::PipelinePtr & pipeline, QObject *parent = 0);
80 virtual ~AudioSinkManager();
81
82 protected:
83 virtual BaseSinkController *createController(const QGst::PadPtr & srcPad);
84 virtual void releaseControllerData(BaseSinkController *priv);
85
86 private:
87 void refSink();
88 void unrefSink();
89
90 QMutex m_mutex;
91 QGst::PipelinePtr m_pipeline;
92 QGst::ElementPtr m_sink;
93 QGst::ElementPtr m_adder;
94 int m_sinkRefCount;
95 };
96
97
98 class VideoSinkManager : public BaseSinkManager
99 {
100 Q_OBJECT
101 public:
102 explicit VideoSinkManager(const QGst::PipelinePtr & pipeline, QObject *parent = 0);
103
104 protected:
105 virtual BaseSinkController *createController(const QGst::PadPtr & srcPad);
106 virtual void releaseControllerData(BaseSinkController *priv);
107
108 private:
109 QGst::PipelinePtr m_pipeline;
110 };
111
112 #endif //SINK_MANAGERS_H
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "source-controllers.h"
18 #include "device-element-factory.h"
19 #include <QGst/ElementFactory>
20 #include <QGst/GhostPad>
21 #include <QGst/Structure>
22 #include <QGst/Caps>
23 #include <QGst/Fraction>
24 #include <KDebug>
25
26 //BEGIN BaseSourceController
27
28 BaseSourceController::BaseSourceController(const QGst::PipelinePtr & pipeline)
29 : m_pipeline(pipeline),
30 m_inputCtrlBin(NULL)
31 {
32 }
33
34 BaseSourceController::~BaseSourceController()
35 {
36 if (m_inputCtrlBin) {
37 destroyBin();
38 }
39 }
40
41 QGst::PadPtr BaseSourceController::requestSrcPad()
42 {
43 if (!m_inputCtrlBin) {
44 createBin();
45 }
46
47 return m_inputCtrlBin->requestSrcPad();
48 }
49
50 void BaseSourceController::releaseSrcPad(const QGst::PadPtr & pad)
51 {
52 m_inputCtrlBin->releaseSrcPad(pad);
53 }
54
55 void BaseSourceController::connectToSource()
56 {
57 if (m_source.isNull()) {
58 //create the source
59 //TODO this should happen async, as some cameras take a long time to initialize
60 m_source = makeRealSource();
61 if (!m_source) {
62 return;
63 }
64 m_inputCtrlBin->connectSource(m_source);
65 }
66 //else we are already connected
67 }
68
69 void BaseSourceController::disconnectFromSource()
70 {
71 if (!m_source.isNull()) {
72 releaseRealSource(); //release any pointers that the subclass keeps
73
74 m_inputCtrlBin->disconnectSource();
75 m_source.clear();
76 }
77 //else we are already disconnected
78 }
79
80 void BaseSourceController::createBin()
81 {
82 m_inputCtrlBin = new InputControlBin(makeSilenceSource(), makeFilterBin());
83
84 // play
85 m_pipeline->add(m_inputCtrlBin->bin());
86 m_inputCtrlBin->bin()->syncStateWithParent();
87 }
88
89 void BaseSourceController::destroyBin()
90 {
91 disconnectFromSource();
92
93 m_inputCtrlBin->bin()->setState(QGst::StateNull);
94 m_pipeline->remove(m_inputCtrlBin->bin());
95
96 delete m_inputCtrlBin;
97 }
98
99 //END BaseSourceController
100 //BEGIN AudioSourceController
101
102 AudioSourceController::AudioSourceController(const QGst::PipelinePtr & pipeline)
103 : BaseSourceController(pipeline)
104 {
105 m_volumeController = new VolumeController;
106 }
107
108 AudioSourceController::~AudioSourceController()
109 {
110 delete m_volumeController;
111 }
112
113 VolumeController *AudioSourceController::volumeController() const
114 {
115 return m_volumeController;
116 }
117
118 QGst::ElementPtr AudioSourceController::makeSilenceSource()
119 {
120 QGst::ElementPtr src = QGst::ElementFactory::make("audiotestsrc");
121 src->setProperty("wave", 4); //generate silence
122 src->setProperty("is-live", true);
123 return src;
124 }
125
126 QGst::ElementPtr AudioSourceController::makeRealSource()
127 {
128 QGst::ElementPtr src = DeviceElementFactory::makeAudioCaptureElement();
129 if (!src) {
130 kDebug() << "Could not initialize audio capture device";
131 return QGst::ElementPtr();
132 }
133
134 QGst::BinPtr bin = QGst::Bin::create();
135 QGst::ElementPtr volume = QGst::ElementFactory::make("volume");
136 QGst::ElementPtr level = QGst::ElementFactory::make("level");
137
138 m_volumeController->setElement(volume.dynamicCast<QGst::StreamVolume>());
139
140 bin->add(src, volume, level);
141 QGst::Element::linkMany(src, volume, level);
142
143 bin->addPad(QGst::GhostPad::create(level->getStaticPad("src"), "src"));
144
145 return bin;
146 }
147
148 QGst::ElementPtr AudioSourceController::makeFilterBin()
149 {
150 return QGst::Bin::fromDescription(
151 "audiorate ! "
152 "capsfilter caps=\"audio/x-raw-int,rate=[8000,16000];audio/x-raw-float,rate=[8000,16000]\""
153 );
154 }
155
156 void AudioSourceController::releaseRealSource()
157 {
158 m_volumeController->setElement(QGst::StreamVolumePtr());
159 }
160
161 //END AudioSourceController
162 //BEGIN VideoSourceController
163
164 VideoSourceController::VideoSourceController(const QGst::PipelinePtr & pipeline)
165 : BaseSourceController(pipeline),
166 m_videoSinkBin(NULL)
167 {
168 }
169
170 VideoSourceController::~VideoSourceController()
171 {
172 unlinkVideoPreviewSink();
173 }
174
175 void VideoSourceController::linkVideoPreviewSink(const QGst::ElementPtr & sink)
176 {
177 kDebug();
178
179 QGst::PadPtr srcPad = requestSrcPad();
180 m_videoSinkBin = new VideoSinkBin(sink);
181
182 m_pipeline->add(m_videoSinkBin->bin());
183 m_videoSinkBin->bin()->syncStateWithParent();
184 srcPad->link(m_videoSinkBin->bin()->getStaticPad("sink"));
185 }
186
187 void VideoSourceController::unlinkVideoPreviewSink()
188 {
189 if (m_videoSinkBin) {
190 kDebug();
191
192 QGst::PadPtr sinkPad = m_videoSinkBin->bin()->getStaticPad("sink");
193 QGst::PadPtr srcPad = sinkPad->peer();
194
195 srcPad->unlink(sinkPad);
196 m_videoSinkBin->bin()->setState(QGst::StateNull);
197 m_pipeline->remove(m_videoSinkBin->bin());
198 delete m_videoSinkBin;
199 m_videoSinkBin = NULL;
200
201 releaseSrcPad(srcPad);
202 }
203 }
204
205 QGst::ElementPtr VideoSourceController::makeSilenceSource()
206 {
207 QGst::ElementPtr src = QGst::ElementFactory::make("videotestsrc");
208 src->setProperty("pattern", 2); //black picture
209 src->setProperty("is-live", true);
210 return src;
211 }
212
213 QGst::ElementPtr VideoSourceController::makeRealSource()
214 {
215 QGst::ElementPtr src = DeviceElementFactory::makeVideoCaptureElement();
216 if (!src) {
217 kDebug() << "Could not initialize video capture device";
218 return QGst::ElementPtr();
219 } else {
220 return src;
221 }
222
223 //TODO colorbalance support
224 // QGst::ElementPtr realSrc;
225 // QGst::BinPtr srcBin = src.dynamicCast<QGst::Bin>();
226 // if (srcBin) {
227 // realSrc = srcBin->childByIndex(0).dynamicCast<QGst::Element>();
228 // } else {
229 // realSrc = src;
230 // }
231 //
232 // QGst::ElementPtr videobalance;
233 // m_colorBalance = realSrc.dynamicCast<QGst::ColorBalance>();
234 // if (!m_colorBalance) {
235 // kDebug() << "Source does not support color balance";
236 // videobalance = QGst::ElementFactory::make("videobalance");
237 // m_colorBalance = videobalance.dynamicCast<QGst::ColorBalance>();
238 // }
239 }
240
241 QGst::ElementPtr VideoSourceController::makeFilterBin()
242 {
243 QGst::BinPtr bin = QGst::Bin::create();
244
245 //videomaxrate drops frames to support the 15fps restriction
246 //in the capsfilter if the camera cannot produce 15fps
247 QGst::ElementPtr videomaxrate = QGst::ElementFactory::make("videomaxrate");
248
249 //ffmpegcolorspace converts to yuv for postproc_tmpnoise
250 //to work if the camera cannot produce yuv
251 QGst::ElementPtr colorspace = QGst::ElementFactory::make("ffmpegcolorspace");
252
253 //videoscale supports the 320x240 restriction in the capsfilter
254 //if the camera cannot produce 320x240
255 QGst::ElementPtr videoscale = QGst::ElementFactory::make("videoscale");
256
257 //capsfilter restricts the output to 320x240 @ 15fps
258 QGst::ElementPtr capsfilter = QGst::ElementFactory::make("capsfilter");
259
260 //postproc_tmpnoise reduces video noise to improve quality
261 QGst::ElementPtr postproc = QGst::ElementFactory::make("postproc_tmpnoise");
262
263 QGst::Structure capsStruct("video/x-raw-yuv");
264 capsStruct.setValue("width", 320);
265 capsStruct.setValue("height", 240);
266 capsStruct.setValue("framerate", QGst::FractionRange(QGst::Fraction(0,1), QGst::Fraction(15,1)));
267
268 QGst::CapsPtr caps = QGst::Caps::createEmpty();
269 caps->appendStructure(capsStruct);
270 capsfilter->setProperty("caps", caps);
271
272 bin->add(colorspace, videoscale, capsfilter);
273
274 /* videomaxrate and postproc_tmpnoise are optional */
275 if (videomaxrate) {
276 bin->add(videomaxrate);
277 videomaxrate->link(colorspace);
278 bin->addPad(QGst::GhostPad::create(videomaxrate->getStaticPad("sink"), "sink"));
279 } else {
280 kDebug() << "NOT using videomaxrate";
281 bin->addPad(QGst::GhostPad::create(colorspace->getStaticPad("sink"), "sink"));
282 }
283
284 QGst::Element::linkMany(colorspace, videoscale, capsfilter);
285
286 if (postproc) {
287 bin->add(postproc);
288 capsfilter->link(postproc);
289 bin->addPad(QGst::GhostPad::create(postproc->getStaticPad("src"), "src"));
290 } else {
291 kDebug() << "NOT using postproc_tmpnoise";
292 bin->addPad(QGst::GhostPad::create(capsfilter->getStaticPad("src"), "src"));
293 }
294
295 return bin;
296 }
297
298 //END VideoSourceController
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef SOURCE_CONTROLLERS_H
18 #define SOURCE_CONTROLLERS_H
19
20 #include "../volume-controller.h"
21 #include "input-control-bin.h"
22 #include "video-sink-bin.h"
23
24 #include <QGst/Pipeline>
25 #include <QGst/Pad>
26
27 class BaseSourceController
28 {
29 public:
30 explicit BaseSourceController(const QGst::PipelinePtr & pipeline);
31 virtual ~BaseSourceController();
32
33 QGst::PadPtr requestSrcPad();
34 void releaseSrcPad(const QGst::PadPtr & pad);
35
36 void connectToSource();
37 void disconnectFromSource();
38
39 protected:
40 virtual QGst::ElementPtr makeSilenceSource() = 0;
41 virtual QGst::ElementPtr makeRealSource() = 0;
42 virtual QGst::ElementPtr makeFilterBin() = 0;
43 virtual void releaseRealSource() {}
44
45 QGst::PipelinePtr m_pipeline;
46
47 private:
48 void createBin();
49 void destroyBin();
50
51 QGst::ElementPtr m_source;
52 InputControlBin *m_inputCtrlBin;
53 };
54
55
56 class AudioSourceController : public BaseSourceController
57 {
58 public:
59 explicit AudioSourceController(const QGst::PipelinePtr & pipeline);
60 virtual ~AudioSourceController();
61
62 VolumeController *volumeController() const;
63 //TODO level monitor
64
65 protected:
66 virtual QGst::ElementPtr makeSilenceSource();
67 virtual QGst::ElementPtr makeRealSource();
68 virtual QGst::ElementPtr makeFilterBin();
69 virtual void releaseRealSource();
70
71 private:
72 VolumeController *m_volumeController;
73 };
74
75
76 class VideoSourceController : public BaseSourceController
77 {
78 public:
79 explicit VideoSourceController(const QGst::PipelinePtr & pipeline);
80 virtual ~VideoSourceController();
81
82 void linkVideoPreviewSink(const QGst::ElementPtr & sink);
83 void unlinkVideoPreviewSink();
84
85 protected:
86 virtual QGst::ElementPtr makeSilenceSource();
87 virtual QGst::ElementPtr makeRealSource();
88 virtual QGst::ElementPtr makeFilterBin();
89
90 private:
91 VideoSinkBin *m_videoSinkBin;
92 };
93
94 #endif // SOURCE_CONTROLLERS_H
0 /*
1 Copyright (C) 2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This library is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Lesser General Public
5 License as published by the Free Software Foundation; either
6 version 2.1 of the License, or (at your option) any later version.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Lesser General Public License for more details.
12
13 You should have received a copy of the GNU Lesser General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17 #include "video-sink-bin.h"
18 #include <QGst/ElementFactory>
19 #include <QGst/GhostPad>
20
21 VideoSinkBin::VideoSinkBin(const QGst::ElementPtr & videoSink)
22 {
23 m_bin = QGst::Bin::create();
24
25 QGst::ElementPtr queue = QGst::ElementFactory::make("queue");
26 QGst::ElementPtr colorspace = QGst::ElementFactory::make("ffmpegcolorspace");
27
28 m_bin->add(queue, colorspace, videoSink);
29
30 queue->link(colorspace);
31 colorspace->link(videoSink);
32
33 QGst::PadPtr sinkPad = queue->getStaticPad("sink");
34 QGst::PadPtr sinkGhostPad = QGst::GhostPad::create(sinkPad, "sink");
35 m_bin->addPad(sinkGhostPad);
36 }
37
38 VideoSinkBin::~VideoSinkBin()
39 {
40 }
41
0 /*
1 Copyright (C) 2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This library is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Lesser General Public
5 License as published by the Free Software Foundation; either
6 version 2.1 of the License, or (at your option) any later version.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Lesser General Public License for more details.
12
13 You should have received a copy of the GNU Lesser General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #ifndef VIDEO_SINK_BIN_H
17 #define VIDEO_SINK_BIN_H
18
19 #include <QGst/Bin>
20
21 class VideoSinkBin
22 {
23 Q_DISABLE_COPY(VideoSinkBin);
24 public:
25 explicit VideoSinkBin(const QGst::ElementPtr & videoSink);
26 virtual ~VideoSinkBin();
27
28 QGst::BinPtr bin() const { return m_bin; }
29
30 private:
31 QGst::BinPtr m_bin;
32 };
33
34 #endif // VIDEO_SINK_BIN_H
0 kde4_add_executable(configuration_test
1 configuration_test.cpp
2 ../private/device-element-factory.cpp
3 ../private/phonon-integration.cpp
4 )
5 target_link_libraries(configuration_test
6 ${KDE4_KDECORE_LIBS}
7 ${QT_QTDBUS_LIBRARY}
8 ${QTGSTREAMER_LIBRARIES}
9 )
10
11 kde4_add_executable(sourcetest sourcetest.cpp)
12 target_link_libraries(sourcetest ktpcall)
0 /*
1 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "../private/device-element-factory.h"
18 #include <QtCore/QCoreApplication>
19 #include <QGst/Init>
20 #include <QGst/Element>
21 #include <KDebug>
22
23 int main(int argc, char *argv[])
24 {
25 QCoreApplication a(argc, argv);
26 a.setApplicationName("configuration_test");
27
28 QGst::init();
29 QGst::ElementPtr element = DeviceElementFactory::makeAudioOutputElement();
30 if (!element) {
31 kDebug() << "Could not make audio output element";
32 } else {
33 element->setState(QGst::StateNull);
34 }
35
36 element = DeviceElementFactory::makeAudioCaptureElement();
37 if (!element) {
38 kDebug() << "Could not make audio capture element";
39 } else {
40 element->setState(QGst::StateNull);
41 }
42
43 element = DeviceElementFactory::makeVideoCaptureElement();
44 if (!element) {
45 kDebug() << "Could not make video capture element";
46 } else {
47 element->setState(QGst::StateNull);
48 }
49 }
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "../private/source-controllers.h"
18 #include <QGst/Init>
19 #include <QGst/Pipeline>
20 #include <QGst/Pad>
21 #include <QGst/ElementFactory>
22 #include <QtCore/QCoreApplication>
23 #include <KDebug>
24
25 int main(int argc, char **argv)
26 {
27 QCoreApplication app(argc, argv);
28 QGst::init(&argc, &argv);
29
30 QGst::PipelinePtr pipeline = QGst::Pipeline::create();
31
32 QGst::ElementPtr sink = QGst::ElementFactory::make("autoaudiosink");
33 sink->setState(QGst::StateReady);
34
35 pipeline->add(sink);
36 pipeline->setState(QGst::StatePlaying);
37
38 QGst::PadPtr sinkPad = sink->getStaticPad("sink");
39 QElapsedTimer timer;
40 AudioSourceController *sc = new AudioSourceController(pipeline);
41
42 kDebug() << "adding...";
43 timer.start();
44 QGst::PadPtr srcPad = sc->requestSrcPad();
45 srcPad->link(sinkPad);
46 kDebug() << "added" << timer.elapsed();
47
48 sleep(3);
49
50 kDebug() << "connecting...";
51 timer.restart();
52 sc->connectToSource();
53 kDebug() << "connected" << timer.elapsed();
54
55 sleep(3);
56
57 kDebug() << "disconnecting...";
58 timer.restart();
59 sc->disconnectFromSource();
60 kDebug() << "disconnected" << timer.elapsed();
61
62 sleep(3);
63
64 kDebug() << "connecting...";
65 timer.restart();
66 sc->connectToSource();
67 kDebug() << "connected" << timer.elapsed();
68
69 sleep(3);
70
71 kDebug() << "disconnecting...";
72 timer.restart();
73 sc->disconnectFromSource();
74 kDebug() << "disconnected" << timer.elapsed();
75
76 kDebug() << "removing...";
77 timer.restart();
78 srcPad->unlink(sinkPad);
79 sc->releaseSrcPad(srcPad);
80 kDebug() << "removed" << timer.elapsed();
81
82 delete sc;
83 pipeline->setState(QGst::StateNull);
84
85 return 0;
86 }
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "volume-controller.h"
18
19 VolumeController::VolumeController(QObject *parent)
20 : QObject(parent)
21 {
22 }
23
24 VolumeController::~VolumeController()
25 {
26 }
27
28 bool VolumeController::volumeControlSupported() const
29 {
30 return m_volumeControl;
31 }
32
33 uint VolumeController::volume() const
34 {
35 return m_volumeControl ? m_volumeControl->volume(QGst::StreamVolumeFormatCubic)*1000U : 0U;
36 }
37
38 void VolumeController::setVolume(uint vol)
39 {
40 if (m_volumeControl && volume() != vol) {
41 m_volumeControl->setVolume(qBound(0U, vol, 1000U)/1000.0, QGst::StreamVolumeFormatCubic);
42 Q_EMIT volumeChanged(volume());
43 }
44 }
45
46 bool VolumeController::isMuted() const
47 {
48 return m_volumeControl ? m_volumeControl->isMuted() : true;
49 }
50
51 void VolumeController::setMuted(bool muted)
52 {
53 if (m_volumeControl && isMuted() != muted) {
54 m_volumeControl->setMuted(muted);
55 Q_EMIT mutedChanged(isMuted());
56 }
57 }
58
59 QGst::StreamVolumePtr VolumeController::element() const
60 {
61 return m_volumeControl;
62 }
63
64 void VolumeController::setElement(const QGst::StreamVolumePtr & streamVolumeElement)
65 {
66 bool emitChanged = (!m_volumeControl && streamVolumeElement)
67 || (m_volumeControl && !streamVolumeElement);
68
69 m_volumeControl = streamVolumeElement;
70
71 if (emitChanged) {
72 Q_EMIT volumeControlSupportedChanged(volumeControlSupported());
73 Q_EMIT mutedChanged(isMuted());
74 Q_EMIT volumeChanged(volume());
75 }
76 }
77
78 #include "moc_volume-controller.cpp"
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef VOLUME_CONTROLLER_H
18 #define VOLUME_CONTROLLER_H
19
20 #include <QtCore/QObject>
21 #include <QGst/StreamVolume>
22
23 class VolumeController : public QObject
24 {
25 Q_OBJECT
26 Q_PROPERTY(bool volumeControlSupported READ volumeControlSupported
27 NOTIFY volumeControlSupportedChanged)
28 Q_PROPERTY(uint volume READ volume WRITE setVolume NOTIFY volumeChanged)
29 Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
30 public:
31 VolumeController(QObject *parent = 0);
32 virtual ~VolumeController();
33
34 bool volumeControlSupported() const;
35 uint volume() const;
36 bool isMuted() const;
37
38 QGst::StreamVolumePtr element() const;
39 void setElement(const QGst::StreamVolumePtr & streamVolumeElement);
40
41 public Q_SLOTS:
42 void setVolume(uint volume);
43 void setMuted(bool muted);
44
45 Q_SIGNALS:
46 void volumeControlSupportedChanged(bool isSupported);
47 void volumeChanged(uint newVolume);
48 void mutedChanged(bool isMuted);
49
50 private:
51 QGst::StreamVolumePtr m_volumeControl;
52 };
53
54 #endif // VOLUME_CONTROLLER_H
0 # This is *A LOT* of dependencies to find one by one,
1 # since gnome people like to include as many headers as possible
2 # in their public headers instead of doing forward declarations.
3 find_package(PkgConfig REQUIRED)
4 pkg_check_modules(TP_FARSTREAM REQUIRED telepathy-farstream)
5 pkg_check_modules(FARSTREAM REQUIRED farstream-0.1)
6
7 include_directories(
8 ${CMAKE_CURRENT_BINARY_DIR}
9 ${TP_FARSTREAM_INCLUDE_DIRS}
10 ${FARSTREAM_INCLUDE_DIRS}
11 ${TELEPATHY_QT4_FARSTREAM_INCLUDE_DIR}
12 )
13
14 add_definitions(
15 # These prevent gstreamer from including libxml2 headers
16 -DGST_DISABLE_XML
17 -DGST_DISABLE_LOADSAVE
18 )
19
20 kde4_add_library(qtf STATIC qtf.cpp)
21
22 target_link_libraries(qtf
23 ${QTGSTREAMER_LIBRARIES}
24 ${TP_FARSTREAM_LDFLAGS}
25 ${FARSTREAM_LDFLAGS}
26 ${TELEPATHY_QT4_FARSTREAM_LIBRARIES}
27 )
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "qtf.h"
18 #include <QGlib/Quark>
19 #include <QGst/Bin>
20 #include <TelepathyQt/Farstream/PendingChannel>
21 #include <telepathy-farstream/telepathy-farstream.h>
22 #include <farstream/fs-utils.h>
23 #include <farstream/fs-element-added-notifier.h>
24
25 //BEGIN generated code
26
27 //Autogenerated by the QtGStreamer helper code generator
28
29 #define REGISTER_TYPE_IMPLEMENTATION(T, GTYPE) \
30 namespace QGlib { \
31 GetTypeImpl<T>::operator Type() { return (GTYPE); } \
32 }
33
34 REGISTER_TYPE_IMPLEMENTATION(QTf::Channel,TF_TYPE_CHANNEL)
35
36 REGISTER_TYPE_IMPLEMENTATION(QTf::Content,TF_TYPE_CONTENT)
37
38 namespace QTf {
39 QGlib::RefCountedObject *Channel_new(void *instance)
40 {
41 QTf::Channel *cppClass = new QTf::Channel;
42 cppClass->m_object = instance;
43 return cppClass;
44 }
45 } //namespace QTf
46
47 namespace QTf {
48 QGlib::RefCountedObject *Content_new(void *instance)
49 {
50 QTf::Content *cppClass = new QTf::Content;
51 cppClass->m_object = instance;
52 return cppClass;
53 }
54 } //namespace QTf
55
56 namespace QTf {
57 namespace Private {
58 void registerWrapperConstructors()
59 {
60 QGlib::Quark q = QGlib::Quark::fromString("QGlib__wrapper_constructor");
61 QGlib::GetType<Channel>().setQuarkData(q, reinterpret_cast<void*>(&Channel_new));
62 QGlib::GetType<Content>().setQuarkData(q, reinterpret_cast<void*>(&Content_new));
63 }
64 } //namespace Private
65 } //namespace QTf
66
67 //END generated code
68
69
70 namespace QTf {
71
72 bool Channel::processBusMessage(const QGst::MessagePtr & message)
73 {
74 return tf_channel_bus_message(object<TfChannel>(), message);
75 }
76
77 void init()
78 {
79 Private::registerWrapperConstructors();
80 }
81
82 QGlib::ObjectPtr loadFsElementAddedNotifier(const QGst::ElementPtr & fsConference,
83 const QGst::BinPtr & pipeline)
84 {
85 GKeyFile *keyfile = fs_utils_get_default_element_properties(fsConference);
86
87 if (keyfile) {
88 FsElementAddedNotifier *notifier = fs_element_added_notifier_new();
89 fs_element_added_notifier_set_properties_from_keyfile(notifier, keyfile);
90 fs_element_added_notifier_add(notifier, pipeline);
91
92 return QGlib::ObjectPtr::wrap(G_OBJECT(notifier), false);
93 }
94
95 return QGlib::ObjectPtr();
96 }
97
98 PendingChannel::PendingChannel(const Tp::CallChannelPtr& callChannel)
99 : PendingOperation(callChannel)
100 {
101 Tp::Farstream::PendingChannel *p = Tp::Farstream::createChannel(callChannel);
102 connect(p, SIGNAL(finished(Tp::PendingOperation*)),
103 SLOT(onPendingTfChannelFinished(Tp::PendingOperation*)));
104 }
105
106 PendingChannel::~PendingChannel()
107 {
108 }
109
110 ChannelPtr PendingChannel::channel() const
111 {
112 return m_channel;
113 }
114
115 void PendingChannel::onPendingTfChannelFinished(Tp::PendingOperation *op)
116 {
117 if (op->isError()) {
118 setFinishedWithError(op->errorName(), op->errorMessage());
119 } else {
120 m_channel = ChannelPtr::wrap(qobject_cast<Tp::Farstream::PendingChannel*>(op)->tfChannel(), false);
121 setFinished();
122 }
123 }
124
125 } //namespace QTf
126
127 #include "qtf.moc"
0 /*
1 Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef QTF_H
18 #define QTF_H
19
20 /* This module is a wrapper for telepathy-farstream that
21 * uses the QtGLib/QtGStreamer bindings as a base. It could
22 * be built standalone and used in other projects in the future.
23 */
24
25 #include <QGlib/Object>
26 #include <QGst/Message>
27 #include <TelepathyQt/PendingOperation>
28 #include <TelepathyQt/CallChannel>
29
30 typedef struct _TfChannel TfChannel;
31 typedef struct _TfContent TfContent;
32
33 //for the moment, this is a static lib
34 #define QTF_EXPORT
35
36 #define QTF_WRAPPER(Class) \
37 QGLIB_WRAPPER_DECLARATION_MACRO(Class, Class, Tf, Class)
38
39 #define QTF_REGISTER_TYPE(Class) \
40 QGLIB_REGISTER_TYPE_WITH_EXPORT_MACRO(Class, QTF_EXPORT)
41
42 namespace QTf {
43
44 class Channel;
45 typedef QGlib::RefPointer<Channel> ChannelPtr;
46 class Content;
47 typedef QGlib::RefPointer<Content> ContentPtr;
48
49
50 /** Wrapper for TfChannel */
51 class QTF_EXPORT Channel : public QGlib::Object
52 {
53 QTF_WRAPPER(Channel)
54 public:
55 bool processBusMessage(const QGst::MessagePtr & message);
56 };
57
58
59 /** Wrapper for TfContent */
60 class QTF_EXPORT Content : public QGlib::Object
61 {
62 QTF_WRAPPER(Content)
63 };
64
65
66 /** Initializes telepathy-farstream and registers the
67 * QTf wrapper types with the QGlib type system */
68 QTF_EXPORT void init();
69
70
71 QTF_EXPORT QGlib::ObjectPtr loadFsElementAddedNotifier(
72 const QGst::ElementPtr & fsConference,
73 const QGst::BinPtr & pipeline);
74
75
76 /** Constructs a new QTf::Channel from a Tp::CallChannel */
77 class QTF_EXPORT PendingChannel : public Tp::PendingOperation
78 {
79 Q_OBJECT
80 public:
81 PendingChannel(const Tp::CallChannelPtr & callChannel);
82 virtual ~PendingChannel();
83
84 QTf::ChannelPtr channel() const;
85
86 private Q_SLOTS:
87 void onPendingTfChannelFinished(Tp::PendingOperation *op);
88
89 private:
90 QTf::ChannelPtr m_channel;
91 };
92
93
94 } //namespace QTf
95
96 QTF_REGISTER_TYPE(QTf::Channel)
97 QTF_REGISTER_TYPE(QTf::Content)
98
99 #endif // QTF_H
0 add_subdirectory( bg )
1 add_subdirectory( cs )
2 add_subdirectory( da )
3 add_subdirectory( de )
4 add_subdirectory( en_GB )
5 add_subdirectory( eo )
6 add_subdirectory( es )
7 add_subdirectory( et )
8 add_subdirectory( fr )
9 add_subdirectory( ga )
10 add_subdirectory( gl )
11 add_subdirectory( hu )
12 add_subdirectory( it )
13 add_subdirectory( ja )
14 add_subdirectory( km )
15 add_subdirectory( lt )
16 add_subdirectory( mai )
17 add_subdirectory( nds )
18 add_subdirectory( nl )
19 add_subdirectory( pl )
20 add_subdirectory( pt )
21 add_subdirectory( pt_BR )
22 add_subdirectory( sk )
23 add_subdirectory( sv )
24 add_subdirectory( th )
25 add_subdirectory( tr )
26 add_subdirectory( ug )
27 add_subdirectory( uk )
28 add_subdirectory( zh_TW )
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( bg ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of kcall.po to Bulgarian
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Yasen Pramatarov <yasen@lindeas.com>, 2009, 2010, 2011.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: kcall\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2011-07-22 13:40+0300\n"
11 "Last-Translator: Yasen Pramatarov <yasen@lindeas.com>\n"
12 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
13 "Language: bg\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Lokalize 1.2\n"
18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
20 #: src/approver.cpp:38
21 #, fuzzy
22 #| msgctxt "@action:inmenu"
23 #| msgid "Video call"
24 msgid "Incoming video call"
25 msgstr "Видео разговор"
26
27 #: src/approver.cpp:39
28 #, kde-format
29 msgid "<p>%1 is asking you for a video call</p>"
30 msgstr ""
31
32 #: src/approver.cpp:41
33 #, fuzzy
34 #| msgctxt "@action:inmenu"
35 #| msgid "Voice call"
36 msgid "Incoming call"
37 msgstr "Гласов разговор"
38
39 #: src/approver.cpp:42
40 #, fuzzy, kde-format
41 #| msgid "%1 is calling you"
42 msgid "<p>%1 is calling you</p>"
43 msgstr "%1 ви търси"
44
45 #: src/approver.cpp:58 src/approver.cpp:80
46 #, fuzzy
47 #| msgid "Answer"
48 msgctxt "action, answers the incoming call"
49 msgid "Answer"
50 msgstr "Отговаряне"
51
52 #: src/approver.cpp:59 src/approver.cpp:82
53 msgctxt "action, rejects the incoming call"
54 msgid "Reject"
55 msgstr ""
56
57 #: src/call-window.cpp:95
58 #, kde-format
59 msgid "Call with %1"
60 msgstr ""
61
62 #: src/call-window.cpp:109
63 msgctxt "@info:status"
64 msgid "Connecting..."
65 msgstr "Свързване…"
66
67 #: src/call-window.cpp:113
68 #, fuzzy
69 #| msgctxt "@info:status"
70 #| msgid "Ringing..."
71 msgctxt "@info:status the remote user's phone is ringing"
72 msgid "Ringing..."
73 msgstr "Звънене..."
74
75 #: src/call-window.cpp:117
76 msgctxt "@info:status"
77 msgid "Remote user accepted the call, waiting for connection..."
78 msgstr ""
79
80 #: src/call-window.cpp:120
81 msgctxt "@info:status"
82 msgid "Talking..."
83 msgstr "Разговор..."
84
85 #: src/call-window.cpp:136
86 msgctxt "@info:status"
87 msgid "Remote contact ended the call."
88 msgstr ""
89
90 #: src/call-window.cpp:143
91 msgctxt "@info:status"
92 msgid "Remote contact rejected the call."
93 msgstr ""
94
95 #: src/call-window.cpp:148
96 msgctxt "@info:status"
97 msgid "Remote contact didn't answer."
98 msgstr ""
99
100 #: src/call-window.cpp:152
101 msgctxt "@info:status"
102 msgid "Invalid number or contact."
103 msgstr ""
104
105 #: src/call-window.cpp:156
106 msgctxt "@info:status"
107 msgid "You don't have enough balance to make this call."
108 msgstr ""
109
110 #: src/call-window.cpp:158
111 msgctxt "@info:status"
112 msgid "You don't have permission to make this call."
113 msgstr ""
114
115 #: src/call-window.cpp:163
116 msgctxt "@info:status"
117 msgid "Remote contact is currently busy."
118 msgstr ""
119
120 #: src/call-window.cpp:167
121 msgctxt "@info:status"
122 msgid "Internal component error."
123 msgstr ""
124
125 #: src/call-window.cpp:170
126 msgctxt "@info:status"
127 msgid "Remote service error."
128 msgstr ""
129
130 #: src/call-window.cpp:173
131 msgctxt "@info:status"
132 msgid "Network error."
133 msgstr ""
134
135 #: src/call-window.cpp:177
136 msgctxt "@info:status"
137 msgid "Failed to negotiate codecs."
138 msgstr ""
139
140 #: src/call-window.cpp:179
141 msgctxt "@info:status"
142 msgid "Unsupported media type."
143 msgstr ""
144
145 #: src/call-window.cpp:183
146 #, fuzzy
147 #| msgctxt "@info:status"
148 #| msgid "Disconnected with error."
149 msgctxt "@info:status"
150 msgid "Connectivity error."
151 msgstr "Прекъснато с грешка."
152
153 #: src/call-window.cpp:187
154 #, fuzzy
155 #| msgctxt "Unknown audio or video system"
156 #| msgid "Unknown"
157 msgctxt "@info:status"
158 msgid "Unknown error."
159 msgstr "Неизвестно"
160
161 #: src/call-window.cpp:192
162 msgctxt "@info:status"
163 msgid "Disconnected."
164 msgstr "Връзката е прекъсната"
165
166 #: src/call-window.cpp:196
167 #, fuzzy, kde-format
168 #| msgctxt "@info:status"
169 #| msgid "Disconnected"
170 msgctxt "@info:status the call was disconnected because..."
171 msgid "Disconnected: %1"
172 msgstr "Изключено"
173
174 #: src/call-window.cpp:339
175 #, fuzzy
176 #| msgctxt "@action"
177 #| msgid "Send video"
178 msgctxt "@action"
179 msgid "Show my video"
180 msgstr "Изпращане на видео"
181
182 #: src/call-window.cpp:344
183 #, fuzzy
184 #| msgid "Show details"
185 msgctxt "@action"
186 msgid "Show dialpad"
187 msgstr "Допълнителни данни"
188
189 #: src/call-window.cpp:351
190 msgctxt "@action"
191 msgid "Send video"
192 msgstr "Изпращане на видео"
193
194 #: src/call-window.cpp:356 src/call-window.cpp:357
195 msgctxt "@action"
196 msgid "Mute"
197 msgstr ""
198
199 #: src/call-window.cpp:363
200 msgctxt "@action"
201 msgid "Hold"
202 msgstr ""
203
204 #: src/call-window.cpp:368
205 msgctxt "@action"
206 msgid "Hangup"
207 msgstr "Разкачване"
208
209 #: src/main.cpp:36
210 msgid "KDE Telepathy Call Ui"
211 msgstr ""
212
213 #: src/main.cpp:37
214 msgid "VoIP client for KDE"
215 msgstr ""
216
217 #: src/main.cpp:38
218 msgid "(C) 2009, George Kiagiadakis"
219 msgstr "(C) 2009, George Kiagiadakis"
220
221 #: src/main.cpp:40
222 msgctxt "@info:credit"
223 msgid "George Kiagiadakis"
224 msgstr "George Kiagiadakis"
225
226 #: rc.cpp:1
227 msgctxt "NAME OF TRANSLATORS"
228 msgid "Your names"
229 msgstr "Ясен Праматаров"
230
231 #: rc.cpp:2
232 msgctxt "EMAIL OF TRANSLATORS"
233 msgid "Your emails"
234 msgstr "yasen@lindeas.com"
235
236 #. i18n: file: src/callwindowui.rc:11
237 #. i18n: ectx: Menu (call)
238 #: rc.cpp:5
239 msgid "Call"
240 msgstr "Обаждане"
241
242 #. i18n: file: src/callwindowui.rc:20
243 #. i18n: ectx: Menu (media)
244 #: rc.cpp:8
245 msgid "Media"
246 msgstr ""
247
248 #. i18n: file: src/callwindowui.rc:27
249 #. i18n: ectx: ToolBar (mainToolBar)
250 #: rc.cpp:11
251 msgid "Main Toolbar"
252 msgstr "Главна лента с инструменти"
253
254 #. i18n: file: src/dtmf-widget.ui:17
255 #. i18n: ectx: property (text), widget (QPushButton, button1)
256 #: rc.cpp:14
257 msgid "1"
258 msgstr "1"
259
260 #. i18n: file: src/dtmf-widget.ui:24
261 #. i18n: ectx: property (text), widget (QPushButton, button2)
262 #: rc.cpp:17
263 msgid "2"
264 msgstr "2"
265
266 #. i18n: file: src/dtmf-widget.ui:31
267 #. i18n: ectx: property (text), widget (QPushButton, button3)
268 #: rc.cpp:20
269 msgid "3"
270 msgstr "3"
271
272 #. i18n: file: src/dtmf-widget.ui:38
273 #. i18n: ectx: property (text), widget (QPushButton, button4)
274 #: rc.cpp:23
275 msgid "4"
276 msgstr "4"
277
278 #. i18n: file: src/dtmf-widget.ui:45
279 #. i18n: ectx: property (text), widget (QPushButton, button5)
280 #: rc.cpp:26
281 msgid "5"
282 msgstr "5"
283
284 #. i18n: file: src/dtmf-widget.ui:52
285 #. i18n: ectx: property (text), widget (QPushButton, button6)
286 #: rc.cpp:29
287 msgid "6"
288 msgstr "6"
289
290 #. i18n: file: src/dtmf-widget.ui:59
291 #. i18n: ectx: property (text), widget (QPushButton, button7)
292 #: rc.cpp:32
293 msgid "7"
294 msgstr "7"
295
296 #. i18n: file: src/dtmf-widget.ui:66
297 #. i18n: ectx: property (text), widget (QPushButton, button8)
298 #: rc.cpp:35
299 msgid "8"
300 msgstr "8"
301
302 #. i18n: file: src/dtmf-widget.ui:73
303 #. i18n: ectx: property (text), widget (QPushButton, button9)
304 #: rc.cpp:38
305 msgid "9"
306 msgstr "9"
307
308 #. i18n: file: src/dtmf-widget.ui:80
309 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
310 #: rc.cpp:41
311 msgid "*"
312 msgstr "*"
313
314 #. i18n: file: src/dtmf-widget.ui:87
315 #. i18n: ectx: property (text), widget (QPushButton, button0)
316 #: rc.cpp:44
317 msgid "0"
318 msgstr "0"
319
320 #. i18n: file: src/dtmf-widget.ui:94
321 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
322 #: rc.cpp:47
323 msgid "#"
324 msgstr "#"
325
326 #~ msgid "Warning: %1"
327 #~ msgstr "Предупреждение: %1"
328
329 #~ msgid "Error: %1"
330 #~ msgstr "Грешка: %1"
331
332 #~ msgid "KCall"
333 #~ msgstr "KCall"
334
335 #~ msgid "Brightness"
336 #~ msgstr "Яркост"
337
338 #~ msgid "Contrast"
339 #~ msgstr "Контраст"
340
341 #~ msgid "Hue"
342 #~ msgstr "Нюанс"
343
344 #~ msgid "Saturation"
345 #~ msgstr "Насищане"
346
347 #~ msgid "Dialpad"
348 #~ msgstr "Циферблат"
349
350 #~ msgctxt "@action:inmenu"
351 #~ msgid "Show participants"
352 #~ msgstr "Показване на участниците"
353
354 #~ msgctxt "@action:inmenu"
355 #~ msgid "Show log"
356 #~ msgstr "Показване на дневника"
357
358 #~ msgctxt "@action"
359 #~ msgid "Stop sending video"
360 #~ msgstr "Спиране на видеото"
361
362 #~ msgctxt "@action:inmenu"
363 #~ msgid "Status"
364 #~ msgstr "Състояние"
365
366 #~ msgctxt "@action:inmenu"
367 #~ msgid "Available"
368 #~ msgstr "На линия"
369
370 #~ msgctxt "@action:inmenu"
371 #~ msgid "Away"
372 #~ msgstr "Отсъстващ"
373
374 #~ msgctxt "@action:inmenu"
375 #~ msgid "Be right back"
376 #~ msgstr "Връщам се веднага"
377
378 #~ msgctxt "@action:inmenu"
379 #~ msgid "Busy"
380 #~ msgstr "Зает"
381
382 #~ msgctxt "@action:inmenu"
383 #~ msgid "Do not disturb"
384 #~ msgstr "Не ме безпокойте!"
385
386 #~ msgctxt "@action:inmenu"
387 #~ msgid "Extended Away"
388 #~ msgstr "Отсъствам от доста време"
389
390 #~ msgctxt "@action:inmenu"
391 #~ msgid "Invisible"
392 #~ msgstr "Невидим"
393
394 #~ msgctxt "@action:inmenu"
395 #~ msgid "Offline"
396 #~ msgstr "Изключен"
397
398 #~ msgctxt "@info:status"
399 #~ msgid "Waiting for account information..."
400 #~ msgstr "Изчакване на данните на сметката..."
401
402 #~ msgctxt "protocol - display name (Connecting)"
403 #~ msgid "%1 - %2 (Connecting)"
404 #~ msgstr "%1 - %2 (Свързване)"
405
406 #~ msgctxt "protocol - display name"
407 #~ msgid "%1 - %2"
408 #~ msgstr "%1 - %2"
409
410 #~ msgctxt "@title:window"
411 #~ msgid "KCall"
412 #~ msgstr "KCall"
413
414 #~ msgctxt "@info:status"
415 #~ msgid "Connected"
416 #~ msgstr "Свързано"
417
418 #~ msgctxt "@action"
419 #~ msgid "Disconnect"
420 #~ msgstr "Изключване"
421
422 #~ msgctxt "@action"
423 #~ msgid "Cancel connection attempt"
424 #~ msgstr "Отказване на свързването"
425
426 #~ msgctxt "@action"
427 #~ msgid "Connect"
428 #~ msgstr "Свързване"
429
430 #~ msgid "Volume"
431 #~ msgstr "Сила на звука"
432
433 #~ msgid "Speakers"
434 #~ msgstr "Говорители"
435
436 #~ msgid "Microphone"
437 #~ msgstr "Микрофон"
438
439 #~ msgid "Video input"
440 #~ msgstr "Видео вход"
441
442 #~ msgid "Call log"
443 #~ msgstr "Дневник на обажданията"
444
445 #~ msgid "Participants"
446 #~ msgstr "Участници"
447
448 #~ msgctxt "@title:tab"
449 #~ msgid "&Contact list"
450 #~ msgstr "&Списък с контакти"
451
452 #~ msgid "Dial directly"
453 #~ msgstr "Директно набиране"
454
455 #~ msgid "Account"
456 #~ msgstr "Сметка"
457
458 #~ msgctxt "@info:status"
459 #~ msgid "Hanging up..."
460 #~ msgstr "Разкачване..."
461
462 #~ msgid "Audio input device"
463 #~ msgstr "Входно звуково устройство"
464
465 #~ msgid "Audio output device"
466 #~ msgstr "Изходно звуково устройство"
467
468 #~ msgid "Video input device"
469 #~ msgstr "Входно видео устройство"
470
471 #~ msgid "Video output driver"
472 #~ msgstr "Изходно видео устройство"
473
474 #~ msgid "Autodetect"
475 #~ msgstr "Автоматично откриване"
476
477 #~ msgid "Test input device"
478 #~ msgstr "Проба на входното устройство"
479
480 #~ msgctxt "autodetected audio or video system"
481 #~ msgid "Autodetected"
482 #~ msgstr "Автоматично открито"
483
484 #~ msgid "ALSA"
485 #~ msgstr "ALSA"
486
487 #~ msgid "OSS"
488 #~ msgstr "OSS"
489
490 #~ msgid "JACK"
491 #~ msgstr "JACK"
492
493 #~ msgid "PULSE"
494 #~ msgstr "PULSE"
495
496 #~ msgid "Video4Linux"
497 #~ msgstr "Video4Linux"
498
499 #~ msgid "Device name"
500 #~ msgstr "Име на устройство"
501
502 #~ msgid "Sound system"
503 #~ msgstr "Звукова система"
504
505 #~ msgid "Video system"
506 #~ msgstr "Видео система"
507
508 #~ msgctxt "test the device"
509 #~ msgid "Test"
510 #~ msgstr "Проба"
511
512 #~ msgctxt "stop audio/video test"
513 #~ msgid "Stop test"
514 #~ msgstr "Прекъсване на пробата"
515
516 #~ msgid "Hide details"
517 #~ msgstr "Скриване на подробностите"
518
519 #~ msgid "Timeout in seconds:"
520 #~ msgstr "Изчакване в секунди:"
521
522 #~ msgid "Ignore"
523 #~ msgstr "Пренебрегване"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( cs ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
1 # This file is distributed under the same license as the PACKAGE package.
2 # Vít Pelčák <vit@pelcak.org>, 2011, 2012.
3 #
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-02 11:41+0200\n"
10 "Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
11 "Language-Team: Czech <kde-i18n-doc@kde.org>\n"
12 "Language: cs\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17 "X-Generator: Lokalize 1.4\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr "Příchozí video hovor"
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr ""
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr "Příchozí hovor"
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr ""
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr "Odpověď"
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr "Odmítnout"
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr ""
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "Připojuji se..."
56
57 #: src/call-window.cpp:113
58 msgctxt "@info:status the remote user's phone is ringing"
59 msgid "Ringing..."
60 msgstr "Zvoní..."
61
62 #: src/call-window.cpp:117
63 msgctxt "@info:status"
64 msgid "Remote user accepted the call, waiting for connection..."
65 msgstr ""
66
67 #: src/call-window.cpp:120
68 msgctxt "@info:status"
69 msgid "Talking..."
70 msgstr "Hovořím..."
71
72 #: src/call-window.cpp:136
73 msgctxt "@info:status"
74 msgid "Remote contact ended the call."
75 msgstr ""
76
77 #: src/call-window.cpp:143
78 msgctxt "@info:status"
79 msgid "Remote contact rejected the call."
80 msgstr ""
81
82 #: src/call-window.cpp:148
83 msgctxt "@info:status"
84 msgid "Remote contact didn't answer."
85 msgstr ""
86
87 #: src/call-window.cpp:152
88 msgctxt "@info:status"
89 msgid "Invalid number or contact."
90 msgstr ""
91
92 #: src/call-window.cpp:156
93 msgctxt "@info:status"
94 msgid "You don't have enough balance to make this call."
95 msgstr ""
96
97 #: src/call-window.cpp:158
98 msgctxt "@info:status"
99 msgid "You don't have permission to make this call."
100 msgstr ""
101
102 #: src/call-window.cpp:163
103 msgctxt "@info:status"
104 msgid "Remote contact is currently busy."
105 msgstr ""
106
107 #: src/call-window.cpp:167
108 msgctxt "@info:status"
109 msgid "Internal component error."
110 msgstr ""
111
112 #: src/call-window.cpp:170
113 msgctxt "@info:status"
114 msgid "Remote service error."
115 msgstr ""
116
117 #: src/call-window.cpp:173
118 msgctxt "@info:status"
119 msgid "Network error."
120 msgstr "Chyba sítě."
121
122 #: src/call-window.cpp:177
123 msgctxt "@info:status"
124 msgid "Failed to negotiate codecs."
125 msgstr ""
126
127 #: src/call-window.cpp:179
128 msgctxt "@info:status"
129 msgid "Unsupported media type."
130 msgstr ""
131
132 #: src/call-window.cpp:183
133 msgctxt "@info:status"
134 msgid "Connectivity error."
135 msgstr ""
136
137 #: src/call-window.cpp:187
138 msgctxt "@info:status"
139 msgid "Unknown error."
140 msgstr "Neznámá chyba."
141
142 #: src/call-window.cpp:192
143 msgctxt "@info:status"
144 msgid "Disconnected."
145 msgstr "Odpojeno."
146
147 #: src/call-window.cpp:196
148 #, kde-format
149 msgctxt "@info:status the call was disconnected because..."
150 msgid "Disconnected: %1"
151 msgstr "Odpojen: %1"
152
153 #: src/call-window.cpp:339
154 msgctxt "@action"
155 msgid "Show my video"
156 msgstr "Zobrazit moje video"
157
158 #: src/call-window.cpp:344
159 msgctxt "@action"
160 msgid "Show dialpad"
161 msgstr "Zobrazit číselník"
162
163 #: src/call-window.cpp:351
164 msgctxt "@action"
165 msgid "Send video"
166 msgstr "Zaslat video"
167
168 #: src/call-window.cpp:356 src/call-window.cpp:357
169 msgctxt "@action"
170 msgid "Mute"
171 msgstr "Ztlumit"
172
173 #: src/call-window.cpp:363
174 msgctxt "@action"
175 msgid "Hold"
176 msgstr "Pozdržet"
177
178 #: src/call-window.cpp:368
179 msgctxt "@action"
180 msgid "Hangup"
181 msgstr "Zavěsit"
182
183 #: src/main.cpp:36
184 msgid "KDE Telepathy Call Ui"
185 msgstr ""
186
187 #: src/main.cpp:37
188 msgid "VoIP client for KDE"
189 msgstr "VoIP klient pro KDE"
190
191 #: src/main.cpp:38
192 msgid "(C) 2009, George Kiagiadakis"
193 msgstr "(C) 2009, George Kiagiadakis"
194
195 #: src/main.cpp:40
196 msgctxt "@info:credit"
197 msgid "George Kiagiadakis"
198 msgstr "George Kiagiadakis"
199
200 #: rc.cpp:1
201 msgctxt "NAME OF TRANSLATORS"
202 msgid "Your names"
203 msgstr "Tomáš Chvátal"
204
205 #: rc.cpp:2
206 msgctxt "EMAIL OF TRANSLATORS"
207 msgid "Your emails"
208 msgstr "tomas.chvatal@gmail.com"
209
210 #. i18n: file: src/callwindowui.rc:11
211 #. i18n: ectx: Menu (call)
212 #: rc.cpp:5
213 msgid "Call"
214 msgstr "Volání"
215
216 #. i18n: file: src/callwindowui.rc:20
217 #. i18n: ectx: Menu (media)
218 #: rc.cpp:8
219 msgid "Media"
220 msgstr "Média"
221
222 #. i18n: file: src/callwindowui.rc:27
223 #. i18n: ectx: ToolBar (mainToolBar)
224 #: rc.cpp:11
225 msgid "Main Toolbar"
226 msgstr "Hlavní nástrojová lišta"
227
228 #. i18n: file: src/dtmf-widget.ui:17
229 #. i18n: ectx: property (text), widget (QPushButton, button1)
230 #: rc.cpp:14
231 msgid "1"
232 msgstr "1"
233
234 #. i18n: file: src/dtmf-widget.ui:24
235 #. i18n: ectx: property (text), widget (QPushButton, button2)
236 #: rc.cpp:17
237 msgid "2"
238 msgstr "2"
239
240 #. i18n: file: src/dtmf-widget.ui:31
241 #. i18n: ectx: property (text), widget (QPushButton, button3)
242 #: rc.cpp:20
243 msgid "3"
244 msgstr "3"
245
246 #. i18n: file: src/dtmf-widget.ui:38
247 #. i18n: ectx: property (text), widget (QPushButton, button4)
248 #: rc.cpp:23
249 msgid "4"
250 msgstr "4"
251
252 #. i18n: file: src/dtmf-widget.ui:45
253 #. i18n: ectx: property (text), widget (QPushButton, button5)
254 #: rc.cpp:26
255 msgid "5"
256 msgstr "5"
257
258 #. i18n: file: src/dtmf-widget.ui:52
259 #. i18n: ectx: property (text), widget (QPushButton, button6)
260 #: rc.cpp:29
261 msgid "6"
262 msgstr "6"
263
264 #. i18n: file: src/dtmf-widget.ui:59
265 #. i18n: ectx: property (text), widget (QPushButton, button7)
266 #: rc.cpp:32
267 msgid "7"
268 msgstr "7"
269
270 #. i18n: file: src/dtmf-widget.ui:66
271 #. i18n: ectx: property (text), widget (QPushButton, button8)
272 #: rc.cpp:35
273 msgid "8"
274 msgstr "8"
275
276 #. i18n: file: src/dtmf-widget.ui:73
277 #. i18n: ectx: property (text), widget (QPushButton, button9)
278 #: rc.cpp:38
279 msgid "9"
280 msgstr "9"
281
282 #. i18n: file: src/dtmf-widget.ui:80
283 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
284 #: rc.cpp:41
285 msgid "*"
286 msgstr "*"
287
288 #. i18n: file: src/dtmf-widget.ui:87
289 #. i18n: ectx: property (text), widget (QPushButton, button0)
290 #: rc.cpp:44
291 msgid "0"
292 msgstr "0"
293
294 #. i18n: file: src/dtmf-widget.ui:94
295 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
296 #: rc.cpp:47
297 msgid "#"
298 msgstr "#"
299
300 #~ msgid "Warning: %1"
301 #~ msgstr "Varování: %1"
302
303 #~ msgid "Error: %1"
304 #~ msgstr "Chyba: %1"
305
306 #~ msgid "KCall"
307 #~ msgstr "KCall"
308
309 #~ msgid "Brightness"
310 #~ msgstr "Jas"
311
312 #~ msgid "Contrast"
313 #~ msgstr "Kontrast"
314
315 #~ msgid "Hue"
316 #~ msgstr "Tón"
317
318 #~ msgid "Saturation"
319 #~ msgstr "Nasycení"
320
321 #~ msgid "Dialpad"
322 #~ msgstr "Číselník"
323
324 #~ msgid "The audio input device could not be initialized"
325 #~ msgstr "Zařízení zvukového vstupu nemohlo být inicializováno"
326
327 #~ msgid "The video input device could not be initialized"
328 #~ msgstr "Zařízení video vstupu nemohlo být inicializováno"
329
330 #~ msgid ""
331 #~ "Could not create some of the required elements. Please check your "
332 #~ "GStreamer installation."
333 #~ msgstr ""
334 #~ "Nelze vytvořit některé požadované prvky. Prosím zkontrolujte vaši "
335 #~ "instalaci GStreamer."
336
337 #~ msgid "The audio output device could not be initialized"
338 #~ msgstr "Zařízení zvukového výstupu nemohlo být inicializováno"
339
340 #~ msgctxt "@action:inmenu"
341 #~ msgid "Show participants"
342 #~ msgstr "Zobrazit účastníky"
343
344 #~ msgctxt "@action:inmenu"
345 #~ msgid "Show log"
346 #~ msgstr "Zobrazit záznamy"
347
348 #~ msgctxt "@action"
349 #~ msgid "Stop sending video"
350 #~ msgstr "Zastavit zasílání videa"
351
352 #~ msgctxt "@action:inmenu"
353 #~ msgid "Status"
354 #~ msgstr "Stav"
355
356 #~ msgctxt "@action:inmenu"
357 #~ msgid "Available"
358 #~ msgstr "Dostupný"
359
360 #~ msgctxt "@action:inmenu"
361 #~ msgid "Away"
362 #~ msgstr "Pryč"
363
364 #~ msgctxt "@action:inmenu"
365 #~ msgid "Be right back"
366 #~ msgstr "Hned jsem zpátky"
367
368 #~ msgctxt "@action:inmenu"
369 #~ msgid "Busy"
370 #~ msgstr "Zaneprázdněn"
371
372 #~ msgctxt "@action:inmenu"
373 #~ msgid "Do not disturb"
374 #~ msgstr "Nerušit"
375
376 #~ msgctxt "@action:inmenu"
377 #~ msgid "Extended Away"
378 #~ msgstr "Rozšířené \"pryč\""
379
380 #~ msgctxt "@action:inmenu"
381 #~ msgid "Invisible"
382 #~ msgstr "Neviditelný"
383
384 #~ msgctxt "@action:inmenu"
385 #~ msgid "Offline"
386 #~ msgstr "Odpojen"
387
388 #~ msgctxt "@info:status"
389 #~ msgid "Waiting for account information..."
390 #~ msgstr "Čekám na informaci o účtu..."
391
392 #~ msgctxt "protocol - display name (Connecting)"
393 #~ msgid "%1 - %2 (Connecting)"
394 #~ msgstr "%1 - %2 (Připojuji se)"
395
396 #~ msgctxt "protocol - display name"
397 #~ msgid "%1 - %2"
398 #~ msgstr "%1 - %2"
399
400 #~ msgctxt "@title:window"
401 #~ msgid "KCall"
402 #~ msgstr "KCall"
403
404 #~ msgctxt "@info:status"
405 #~ msgid "Connected"
406 #~ msgstr "Připojen"
407
408 #~ msgctxt "@action"
409 #~ msgid "Disconnect"
410 #~ msgstr "Odpojit"
411
412 #~ msgctxt "@action"
413 #~ msgid "Cancel connection attempt"
414 #~ msgstr "Přerušit pokus o spojení"
415
416 #~ msgctxt "@action"
417 #~ msgid "Connect"
418 #~ msgstr "Připojit"
419
420 #~ msgid "Volume"
421 #~ msgstr "Hlasitost"
422
423 #~ msgid "Speakers"
424 #~ msgstr "Reproduktory"
425
426 #~ msgid "Microphone"
427 #~ msgstr "Mikrofon"
428
429 #~ msgid "Video controls"
430 #~ msgstr "Nastavení videa"
431
432 #~ msgid "Video input"
433 #~ msgstr "Vstup videa"
434
435 #~ msgid "Call log"
436 #~ msgstr "Záznam volání"
437
438 #~ msgid "Participants"
439 #~ msgstr "Účastníci"
440
441 #~ msgctxt "@title:tab"
442 #~ msgid "&Contact list"
443 #~ msgstr "&Seznam kontaktů"
444
445 #~ msgid "Dial directly"
446 #~ msgstr "Přímo vytočit"
447
448 #~ msgid "Account"
449 #~ msgstr "Účet"
450
451 #~ msgid "Dial (Audio only)"
452 #~ msgstr "Vytočit (pouze zvuk)"
453
454 #~ msgid "Dial (Audio/Video)"
455 #~ msgstr "Vytočit (obraz i zvuk)"
456
457 #~ msgid "ALSA"
458 #~ msgstr "ALSA"
459
460 #~ msgid "OSS"
461 #~ msgstr "OSS"
462
463 #~ msgid "JACK"
464 #~ msgstr "JACK"
465
466 #~ msgid "PULSE"
467 #~ msgstr "PULSE"
468
469 #~ msgid "Video4Linux"
470 #~ msgstr "Video4Linux"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( da ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Martin Schlander <mschlander@opensuse.org>, 2009, 2010, 2011, 2012.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-04 11:58+0200\n"
10 "Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
11 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
12 "Language: da\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.2\n"
17 "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr "Indkommende videoopkald"
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr "<p>%1 beder om et videoopkald</p>"
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr "Indkommende opkald"
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr "<p>%1 ringer til dig</p>"
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr "Svar"
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr "Afslå"
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr "Samtale med %1"
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "Forbinder..."
56
57 #: src/call-window.cpp:113
58 msgctxt "@info:status the remote user's phone is ringing"
59 msgid "Ringing..."
60 msgstr "Ringer..."
61
62 #: src/call-window.cpp:117
63 msgctxt "@info:status"
64 msgid "Remote user accepted the call, waiting for connection..."
65 msgstr "Den eksterne bruger accepterede opkaldet, afventer forbindelse"
66
67 #: src/call-window.cpp:120
68 msgctxt "@info:status"
69 msgid "Talking..."
70 msgstr "Taler..."
71
72 #: src/call-window.cpp:136
73 msgctxt "@info:status"
74 msgid "Remote contact ended the call."
75 msgstr "Den eksterne kontakt afsluttede samtalen."
76
77 #: src/call-window.cpp:143
78 msgctxt "@info:status"
79 msgid "Remote contact rejected the call."
80 msgstr "Den eksterne kontakt afslog opkaldet."
81
82 #: src/call-window.cpp:148
83 msgctxt "@info:status"
84 msgid "Remote contact didn't answer."
85 msgstr "Den eksterne kontakt tog ikke telefonen."
86
87 #: src/call-window.cpp:152
88 msgctxt "@info:status"
89 msgid "Invalid number or contact."
90 msgstr "Ugyldigt nummer eller kontakt."
91
92 #: src/call-window.cpp:156
93 msgctxt "@info:status"
94 msgid "You don't have enough balance to make this call."
95 msgstr "Din saldo er ikke stor nok til at foretage dette opkald."
96
97 #: src/call-window.cpp:158
98 msgctxt "@info:status"
99 msgid "You don't have permission to make this call."
100 msgstr "Du har ikke tilladelse til at foretage dette opkald."
101
102 #: src/call-window.cpp:163
103 msgctxt "@info:status"
104 msgid "Remote contact is currently busy."
105 msgstr "Den eksterne kontakt er optaget."
106
107 #: src/call-window.cpp:167
108 msgctxt "@info:status"
109 msgid "Internal component error."
110 msgstr "Fejl i intern komponent."
111
112 #: src/call-window.cpp:170
113 msgctxt "@info:status"
114 msgid "Remote service error."
115 msgstr "Fejl i ekstern tjeneste."
116
117 #: src/call-window.cpp:173
118 msgctxt "@info:status"
119 msgid "Network error."
120 msgstr "Netværksfejl."
121
122 #: src/call-window.cpp:177
123 msgctxt "@info:status"
124 msgid "Failed to negotiate codecs."
125 msgstr "Kunne ikke forhandle codecs."
126
127 #: src/call-window.cpp:179
128 msgctxt "@info:status"
129 msgid "Unsupported media type."
130 msgstr "Ikke-understøttet medietype."
131
132 #: src/call-window.cpp:183
133 msgctxt "@info:status"
134 msgid "Connectivity error."
135 msgstr "Forbindelsesfejl."
136
137 #: src/call-window.cpp:187
138 msgctxt "@info:status"
139 msgid "Unknown error."
140 msgstr "Ukendt fejl."
141
142 #: src/call-window.cpp:192
143 msgctxt "@info:status"
144 msgid "Disconnected."
145 msgstr "Forbindelse afbrudt."
146
147 #: src/call-window.cpp:196
148 #, kde-format
149 msgctxt "@info:status the call was disconnected because..."
150 msgid "Disconnected: %1"
151 msgstr "Forbindelse afbrudt: %1"
152
153 #: src/call-window.cpp:339
154 msgctxt "@action"
155 msgid "Show my video"
156 msgstr "Vis min video"
157
158 #: src/call-window.cpp:344
159 msgctxt "@action"
160 msgid "Show dialpad"
161 msgstr "Vis opkaldstastatur"
162
163 #: src/call-window.cpp:351
164 msgctxt "@action"
165 msgid "Send video"
166 msgstr "Send video"
167
168 #: src/call-window.cpp:356 src/call-window.cpp:357
169 msgctxt "@action"
170 msgid "Mute"
171 msgstr "Lydløs"
172
173 #: src/call-window.cpp:363
174 msgctxt "@action"
175 msgid "Hold"
176 msgstr "Hold"
177
178 #: src/call-window.cpp:368
179 msgctxt "@action"
180 msgid "Hangup"
181 msgstr "Læg på"
182
183 #: src/main.cpp:36
184 msgid "KDE Telepathy Call Ui"
185 msgstr "KDE Telepathy opkaldsbrugerflade"
186
187 #: src/main.cpp:37
188 msgid "VoIP client for KDE"
189 msgstr "VoIP-klient til KDE"
190
191 #: src/main.cpp:38
192 msgid "(C) 2009, George Kiagiadakis"
193 msgstr "(C) 2009, George Kiagiadakis"
194
195 #: src/main.cpp:40
196 msgctxt "@info:credit"
197 msgid "George Kiagiadakis"
198 msgstr "George Kiagiadakis"
199
200 #: rc.cpp:1
201 msgctxt "NAME OF TRANSLATORS"
202 msgid "Your names"
203 msgstr "Martin Schlander"
204
205 #: rc.cpp:2
206 msgctxt "EMAIL OF TRANSLATORS"
207 msgid "Your emails"
208 msgstr "mschlander@opensuse.org"
209
210 #. i18n: file: src/callwindowui.rc:11
211 #. i18n: ectx: Menu (call)
212 #: rc.cpp:5
213 msgid "Call"
214 msgstr "Opkald"
215
216 #. i18n: file: src/callwindowui.rc:20
217 #. i18n: ectx: Menu (media)
218 #: rc.cpp:8
219 msgid "Media"
220 msgstr "Medie"
221
222 #. i18n: file: src/callwindowui.rc:27
223 #. i18n: ectx: ToolBar (mainToolBar)
224 #: rc.cpp:11
225 msgid "Main Toolbar"
226 msgstr "Hovedværktøjslinje"
227
228 #. i18n: file: src/dtmf-widget.ui:17
229 #. i18n: ectx: property (text), widget (QPushButton, button1)
230 #: rc.cpp:14
231 msgid "1"
232 msgstr "1"
233
234 #. i18n: file: src/dtmf-widget.ui:24
235 #. i18n: ectx: property (text), widget (QPushButton, button2)
236 #: rc.cpp:17
237 msgid "2"
238 msgstr "2"
239
240 #. i18n: file: src/dtmf-widget.ui:31
241 #. i18n: ectx: property (text), widget (QPushButton, button3)
242 #: rc.cpp:20
243 msgid "3"
244 msgstr "3"
245
246 #. i18n: file: src/dtmf-widget.ui:38
247 #. i18n: ectx: property (text), widget (QPushButton, button4)
248 #: rc.cpp:23
249 msgid "4"
250 msgstr "4"
251
252 #. i18n: file: src/dtmf-widget.ui:45
253 #. i18n: ectx: property (text), widget (QPushButton, button5)
254 #: rc.cpp:26
255 msgid "5"
256 msgstr "5"
257
258 #. i18n: file: src/dtmf-widget.ui:52
259 #. i18n: ectx: property (text), widget (QPushButton, button6)
260 #: rc.cpp:29
261 msgid "6"
262 msgstr "6"
263
264 #. i18n: file: src/dtmf-widget.ui:59
265 #. i18n: ectx: property (text), widget (QPushButton, button7)
266 #: rc.cpp:32
267 msgid "7"
268 msgstr "7"
269
270 #. i18n: file: src/dtmf-widget.ui:66
271 #. i18n: ectx: property (text), widget (QPushButton, button8)
272 #: rc.cpp:35
273 msgid "8"
274 msgstr "8"
275
276 #. i18n: file: src/dtmf-widget.ui:73
277 #. i18n: ectx: property (text), widget (QPushButton, button9)
278 #: rc.cpp:38
279 msgid "9"
280 msgstr "9"
281
282 #. i18n: file: src/dtmf-widget.ui:80
283 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
284 #: rc.cpp:41
285 msgid "*"
286 msgstr "*"
287
288 #. i18n: file: src/dtmf-widget.ui:87
289 #. i18n: ectx: property (text), widget (QPushButton, button0)
290 #: rc.cpp:44
291 msgid "0"
292 msgstr "0"
293
294 #. i18n: file: src/dtmf-widget.ui:94
295 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
296 #: rc.cpp:47
297 msgid "#"
298 msgstr "#"
299
300 #~ msgid "Warning: %1"
301 #~ msgstr "Advarsel: %1"
302
303 #~ msgid "Error: %1"
304 #~ msgstr "Fejl: %1"
305
306 #~ msgid "KCall"
307 #~ msgstr "KCall"
308
309 #~ msgid "Brightness"
310 #~ msgstr "Lysstyrke"
311
312 #~ msgid "Contrast"
313 #~ msgstr "Kontrast"
314
315 #~ msgid "Hue"
316 #~ msgstr "Farvetone"
317
318 #~ msgid "Saturation"
319 #~ msgstr "Mætning"
320
321 #~ msgid "Dialpad"
322 #~ msgstr "Tasteplade"
323
324 #~ msgid ""
325 #~ "Defines whether the window should close automatically after a timeout "
326 #~ "when the call is over."
327 #~ msgstr ""
328 #~ "Definerer om vinduet skal lukke automatisk efter et tidsudløb når "
329 #~ "opkaldet er slut."
330
331 #~ msgid ""
332 #~ "Defines how many seconds the call window should remain visible after the "
333 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
334 #~ msgstr ""
335 #~ "Definerer hvor mange sekunder opkaldsvinduet skal forblive synligt efter "
336 #~ "opkaldet er slut. Denne indstilling afhænger af \"LukVedAfbrudtForbindelse"
337 #~ "\"."
338
339 #~ msgid "The audio input device could not be initialized"
340 #~ msgstr "Enheden til lyd-input kunne ikke initialiseres"
341
342 #~ msgid "The video input device could not be initialized"
343 #~ msgstr "Enheden til video-input kunne ikke initialiseres"
344
345 #~ msgid ""
346 #~ "Could not create some of the required elements. Please check your "
347 #~ "GStreamer installation."
348 #~ msgstr ""
349 #~ "Nogle af de påkrævede elementer kunne ikke oprettes. Kontrollér din "
350 #~ "GStreamer-installation."
351
352 #~ msgid "The audio output device could not be initialized"
353 #~ msgstr "Enheden til lyd-output kunne ikke initialiseres"
354
355 #~ msgctxt "@action:inmenu"
356 #~ msgid "Show participants"
357 #~ msgstr "Vis deltagere"
358
359 #~ msgctxt "@action:inmenu"
360 #~ msgid "Show log"
361 #~ msgstr "Vis log"
362
363 #~ msgctxt "@action"
364 #~ msgid "Stop sending video"
365 #~ msgstr "Stop afsendelse af video"
366
367 #~ msgctxt "@action:inmenu"
368 #~ msgid "Status"
369 #~ msgstr "Status"
370
371 #~ msgctxt "@action:inmenu"
372 #~ msgid "Available"
373 #~ msgstr "Tilgængelig"
374
375 #~ msgctxt "@action:inmenu"
376 #~ msgid "Away"
377 #~ msgstr "Borte"
378
379 #~ msgctxt "@action:inmenu"
380 #~ msgid "Be right back"
381 #~ msgstr "Er straks tilbage"
382
383 #~ msgctxt "@action:inmenu"
384 #~ msgid "Busy"
385 #~ msgstr "Optaget"
386
387 #~ msgctxt "@action:inmenu"
388 #~ msgid "Do not disturb"
389 #~ msgstr "Forstyr ikke"
390
391 #~ msgctxt "@action:inmenu"
392 #~ msgid "Extended Away"
393 #~ msgstr "Udvidet borte"
394
395 #~ msgctxt "@action:inmenu"
396 #~ msgid "Invisible"
397 #~ msgstr "Usynlig"
398
399 #~ msgctxt "@action:inmenu"
400 #~ msgid "Offline"
401 #~ msgstr "Offline"
402
403 #~ msgctxt "@info:status"
404 #~ msgid "Waiting for account information..."
405 #~ msgstr "Venter på kontoinformation..."
406
407 #~ msgctxt "protocol - display name (Connecting)"
408 #~ msgid "%1 - %2 (Connecting)"
409 #~ msgstr "%1 - %2 (forbinder)"
410
411 #~ msgctxt "protocol - display name"
412 #~ msgid "%1 - %2"
413 #~ msgstr "%1 - %2"
414
415 #~ msgctxt "@title:window"
416 #~ msgid "KCall"
417 #~ msgstr "KCall"
418
419 #~ msgctxt "@info:status"
420 #~ msgid "Connected"
421 #~ msgstr "Forbundet"
422
423 #~ msgctxt "@action"
424 #~ msgid "Disconnect"
425 #~ msgstr "Afbryd forbindelse"
426
427 #~ msgctxt "@action"
428 #~ msgid "Cancel connection attempt"
429 #~ msgstr "Annullér forbindelsesforsøg"
430
431 #~ msgctxt "@action"
432 #~ msgid "Connect"
433 #~ msgstr "Forbind"
434
435 #~ msgid ""
436 #~ "You have requested to close KCall. Note that KCall will not actually "
437 #~ "quit, but it will stay active in the system tray waiting for incoming "
438 #~ "calls."
439 #~ msgstr ""
440 #~ "Du har bedt om at lukke KCall. Bemærk at KCall faktisk ikke vil afslutte, "
441 #~ "men vil forblive aktiv i statusområdet og vente på indkommende opkald."
442
443 #~ msgid "Volume"
444 #~ msgstr "Lydstyrke"
445
446 #~ msgid "Speakers"
447 #~ msgstr "Højtalere"
448
449 #~ msgid "Microphone"
450 #~ msgstr "Mikrofon"
451
452 #~ msgid "Video controls"
453 #~ msgstr "Videokontroller"
454
455 #~ msgid "Video input"
456 #~ msgstr "Video-input"
457
458 #~ msgid "Call log"
459 #~ msgstr "Opkaldslog"
460
461 #~ msgid "Participants"
462 #~ msgstr "Deltagere"
463
464 #~ msgctxt "@title:tab"
465 #~ msgid "&Contact list"
466 #~ msgstr "&Kontaktliste"
467
468 #~ msgid "Dial directly"
469 #~ msgstr "Ring op direkte"
470
471 #~ msgid "Account"
472 #~ msgstr "Konto"
473
474 #~ msgid "Contact handle"
475 #~ msgstr "Kontaktnavn"
476
477 #~ msgid "Dial (Audio only)"
478 #~ msgstr "Ring op (kun lyd)"
479
480 #~ msgid "Dial (Audio/Video)"
481 #~ msgstr "Ring op (lyd/video)"
482
483 #~ msgctxt "@info:status"
484 #~ msgid "Hanging up..."
485 #~ msgstr "Lægger på..."
486
487 #~ msgid "Channel closed"
488 #~ msgstr "Kanal lukket"
489
490 #~ msgid "Channel closed with error: %1"
491 #~ msgstr "Kanal lukket med fejl: %1"
492
493 #~ msgid "Audio stream created. Stream id: %1."
494 #~ msgstr "Lyd-stream oprettet. Stream-id: %1."
495
496 #~ msgid "Video stream created. Stream id: %1."
497 #~ msgstr "Video-stream oprettet. Stream-id: %1."
498
499 #~ msgctxt "1 is the stream's id"
500 #~ msgid "Stream %1 direction is: %2."
501 #~ msgstr "Stream %1, retningen er: %2."
502
503 #~ msgctxt "1 is the stream's id"
504 #~ msgid "Stream %1 removed."
505 #~ msgstr "Stream %1 fjernet."
506
507 #~ msgctxt "1 is the stream's id"
508 #~ msgid "Stream %1 direction changed to: %2."
509 #~ msgstr "Retning på stream %1 ændret til: %2."
510
511 #~ msgctxt "1 is the stream's id"
512 #~ msgid "Stream %1 state changed to: %2."
513 #~ msgstr "Tilstand af stream %1 ændret til: %2."
514
515 #~ msgid "User %1 joined the conference."
516 #~ msgstr "Brugeren %1 gik med i konferencen."
517
518 #~ msgid "Awaiting answer from user %1."
519 #~ msgstr "Afventer svar fra brugeren %1."
520
521 #~ msgid "User %1 left the conference."
522 #~ msgstr "Brugeren %1 forlod konferencen."
523
524 #~ msgid "Audio input device"
525 #~ msgstr "Enhed til lyd-input"
526
527 #~ msgid "Audio output device"
528 #~ msgstr "Enhed til lyd-output"
529
530 #~ msgid "Video input device"
531 #~ msgstr "Enhed til video-input"
532
533 #~ msgid "Video output driver"
534 #~ msgstr "Driver til video-output"
535
536 #~ msgid "Xv video renderer"
537 #~ msgstr "Xv videorendering"
538
539 #~ msgid "X11 video renderer"
540 #~ msgstr "X11 videorendering"
541
542 #~ msgid "Autodetect"
543 #~ msgstr "Autodetektér"
544
545 #~ msgid "Test input device"
546 #~ msgstr "Test input-enhed"
547
548 #~ msgctxt "autodetected audio or video system"
549 #~ msgid "Autodetected"
550 #~ msgstr "Autodetekteret"
551
552 #~ msgid "ALSA"
553 #~ msgstr "ALSA"
554
555 #~ msgid "OSS"
556 #~ msgstr "OSS"
557
558 #~ msgid "JACK"
559 #~ msgstr "JACK"
560
561 #~ msgid "PULSE"
562 #~ msgstr "PULSE"
563
564 #~ msgid "Video4Linux"
565 #~ msgstr "Video4Linux"
566
567 #~ msgid "Device name"
568 #~ msgstr "Enhedsnavn"
569
570 #~ msgid "Sound system"
571 #~ msgstr "Lydsystem"
572
573 #~ msgid "Video system"
574 #~ msgstr "Videosystem"
575
576 #~ msgid "Gstreamer element"
577 #~ msgstr "GStreamer-element"
578
579 #~ msgid "Driver-specific handle"
580 #~ msgstr "Driver-specifikt navn"
581
582 #~ msgctxt "test the device"
583 #~ msgid "Test"
584 #~ msgstr "Test"
585
586 #~ msgid "Add custom device..."
587 #~ msgstr "Tilføj brugervalgt enhed..."
588
589 #~ msgid ""
590 #~ "The gstreamer element for the selected device could not be created. "
591 #~ "Please check your gstreamer installation."
592 #~ msgstr ""
593 #~ "GStreamer-elementet til den valgte enhed kunne ikke oprettes. Kontrollér "
594 #~ "din GStreamer-installation."
595
596 #~ msgid ""
597 #~ "The selected device could not be initialized. Please select another "
598 #~ "device."
599 #~ msgstr "Den valgte enhed kunne ikke initialiseres. Vælg en anden enhed."
600
601 #~ msgid ""
602 #~ "The gstreamer element for the audio output device could not be created. "
603 #~ "Please check your gstreamer installation"
604 #~ msgstr ""
605 #~ "GStreamer-elementet til den valgte enhed til lyd-output kunne ikke "
606 #~ "oprettes. Kontrollér din GStreamer-installation."
607
608 #~ msgid "The audio output device could not be initialized."
609 #~ msgstr "Enheden til lyd-output kunne ikke initialiseres."
610
611 #~ msgid "The video output driver could not be initialized."
612 #~ msgstr "Driveren til video-output kunne ikke initialiseres."
613
614 #~ msgid ""
615 #~ "The selected video output driver could not be initialized. Please select "
616 #~ "another driver."
617 #~ msgstr ""
618 #~ "Den valgte driver til video-output kunne ikke initialiseres. Vælg en "
619 #~ "anden driver."
620
621 #~ msgctxt "stop audio/video test"
622 #~ msgid "Stop test"
623 #~ msgstr "Stop test"
624
625 #~ msgid "Hide details"
626 #~ msgstr "Skjul detaljer"
627
628 #~ msgid "Automatically close the call window after a timeout"
629 #~ msgstr "Luk automatisk opkaldsvinduet efter et tidsudløb"
630
631 #~ msgid "Timeout in seconds:"
632 #~ msgstr "Tidsudløb i sekunder:"
633
634 #~ msgid ""
635 #~ "The gstreamer element for the audio input device could not be created. "
636 #~ "Please check your gstreamer installation"
637 #~ msgstr ""
638 #~ "GStreamer-elementet til enheden til lyd-input kunne ikke oprettes. "
639 #~ "Kontrollér din GStreamer-installation"
640
641 #~ msgid ""
642 #~ "The gstreamer element for the video input device could not be created. "
643 #~ "Please check your gstreamer installation."
644 #~ msgstr ""
645 #~ "GStreamer-elementet til enheden til video-input kunne ikke oprettes. "
646 #~ "Kontrollér din GStreamer-installation."
647
648 #~ msgid "Could not initialize the channel"
649 #~ msgstr "Kunne ikke initialisere kanalen"
650
651 #~ msgid "Ignore"
652 #~ msgstr "Ignorér"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( de ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # pano, 2010.
1 # Frederik Schwarzer <schwarzer@kde.org>, 2010, 2011, 2012.
2 # Burkhard Lück <lueck@hube-lueck.de>, 2011, 2012.
3 # Panagiotis Papadopoulos <pano_90@gmx.net>, 2011.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: ktp-call-ui\n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-29 00:08+0200\n"
10 "Last-Translator: Frederik Schwarzer <schwarzer@kde.org>\n"
11 "Language-Team: German <kde-i18n-de@kde.org>\n"
12 "Language: de\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.2\n"
17 "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr "Eingehender Video-Anruf"
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr ""
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr "Eingehender Anruf"
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr "<p>%1 ruft Sie an</p>"
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr "Annehmen"
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr "Ablehnen"
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr "Mit %1 anrufen"
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "Verbindungsaufbau ..."
56
57 #: src/call-window.cpp:113
58 msgctxt "@info:status the remote user's phone is ringing"
59 msgid "Ringing..."
60 msgstr "Es klingelt ..."
61
62 #: src/call-window.cpp:117
63 msgctxt "@info:status"
64 msgid "Remote user accepted the call, waiting for connection..."
65 msgstr ""
66 "Die Gegenstelle hat den Anruf angenommen. Die Verbindung wird aufgebaut ..."
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr "Es wird gesprochen ..."
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr "Die Gegenstelle hat den Anruf beendet."
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr "Die Gegenstelle hat den Anruf angelehnt."
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr "Die Gegenstelle hat nicht geantwortet."
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr "Ungültige Nummer oder Kontakt."
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr ""
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr ""
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr "Die Gegenstelle ist zurzeit beschäftigt."
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr "Fehler in interner Komponente."
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr ""
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr "Netzwerkfehler."
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr "Das Aushandeln eines Codecs ist fehlgeschlagen."
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr "Nicht unterstützter Medien-Typ."
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr "Verbindungsfehler."
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr "Unbekannter Fehler."
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr "Verbindung getrennt"
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr "Verbindung getrennt: %1"
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr "Mein Video anzeigen"
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr "Tastenblock anzeigen"
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr "Video senden"
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr "Stummschalten"
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr "Halten"
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr "Auflegen"
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr "Anrufoberfläche von KDE Telepathy"
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr "VoIP-Programm für KDE"
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr "© 2009, George Kiagiadakis"
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr "George Kiagiadakis"
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr "Panagiotis Papadopoulos"
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr "pano_90@gmx.net"
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr "Anruf"
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr "Medien"
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr "Haupt-Werkzeugleiste"
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr "1"
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr "2"
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr "3"
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr "4"
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr "5"
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr "6"
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr "7"
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr "8"
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr "9"
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr "*"
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr "0"
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr "#"
300
301 #~ msgid "Warning: %1"
302 #~ msgstr "Achtung: %1"
303
304 #~ msgid "Error: %1"
305 #~ msgstr "Fehler: %1"
306
307 #~ msgid "KCall"
308 #~ msgstr "KCall"
309
310 #~ msgid "Brightness"
311 #~ msgstr "Helligkeit"
312
313 #~ msgid "Contrast"
314 #~ msgstr "Kontrast"
315
316 #~ msgid "Hue"
317 #~ msgstr "Farbton"
318
319 #~ msgid "Saturation"
320 #~ msgstr "Sättigung"
321
322 #~ msgid "Dialpad"
323 #~ msgstr "Wähltasten"
324
325 #~ msgid ""
326 #~ "Defines whether the window should close automatically after a timeout "
327 #~ "when the call is over."
328 #~ msgstr ""
329 #~ "Bestimmt, ob das Fenster nach einer Zeitüberschreitung automatisch "
330 #~ "geschlossen wird, wenn der Anruf beendet ist."
331
332 #~ msgid ""
333 #~ "Defines how many seconds the call window should remain visible after the "
334 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
335 #~ msgstr ""
336 #~ "Bestimmt, wie viele Sekunden das Anruf-Fenster sichtbar bleiben soll, "
337 #~ "nachdem der Anruf beendet ist. Diese Option hängt ab von "
338 #~ "„CloseOnDisconnect“."
339
340 #~ msgid "The audio input device could not be initialized"
341 #~ msgstr "Das Audio-Eingabegerät kann nicht initialisiert werden."
342
343 #~ msgid "The video input device could not be initialized"
344 #~ msgstr "Das Video-Eingabegerät kann nicht initialisiert werden."
345
346 #~ msgid ""
347 #~ "Could not create some of the required elements. Please check your "
348 #~ "GStreamer installation."
349 #~ msgstr ""
350 #~ "Einige der benötigten Elemente können nicht erstellt werden. Bitte "
351 #~ "überprüfen Sie Ihre GStreamer-Installation."
352
353 #~ msgid "The audio output device could not be initialized"
354 #~ msgstr "Das Audio-Ausgabegerät kann nicht initialisiert werden."
355
356 #~ msgctxt "@action:inmenu"
357 #~ msgid "Show participants"
358 #~ msgstr "Teilnehmer anzeigen"
359
360 #~ msgctxt "@action:inmenu"
361 #~ msgid "Show log"
362 #~ msgstr "Protokoll anzeigen"
363
364 #~ msgctxt "@action"
365 #~ msgid "Stop sending video"
366 #~ msgstr "Senden von Video anhalten"
367
368 #~ msgctxt "@action:inmenu"
369 #~ msgid "Status"
370 #~ msgstr "Status"
371
372 #~ msgctxt "@action:inmenu"
373 #~ msgid "Available"
374 #~ msgstr "Verfügbar"
375
376 #~ msgctxt "@action:inmenu"
377 #~ msgid "Away"
378 #~ msgstr "Abwesend"
379
380 #~ msgctxt "@action:inmenu"
381 #~ msgid "Be right back"
382 #~ msgstr "Bin gleich zurück"
383
384 #~ msgctxt "@action:inmenu"
385 #~ msgid "Busy"
386 #~ msgstr "Beschäftigt"
387
388 #~ msgctxt "@action:inmenu"
389 #~ msgid "Do not disturb"
390 #~ msgstr "Bitte nicht stören"
391
392 #~ msgctxt "@action:inmenu"
393 #~ msgid "Extended Away"
394 #~ msgstr "Länger abwesend"
395
396 #~ msgctxt "@action:inmenu"
397 #~ msgid "Invisible"
398 #~ msgstr "Unsichtbar"
399
400 #~ msgctxt "@action:inmenu"
401 #~ msgid "Offline"
402 #~ msgstr "Offline"
403
404 #~ msgctxt "@info:status"
405 #~ msgid "Waiting for account information..."
406 #~ msgstr "Auf Zugangsinformationen warten ..."
407
408 #~ msgctxt "protocol - display name (Connecting)"
409 #~ msgid "%1 - %2 (Connecting)"
410 #~ msgstr "%1 – %2 (Verbindungsaufbau)"
411
412 #~ msgctxt "protocol - display name"
413 #~ msgid "%1 - %2"
414 #~ msgstr "%1 – %2"
415
416 #~ msgctxt "@title:window"
417 #~ msgid "KCall"
418 #~ msgstr "KCall"
419
420 #~ msgctxt "@info:status"
421 #~ msgid "Connected"
422 #~ msgstr "Verbunden"
423
424 #~ msgctxt "@action"
425 #~ msgid "Disconnect"
426 #~ msgstr "Verbindung trennen"
427
428 #~ msgctxt "@action"
429 #~ msgid "Cancel connection attempt"
430 #~ msgstr "Verbindungsversuch abbrechen"
431
432 #~ msgctxt "@action"
433 #~ msgid "Connect"
434 #~ msgstr "Verbinden"
435
436 #~ msgid ""
437 #~ "You have requested to close KCall. Note that KCall will not actually "
438 #~ "quit, but it will stay active in the system tray waiting for incoming "
439 #~ "calls."
440 #~ msgstr ""
441 #~ "Sie haben angefordert KCall zu schließen. Beachten Sie, dass KCall nicht "
442 #~ "beendet wird, sondern aktiv im Systemabschnitt der Kontrollleiste "
443 #~ "verweilt, um auf eingehende Anrufe zu warten."
444
445 #~ msgid "Volume"
446 #~ msgstr "Lautstärke"
447
448 #~ msgid "Speakers"
449 #~ msgstr "Lautsprecher"
450
451 #~ msgid "Microphone"
452 #~ msgstr "Mikrofon"
453
454 #~ msgid "Video controls"
455 #~ msgstr "Video-Einstellungen"
456
457 #~ msgid "Video input"
458 #~ msgstr "Videoeingabe"
459
460 #~ msgid "Call log"
461 #~ msgstr "Anruf-Protokoll"
462
463 #~ msgid "Participants"
464 #~ msgstr "Teilnehmer"
465
466 #~ msgctxt "@title:tab"
467 #~ msgid "&Contact list"
468 #~ msgstr "&Kontaktliste"
469
470 #~ msgid "Dial directly"
471 #~ msgstr "Direkt wählen"
472
473 #~ msgid "Account"
474 #~ msgstr "Zugang"
475
476 #~ msgid "Dial (Audio only)"
477 #~ msgstr "Wählen (Nur Audio)"
478
479 #~ msgid "Dial (Audio/Video)"
480 #~ msgstr "Wählen (Audio/Video)"
481
482 #~ msgid "User %1 joined the conference."
483 #~ msgstr "Der Benutzer %1 ist der Konferenz beigetreten."
484
485 #~ msgid "User %1 left the conference."
486 #~ msgstr "Der Benutzer %1 hat die Konferenz verlassen."
487
488 #~ msgid "Audio input device"
489 #~ msgstr "Audioeingabe-Gerät"
490
491 #~ msgid "Audio output device"
492 #~ msgstr "Audioausgabe-Gerät"
493
494 #~ msgid "Video input device"
495 #~ msgstr "Videoeingabe-Gerät"
496
497 #~ msgid "Video output driver"
498 #~ msgstr "Videoausgabe-Gerät"
499
500 #~ msgid "Xv video renderer"
501 #~ msgstr "Xv-Video-Renderer"
502
503 #~ msgid "X11 video renderer"
504 #~ msgstr "X11-Video-Renderer"
505
506 #~ msgid "Autodetect"
507 #~ msgstr "Automatisch erkennen"
508
509 #~ msgctxt "autodetected audio or video system"
510 #~ msgid "Autodetected"
511 #~ msgstr "Automatisch erkannt"
512
513 #~ msgid "ALSA"
514 #~ msgstr "ALSA"
515
516 #~ msgid "OSS"
517 #~ msgstr "OSS"
518
519 #~ msgid "JACK"
520 #~ msgstr "JACK"
521
522 #~ msgid "PULSE"
523 #~ msgstr "PULSE"
524
525 #~ msgid "Video4Linux"
526 #~ msgstr "Video4Linux"
527
528 #~ msgid "Device name"
529 #~ msgstr "Gerätename"
530
531 #~ msgid "Gstreamer element"
532 #~ msgstr "GStreamer-Element"
533
534 #~ msgctxt "test the device"
535 #~ msgid "Test"
536 #~ msgstr "Test"
537
538 #~ msgctxt "stop audio/video test"
539 #~ msgid "Stop test"
540 #~ msgstr "Test beenden"
541
542 #~ msgid "Hide details"
543 #~ msgstr "Details ausblenden"
544
545 #~ msgid "Ignore"
546 #~ msgstr "Ignorieren"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( en_GB ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Andrew Coles <andrew_coles@yahoo.co.uk>, 2009.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2009-11-14 12:16+0000\n"
10 "Last-Translator: Andrew Coles <andrew_coles@yahoo.co.uk>\n"
11 "Language-Team: British English <kde-i18n-doc@kde.org>\n"
12 "Language: \n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.0\n"
17 "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
19 #: src/approver.cpp:38
20 #, fuzzy
21 #| msgctxt "@action:inmenu"
22 #| msgid "Video call"
23 msgid "Incoming video call"
24 msgstr "Video call"
25
26 #: src/approver.cpp:39
27 #, kde-format
28 msgid "<p>%1 is asking you for a video call</p>"
29 msgstr ""
30
31 #: src/approver.cpp:41
32 #, fuzzy
33 #| msgctxt "@action:inmenu"
34 #| msgid "Voice call"
35 msgid "Incoming call"
36 msgstr "Voice call"
37
38 #: src/approver.cpp:42
39 #, fuzzy, kde-format
40 #| msgid "%1 is calling you"
41 msgid "<p>%1 is calling you</p>"
42 msgstr "%1 is calling you"
43
44 #: src/approver.cpp:58 src/approver.cpp:80
45 #, fuzzy
46 #| msgid "Answer"
47 msgctxt "action, answers the incoming call"
48 msgid "Answer"
49 msgstr "Answer"
50
51 #: src/approver.cpp:59 src/approver.cpp:82
52 msgctxt "action, rejects the incoming call"
53 msgid "Reject"
54 msgstr ""
55
56 #: src/call-window.cpp:95
57 #, kde-format
58 msgid "Call with %1"
59 msgstr ""
60
61 #: src/call-window.cpp:109
62 msgctxt "@info:status"
63 msgid "Connecting..."
64 msgstr "Connecting..."
65
66 #: src/call-window.cpp:113
67 #, fuzzy
68 #| msgctxt "@info:status"
69 #| msgid "Ringing..."
70 msgctxt "@info:status the remote user's phone is ringing"
71 msgid "Ringing..."
72 msgstr "Ringing..."
73
74 #: src/call-window.cpp:117
75 msgctxt "@info:status"
76 msgid "Remote user accepted the call, waiting for connection..."
77 msgstr ""
78
79 #: src/call-window.cpp:120
80 msgctxt "@info:status"
81 msgid "Talking..."
82 msgstr "Talking..."
83
84 #: src/call-window.cpp:136
85 msgctxt "@info:status"
86 msgid "Remote contact ended the call."
87 msgstr ""
88
89 #: src/call-window.cpp:143
90 msgctxt "@info:status"
91 msgid "Remote contact rejected the call."
92 msgstr ""
93
94 #: src/call-window.cpp:148
95 msgctxt "@info:status"
96 msgid "Remote contact didn't answer."
97 msgstr ""
98
99 #: src/call-window.cpp:152
100 msgctxt "@info:status"
101 msgid "Invalid number or contact."
102 msgstr ""
103
104 #: src/call-window.cpp:156
105 msgctxt "@info:status"
106 msgid "You don't have enough balance to make this call."
107 msgstr ""
108
109 #: src/call-window.cpp:158
110 msgctxt "@info:status"
111 msgid "You don't have permission to make this call."
112 msgstr ""
113
114 #: src/call-window.cpp:163
115 msgctxt "@info:status"
116 msgid "Remote contact is currently busy."
117 msgstr ""
118
119 #: src/call-window.cpp:167
120 msgctxt "@info:status"
121 msgid "Internal component error."
122 msgstr ""
123
124 #: src/call-window.cpp:170
125 msgctxt "@info:status"
126 msgid "Remote service error."
127 msgstr ""
128
129 #: src/call-window.cpp:173
130 msgctxt "@info:status"
131 msgid "Network error."
132 msgstr ""
133
134 #: src/call-window.cpp:177
135 msgctxt "@info:status"
136 msgid "Failed to negotiate codecs."
137 msgstr ""
138
139 #: src/call-window.cpp:179
140 msgctxt "@info:status"
141 msgid "Unsupported media type."
142 msgstr ""
143
144 #: src/call-window.cpp:183
145 #, fuzzy
146 #| msgctxt "@info:status"
147 #| msgid "Disconnected with error."
148 msgctxt "@info:status"
149 msgid "Connectivity error."
150 msgstr "Disconnected with error."
151
152 #: src/call-window.cpp:187
153 #, fuzzy
154 #| msgctxt "Unknown audio or video system"
155 #| msgid "Unknown"
156 msgctxt "@info:status"
157 msgid "Unknown error."
158 msgstr "Unknown"
159
160 #: src/call-window.cpp:192
161 msgctxt "@info:status"
162 msgid "Disconnected."
163 msgstr "Disconnected."
164
165 #: src/call-window.cpp:196
166 #, fuzzy, kde-format
167 #| msgctxt "@info:status"
168 #| msgid "Disconnected"
169 msgctxt "@info:status the call was disconnected because..."
170 msgid "Disconnected: %1"
171 msgstr "Disconnected"
172
173 #: src/call-window.cpp:339
174 #, fuzzy
175 #| msgctxt "@action"
176 #| msgid "Send video"
177 msgctxt "@action"
178 msgid "Show my video"
179 msgstr "Send video"
180
181 #: src/call-window.cpp:344
182 #, fuzzy
183 #| msgid "Show details"
184 msgctxt "@action"
185 msgid "Show dialpad"
186 msgstr "Show details"
187
188 #: src/call-window.cpp:351
189 msgctxt "@action"
190 msgid "Send video"
191 msgstr "Send video"
192
193 #: src/call-window.cpp:356 src/call-window.cpp:357
194 msgctxt "@action"
195 msgid "Mute"
196 msgstr ""
197
198 #: src/call-window.cpp:363
199 msgctxt "@action"
200 msgid "Hold"
201 msgstr ""
202
203 #: src/call-window.cpp:368
204 msgctxt "@action"
205 msgid "Hangup"
206 msgstr "Hangup"
207
208 #: src/main.cpp:36
209 msgid "KDE Telepathy Call Ui"
210 msgstr ""
211
212 #: src/main.cpp:37
213 msgid "VoIP client for KDE"
214 msgstr "VoIP client for KDE"
215
216 #: src/main.cpp:38
217 msgid "(C) 2009, George Kiagiadakis"
218 msgstr "(C) 2009, George Kiagiadakis"
219
220 #: src/main.cpp:40
221 msgctxt "@info:credit"
222 msgid "George Kiagiadakis"
223 msgstr "George Kiagiadakis"
224
225 #: rc.cpp:1
226 msgctxt "NAME OF TRANSLATORS"
227 msgid "Your names"
228 msgstr "Andrew Coles"
229
230 #: rc.cpp:2
231 msgctxt "EMAIL OF TRANSLATORS"
232 msgid "Your emails"
233 msgstr "andrew_coles@yahoo.co.uk"
234
235 #. i18n: file: src/callwindowui.rc:11
236 #. i18n: ectx: Menu (call)
237 #: rc.cpp:5
238 msgid "Call"
239 msgstr "Call"
240
241 #. i18n: file: src/callwindowui.rc:20
242 #. i18n: ectx: Menu (media)
243 #: rc.cpp:8
244 msgid "Media"
245 msgstr ""
246
247 #. i18n: file: src/callwindowui.rc:27
248 #. i18n: ectx: ToolBar (mainToolBar)
249 #: rc.cpp:11
250 msgid "Main Toolbar"
251 msgstr "Main Toolbar"
252
253 #. i18n: file: src/dtmf-widget.ui:17
254 #. i18n: ectx: property (text), widget (QPushButton, button1)
255 #: rc.cpp:14
256 msgid "1"
257 msgstr "1"
258
259 #. i18n: file: src/dtmf-widget.ui:24
260 #. i18n: ectx: property (text), widget (QPushButton, button2)
261 #: rc.cpp:17
262 msgid "2"
263 msgstr "2"
264
265 #. i18n: file: src/dtmf-widget.ui:31
266 #. i18n: ectx: property (text), widget (QPushButton, button3)
267 #: rc.cpp:20
268 msgid "3"
269 msgstr "3"
270
271 #. i18n: file: src/dtmf-widget.ui:38
272 #. i18n: ectx: property (text), widget (QPushButton, button4)
273 #: rc.cpp:23
274 msgid "4"
275 msgstr "4"
276
277 #. i18n: file: src/dtmf-widget.ui:45
278 #. i18n: ectx: property (text), widget (QPushButton, button5)
279 #: rc.cpp:26
280 msgid "5"
281 msgstr "5"
282
283 #. i18n: file: src/dtmf-widget.ui:52
284 #. i18n: ectx: property (text), widget (QPushButton, button6)
285 #: rc.cpp:29
286 msgid "6"
287 msgstr "6"
288
289 #. i18n: file: src/dtmf-widget.ui:59
290 #. i18n: ectx: property (text), widget (QPushButton, button7)
291 #: rc.cpp:32
292 msgid "7"
293 msgstr "7"
294
295 #. i18n: file: src/dtmf-widget.ui:66
296 #. i18n: ectx: property (text), widget (QPushButton, button8)
297 #: rc.cpp:35
298 msgid "8"
299 msgstr "8"
300
301 #. i18n: file: src/dtmf-widget.ui:73
302 #. i18n: ectx: property (text), widget (QPushButton, button9)
303 #: rc.cpp:38
304 msgid "9"
305 msgstr "9"
306
307 #. i18n: file: src/dtmf-widget.ui:80
308 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
309 #: rc.cpp:41
310 msgid "*"
311 msgstr "*"
312
313 #. i18n: file: src/dtmf-widget.ui:87
314 #. i18n: ectx: property (text), widget (QPushButton, button0)
315 #: rc.cpp:44
316 msgid "0"
317 msgstr "0"
318
319 #. i18n: file: src/dtmf-widget.ui:94
320 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
321 #: rc.cpp:47
322 msgid "#"
323 msgstr "#"
324
325 #~ msgid "Warning: %1"
326 #~ msgstr "Warning: %1"
327
328 #~ msgid "Error: %1"
329 #~ msgstr "Error: %1"
330
331 #~ msgid "KCall"
332 #~ msgstr "KCall"
333
334 #~ msgid "Brightness"
335 #~ msgstr "Brightness"
336
337 #~ msgid "Contrast"
338 #~ msgstr "Contrast"
339
340 #~ msgid "Hue"
341 #~ msgstr "Hue"
342
343 #~ msgid "Saturation"
344 #~ msgstr "Saturation"
345
346 #~ msgid "Dialpad"
347 #~ msgstr "Dialpad"
348
349 #~ msgid ""
350 #~ "Defines whether the window should close automatically after a timeout "
351 #~ "when the call is over."
352 #~ msgstr ""
353 #~ "Defines whether the window should close automatically after a timeout "
354 #~ "when the call is over."
355
356 #~ msgid ""
357 #~ "Defines how many seconds the call window should remain visible after the "
358 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
359 #~ msgstr ""
360 #~ "Defines how many seconds the call window should remain visible after the "
361 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
362
363 #~ msgid "The audio input device could not be initialized"
364 #~ msgstr "The audio input device could not be initialised"
365
366 #, fuzzy
367 #~| msgid "The video input device could not be initialized."
368 #~ msgid "The video input device could not be initialized"
369 #~ msgstr "The video input device could not be initialised."
370
371 #, fuzzy
372 #~| msgid ""
373 #~| "Some gstreamer elements could not be created. Please check your "
374 #~| "gstreamer installation."
375 #~ msgid ""
376 #~ "Could not create some of the required elements. Please check your "
377 #~ "GStreamer installation."
378 #~ msgstr ""
379 #~ "Some gstreamer elements could not be created. Please check your gstreamer "
380 #~ "installation."
381
382 #~ msgid "The audio output device could not be initialized"
383 #~ msgstr "The audio output device could not be initialised"
384
385 #~ msgctxt "@action:inmenu"
386 #~ msgid "Show participants"
387 #~ msgstr "Show participants"
388
389 #~ msgctxt "@action:inmenu"
390 #~ msgid "Show log"
391 #~ msgstr "Show log"
392
393 #~ msgctxt "@action"
394 #~ msgid "Stop sending video"
395 #~ msgstr "Stop sending video"
396
397 #~ msgctxt "@action:inmenu"
398 #~ msgid "Status"
399 #~ msgstr "Status"
400
401 #~ msgctxt "@action:inmenu"
402 #~ msgid "Available"
403 #~ msgstr "Available"
404
405 #~ msgctxt "@action:inmenu"
406 #~ msgid "Away"
407 #~ msgstr "Away"
408
409 #~ msgctxt "@action:inmenu"
410 #~ msgid "Be right back"
411 #~ msgstr "Be right back"
412
413 #~ msgctxt "@action:inmenu"
414 #~ msgid "Busy"
415 #~ msgstr "Busy"
416
417 #~ msgctxt "@action:inmenu"
418 #~ msgid "Do not disturb"
419 #~ msgstr "Do not disturb"
420
421 #~ msgctxt "@action:inmenu"
422 #~ msgid "Extended Away"
423 #~ msgstr "Extended Away"
424
425 #~ msgctxt "@action:inmenu"
426 #~ msgid "Invisible"
427 #~ msgstr "Invisible"
428
429 #~ msgctxt "@action:inmenu"
430 #~ msgid "Offline"
431 #~ msgstr "Offline"
432
433 #~ msgctxt "@info:status"
434 #~ msgid "Waiting for account information..."
435 #~ msgstr "Waiting for account information..."
436
437 #~ msgctxt "protocol - display name (Connecting)"
438 #~ msgid "%1 - %2 (Connecting)"
439 #~ msgstr "%1 - %2 (Connecting)"
440
441 #~ msgctxt "protocol - display name"
442 #~ msgid "%1 - %2"
443 #~ msgstr "%1 - %2"
444
445 #~ msgctxt "@title:window"
446 #~ msgid "KCall"
447 #~ msgstr "KCall"
448
449 #~ msgctxt "@info:status"
450 #~ msgid "Connected"
451 #~ msgstr "Connected"
452
453 #~ msgctxt "@action"
454 #~ msgid "Disconnect"
455 #~ msgstr "Disconnect"
456
457 #~ msgctxt "@action"
458 #~ msgid "Cancel connection attempt"
459 #~ msgstr "Cancel connection attempt"
460
461 #~ msgctxt "@action"
462 #~ msgid "Connect"
463 #~ msgstr "Connect"
464
465 #~ msgid ""
466 #~ "You have requested to close KCall. Note that KCall will not actually "
467 #~ "quit, but it will stay active in the system tray waiting for incoming "
468 #~ "calls."
469 #~ msgstr ""
470 #~ "You have requested to close KCall. Note that KCall will not actually "
471 #~ "quit, but it will stay active in the system tray waiting for incoming "
472 #~ "calls."
473
474 #~ msgid "Volume"
475 #~ msgstr "Volume"
476
477 #~ msgid "Speakers"
478 #~ msgstr "Speakers"
479
480 #~ msgid "Microphone"
481 #~ msgstr "Microphone"
482
483 #~ msgid "Video controls"
484 #~ msgstr "Video controls"
485
486 #~ msgid "Video input"
487 #~ msgstr "Video input"
488
489 #~ msgid "Call log"
490 #~ msgstr "Call log"
491
492 #~ msgid "Participants"
493 #~ msgstr "Participants"
494
495 #~ msgctxt "@title:tab"
496 #~ msgid "&Contact list"
497 #~ msgstr "&Contact list"
498
499 #~ msgid "Dial directly"
500 #~ msgstr "Dial directly"
501
502 #~ msgid "Account"
503 #~ msgstr "Account"
504
505 #~ msgid "Contact handle"
506 #~ msgstr "Contact handle"
507
508 #~ msgid "Dial (Audio only)"
509 #~ msgstr "Dial (Audio only)"
510
511 #~ msgid "Dial (Audio/Video)"
512 #~ msgstr "Dial (Audio/Video)"
513
514 #~ msgctxt "@info:status"
515 #~ msgid "Hanging up..."
516 #~ msgstr "Hanging up..."
517
518 #~ msgid "Channel closed"
519 #~ msgstr "Channel closed"
520
521 #~ msgid "Channel closed with error: %1"
522 #~ msgstr "Channel closed with error: %1"
523
524 #~ msgid "Audio stream created. Stream id: %1."
525 #~ msgstr "Audio stream created. Stream id: %1."
526
527 #~ msgid "Video stream created. Stream id: %1."
528 #~ msgstr "Video stream created. Stream id: %1."
529
530 #~ msgctxt "1 is the stream's id"
531 #~ msgid "Stream %1 direction is: %2."
532 #~ msgstr "Stream %1 direction is: %2."
533
534 #~ msgctxt "1 is the stream's id"
535 #~ msgid "Stream %1 removed."
536 #~ msgstr "Stream %1 removed."
537
538 #~ msgctxt "1 is the stream's id"
539 #~ msgid "Stream %1 direction changed to: %2."
540 #~ msgstr "Stream %1 direction changed to: %2."
541
542 #~ msgctxt "1 is the stream's id"
543 #~ msgid "Stream %1 state changed to: %2."
544 #~ msgstr "Stream %1 state changed to: %2."
545
546 #~ msgid "User %1 joined the conference."
547 #~ msgstr "User %1 joined the conference."
548
549 #~ msgid "Awaiting answer from user %1."
550 #~ msgstr "Awaiting answer from user %1."
551
552 #~ msgid "User %1 left the conference."
553 #~ msgstr "User %1 left the conference."
554
555 #~ msgid "Audio input device"
556 #~ msgstr "Audio input device"
557
558 #~ msgid "Audio output device"
559 #~ msgstr "Audio output device"
560
561 #~ msgid "Video input device"
562 #~ msgstr "Video input device"
563
564 #~ msgid "Video output driver"
565 #~ msgstr "Video output driver"
566
567 #~ msgid "Xv video renderer"
568 #~ msgstr "Xv video renderer"
569
570 #~ msgid "X11 video renderer"
571 #~ msgstr "X11 video renderer"
572
573 #~ msgid "Autodetect"
574 #~ msgstr "Autodetect"
575
576 #~ msgid "Test input device"
577 #~ msgstr "Test input device"
578
579 #~ msgctxt "autodetected audio or video system"
580 #~ msgid "Autodetected"
581 #~ msgstr "Autodetected"
582
583 #~ msgid "ALSA"
584 #~ msgstr "ALSA"
585
586 #~ msgid "OSS"
587 #~ msgstr "OSS"
588
589 #~ msgid "JACK"
590 #~ msgstr "JACK"
591
592 #~ msgid "PULSE"
593 #~ msgstr "PULSE"
594
595 #~ msgid "Video4Linux"
596 #~ msgstr "Video4Linux"
597
598 #~ msgid "Device name"
599 #~ msgstr "Device name"
600
601 #~ msgid "Sound system"
602 #~ msgstr "Sound system"
603
604 #~ msgid "Video system"
605 #~ msgstr "Video system"
606
607 #~ msgid "Gstreamer element"
608 #~ msgstr "Gstreamer element"
609
610 #~ msgid "Driver-specific handle"
611 #~ msgstr "Driver-specific handle"
612
613 #~ msgctxt "test the device"
614 #~ msgid "Test"
615 #~ msgstr "Test"
616
617 #~ msgid "Add custom device..."
618 #~ msgstr "Add custom device..."
619
620 #~ msgid ""
621 #~ "The gstreamer element for the selected device could not be created. "
622 #~ "Please check your gstreamer installation."
623 #~ msgstr ""
624 #~ "The gstreamer element for the selected device could not be created. "
625 #~ "Please check your gstreamer installation."
626
627 #~ msgid ""
628 #~ "The selected device could not be initialized. Please select another "
629 #~ "device."
630 #~ msgstr ""
631 #~ "The selected device could not be initialised. Please select another "
632 #~ "device."
633
634 #~ msgid ""
635 #~ "The gstreamer element for the audio output device could not be created. "
636 #~ "Please check your gstreamer installation"
637 #~ msgstr ""
638 #~ "The gstreamer element for the audio output device could not be created. "
639 #~ "Please check your gstreamer installation"
640
641 #~ msgid "The audio output device could not be initialized."
642 #~ msgstr "The audio output device could not be initialised."
643
644 #~ msgid "The video output driver could not be initialized."
645 #~ msgstr "The video output driver could not be initialised."
646
647 #~ msgid ""
648 #~ "The selected video output driver could not be initialized. Please select "
649 #~ "another driver."
650 #~ msgstr ""
651 #~ "The selected video output driver could not be initialised. Please select "
652 #~ "another driver."
653
654 #~ msgctxt "stop audio/video test"
655 #~ msgid "Stop test"
656 #~ msgstr "Stop test"
657
658 #~ msgid "Hide details"
659 #~ msgstr "Hide details"
660
661 #~ msgid "Automatically close the call window after a timeout"
662 #~ msgstr "Automatically close the call window after a timeout"
663
664 #~ msgid "Timeout in seconds:"
665 #~ msgstr "Timeout in seconds:"
666
667 #~ msgid ""
668 #~ "The gstreamer element for the audio input device could not be created. "
669 #~ "Please check your gstreamer installation"
670 #~ msgstr ""
671 #~ "The gstreamer element for the audio input device could not be created. "
672 #~ "Please check your gstreamer installation"
673
674 #~ msgid ""
675 #~ "The gstreamer element for the video input device could not be created. "
676 #~ "Please check your gstreamer installation."
677 #~ msgstr ""
678 #~ "The gstreamer element for the video input device could not be created. "
679 #~ "Please check your gstreamer installation."
680
681 #~ msgid "Could not initialize the channel"
682 #~ msgstr "Could not initialise the channel"
683
684 #~ msgid "Ignore"
685 #~ msgstr "Ignore"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( eo ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Translation of kcall into esperanto.
1 # Axel Rousseau <axel@esperanto-jeunes.org>, 2009.
2 #
3 msgid ""
4 msgstr ""
5 "Project-Id-Version: kcall\n"
6 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
7 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
8 "PO-Revision-Date: 2009-11-15 12:06+0100\n"
9 "Last-Translator: Axel Rousseau <axel@esperanto-jeunes.org>\n"
10 "Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
11 "Language: \n"
12 "MIME-Version: 1.0\n"
13 "Content-Type: text/plain; charset=UTF-8\n"
14 "Content-Transfer-Encoding: 8bit\n"
15 "X-Generator: pology\n"
16 "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
18 #: src/approver.cpp:38
19 msgid "Incoming video call"
20 msgstr ""
21
22 #: src/approver.cpp:39
23 #, kde-format
24 msgid "<p>%1 is asking you for a video call</p>"
25 msgstr ""
26
27 #: src/approver.cpp:41
28 msgid "Incoming call"
29 msgstr ""
30
31 #: src/approver.cpp:42
32 #, kde-format
33 msgid "<p>%1 is calling you</p>"
34 msgstr ""
35
36 #: src/approver.cpp:58 src/approver.cpp:80
37 #, fuzzy
38 #| msgid "Answer"
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr "Respondo"
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr ""
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr ""
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr ""
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr ""
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr ""
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr ""
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr ""
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr ""
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr ""
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr ""
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr ""
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr ""
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr ""
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr ""
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr ""
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr ""
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr ""
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr ""
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr ""
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr ""
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr ""
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr ""
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr ""
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr ""
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr ""
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr ""
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr ""
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr ""
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr ""
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr ""
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr ""
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr "George Kiagiadakis"
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr "Axel Rousseau"
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr "axel@esperanto-jeunes.org"
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr "Voko"
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr ""
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr "Ĉefa ilobreto"
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr "1"
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr "2"
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr "3"
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr "4"
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr "5"
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr "6"
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr "7"
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr "8"
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr "9"
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr "*"
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr "0"
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr "#"
300
301 #~ msgid "Error: %1"
302 #~ msgstr "Eraro: %1"
303
304 #~ msgid "Contrast"
305 #~ msgstr "Kontrasto"
306
307 #~ msgid "Hue"
308 #~ msgstr "Nuanco"
309
310 #~ msgid "Saturation"
311 #~ msgstr "Satureco"
312
313 #~ msgctxt "protocol - display name"
314 #~ msgid "%1 - %2"
315 #~ msgstr "%1 - %2"
316
317 #~ msgid "Volume"
318 #~ msgstr "Laŭteco"
319
320 #~ msgid "Microphone"
321 #~ msgstr "Mikrofono"
322
323 #~ msgid "Account"
324 #~ msgstr "Konto"
325
326 #~ msgid "ALSA"
327 #~ msgstr "ALSA"
328
329 #~ msgid "OSS"
330 #~ msgstr "OSS"
331
332 #~ msgid "JACK"
333 #~ msgstr "JACK"
334
335 #~ msgid "PULSE"
336 #~ msgstr "PULSE"
337
338 #~ msgid "Video4Linux"
339 #~ msgstr "Video4Linux"
340
341 #~ msgid "Device name"
342 #~ msgstr "Aparatnomo"
343
344 #~ msgid "Ignore"
345 #~ msgstr "Ignori"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( es ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of kcall.po to Spanish
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Eloy Cuadra <ecuadra@eloihr.net>, 2009, 2011, 2012.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: kcall\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2012-05-11 14:16+0200\n"
11 "Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
12 "Language-Team: Spanish <kde-l10n-es@kde.org>\n"
13 "Language: es\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "com>\n"
18 "X-Generator: Lokalize 1.4\n"
19 "Plural-Forms: nplurals=2; plural=n != 1;\n"
20
21 #: src/approver.cpp:38
22 msgid "Incoming video call"
23 msgstr "Llamada de vídeo entrante"
24
25 #: src/approver.cpp:39
26 #, kde-format
27 msgid "<p>%1 is asking you for a video call</p>"
28 msgstr "<p>%1 le está pidiendo una llamada de vídeo</p>"
29
30 #: src/approver.cpp:41
31 msgid "Incoming call"
32 msgstr "Llamada entrante"
33
34 #: src/approver.cpp:42
35 #, kde-format
36 msgid "<p>%1 is calling you</p>"
37 msgstr "<p>%1 le está llamando</p>"
38
39 #: src/approver.cpp:58 src/approver.cpp:80
40 msgctxt "action, answers the incoming call"
41 msgid "Answer"
42 msgstr "Responder"
43
44 #: src/approver.cpp:59 src/approver.cpp:82
45 msgctxt "action, rejects the incoming call"
46 msgid "Reject"
47 msgstr "Rechazar"
48
49 #: src/call-window.cpp:95
50 #, kde-format
51 msgid "Call with %1"
52 msgstr "Llamar con %1"
53
54 #: src/call-window.cpp:109
55 msgctxt "@info:status"
56 msgid "Connecting..."
57 msgstr "Conectando..."
58
59 #: src/call-window.cpp:113
60 msgctxt "@info:status the remote user's phone is ringing"
61 msgid "Ringing..."
62 msgstr "Sonando..."
63
64 #: src/call-window.cpp:117
65 msgctxt "@info:status"
66 msgid "Remote user accepted the call, waiting for connection..."
67 msgstr "El usuario remoto ha aceptado la llamada. Esperando conexión..."
68
69 #: src/call-window.cpp:120
70 msgctxt "@info:status"
71 msgid "Talking..."
72 msgstr "Hablando..."
73
74 #: src/call-window.cpp:136
75 msgctxt "@info:status"
76 msgid "Remote contact ended the call."
77 msgstr "El contacto remoto ha finalizado la llamada."
78
79 #: src/call-window.cpp:143
80 msgctxt "@info:status"
81 msgid "Remote contact rejected the call."
82 msgstr "El contacto remoto ha rechazado la llamada."
83
84 #: src/call-window.cpp:148
85 msgctxt "@info:status"
86 msgid "Remote contact didn't answer."
87 msgstr "El contacto remoto no ha respondido."
88
89 #: src/call-window.cpp:152
90 msgctxt "@info:status"
91 msgid "Invalid number or contact."
92 msgstr "Número o contacto no válidos."
93
94 #: src/call-window.cpp:156
95 msgctxt "@info:status"
96 msgid "You don't have enough balance to make this call."
97 msgstr "No tiene suficiente saldo para hacer esta llamada."
98
99 #: src/call-window.cpp:158
100 msgctxt "@info:status"
101 msgid "You don't have permission to make this call."
102 msgstr "No tiene permiso para hacer esta llamada."
103
104 #: src/call-window.cpp:163
105 msgctxt "@info:status"
106 msgid "Remote contact is currently busy."
107 msgstr "El contacto remoto está ocupado."
108
109 #: src/call-window.cpp:167
110 msgctxt "@info:status"
111 msgid "Internal component error."
112 msgstr "Error de componente interno."
113
114 #: src/call-window.cpp:170
115 msgctxt "@info:status"
116 msgid "Remote service error."
117 msgstr "Error del servicio remoto."
118
119 #: src/call-window.cpp:173
120 msgctxt "@info:status"
121 msgid "Network error."
122 msgstr "Error de red."
123
124 #: src/call-window.cpp:177
125 msgctxt "@info:status"
126 msgid "Failed to negotiate codecs."
127 msgstr "La negociación de códecs ha fallado."
128
129 #: src/call-window.cpp:179
130 msgctxt "@info:status"
131 msgid "Unsupported media type."
132 msgstr "Tipo de medio no permitido."
133
134 #: src/call-window.cpp:183
135 msgctxt "@info:status"
136 msgid "Connectivity error."
137 msgstr "Error de conexión."
138
139 #: src/call-window.cpp:187
140 msgctxt "@info:status"
141 msgid "Unknown error."
142 msgstr "Error desconocido."
143
144 #: src/call-window.cpp:192
145 msgctxt "@info:status"
146 msgid "Disconnected."
147 msgstr "Desconectado."
148
149 #: src/call-window.cpp:196
150 #, kde-format
151 msgctxt "@info:status the call was disconnected because..."
152 msgid "Disconnected: %1"
153 msgstr "Desconectado: %1"
154
155 #: src/call-window.cpp:339
156 msgctxt "@action"
157 msgid "Show my video"
158 msgstr "Mostrar mi vídeo"
159
160 #: src/call-window.cpp:344
161 msgctxt "@action"
162 msgid "Show dialpad"
163 msgstr "Mostrar panel de marcación"
164
165 #: src/call-window.cpp:351
166 msgctxt "@action"
167 msgid "Send video"
168 msgstr "Enviar vídeo"
169
170 #: src/call-window.cpp:356 src/call-window.cpp:357
171 msgctxt "@action"
172 msgid "Mute"
173 msgstr "Silenciar"
174
175 #: src/call-window.cpp:363
176 msgctxt "@action"
177 msgid "Hold"
178 msgstr "Colgar"
179
180 #: src/call-window.cpp:368
181 msgctxt "@action"
182 msgid "Hangup"
183 msgstr "Colgar"
184
185 #: src/main.cpp:36
186 msgid "KDE Telepathy Call Ui"
187 msgstr "Interfaz de llamadas de Telepathy para KDE"
188
189 #: src/main.cpp:37
190 msgid "VoIP client for KDE"
191 msgstr "Cliente VoIP para KDE"
192
193 #: src/main.cpp:38
194 msgid "(C) 2009, George Kiagiadakis"
195 msgstr "(C) 2009, George Kiagiadakis"
196
197 #: src/main.cpp:40
198 msgctxt "@info:credit"
199 msgid "George Kiagiadakis"
200 msgstr "George Kiagiadakis"
201
202 #: rc.cpp:1
203 msgctxt "NAME OF TRANSLATORS"
204 msgid "Your names"
205 msgstr "Cristina Yenyxe González García"
206
207 #: rc.cpp:2
208 msgctxt "EMAIL OF TRANSLATORS"
209 msgid "Your emails"
210 msgstr "the.blue.valkyrie@gmail.com"
211
212 #. i18n: file: src/callwindowui.rc:11
213 #. i18n: ectx: Menu (call)
214 #: rc.cpp:5
215 msgid "Call"
216 msgstr "Llamar"
217
218 #. i18n: file: src/callwindowui.rc:20
219 #. i18n: ectx: Menu (media)
220 #: rc.cpp:8
221 msgid "Media"
222 msgstr "Multimedia"
223
224 #. i18n: file: src/callwindowui.rc:27
225 #. i18n: ectx: ToolBar (mainToolBar)
226 #: rc.cpp:11
227 msgid "Main Toolbar"
228 msgstr "Barra de herramientas principal"
229
230 #. i18n: file: src/dtmf-widget.ui:17
231 #. i18n: ectx: property (text), widget (QPushButton, button1)
232 #: rc.cpp:14
233 msgid "1"
234 msgstr "1"
235
236 #. i18n: file: src/dtmf-widget.ui:24
237 #. i18n: ectx: property (text), widget (QPushButton, button2)
238 #: rc.cpp:17
239 msgid "2"
240 msgstr "2"
241
242 #. i18n: file: src/dtmf-widget.ui:31
243 #. i18n: ectx: property (text), widget (QPushButton, button3)
244 #: rc.cpp:20
245 msgid "3"
246 msgstr "3"
247
248 #. i18n: file: src/dtmf-widget.ui:38
249 #. i18n: ectx: property (text), widget (QPushButton, button4)
250 #: rc.cpp:23
251 msgid "4"
252 msgstr "4"
253
254 #. i18n: file: src/dtmf-widget.ui:45
255 #. i18n: ectx: property (text), widget (QPushButton, button5)
256 #: rc.cpp:26
257 msgid "5"
258 msgstr "5"
259
260 #. i18n: file: src/dtmf-widget.ui:52
261 #. i18n: ectx: property (text), widget (QPushButton, button6)
262 #: rc.cpp:29
263 msgid "6"
264 msgstr "6"
265
266 #. i18n: file: src/dtmf-widget.ui:59
267 #. i18n: ectx: property (text), widget (QPushButton, button7)
268 #: rc.cpp:32
269 msgid "7"
270 msgstr "7"
271
272 #. i18n: file: src/dtmf-widget.ui:66
273 #. i18n: ectx: property (text), widget (QPushButton, button8)
274 #: rc.cpp:35
275 msgid "8"
276 msgstr "8"
277
278 #. i18n: file: src/dtmf-widget.ui:73
279 #. i18n: ectx: property (text), widget (QPushButton, button9)
280 #: rc.cpp:38
281 msgid "9"
282 msgstr "9"
283
284 #. i18n: file: src/dtmf-widget.ui:80
285 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
286 #: rc.cpp:41
287 msgid "*"
288 msgstr "*"
289
290 #. i18n: file: src/dtmf-widget.ui:87
291 #. i18n: ectx: property (text), widget (QPushButton, button0)
292 #: rc.cpp:44
293 msgid "0"
294 msgstr "0"
295
296 #. i18n: file: src/dtmf-widget.ui:94
297 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
298 #: rc.cpp:47
299 msgid "#"
300 msgstr "#"
301
302 #~ msgid "Warning: %1"
303 #~ msgstr "Advertencia: %1"
304
305 #~ msgid "Error: %1"
306 #~ msgstr "Error: %1"
307
308 #~ msgid "KCall"
309 #~ msgstr "KCall"
310
311 #~ msgid "Brightness"
312 #~ msgstr "Brillo"
313
314 #~ msgid "Contrast"
315 #~ msgstr "Contraste"
316
317 #~ msgid "Hue"
318 #~ msgstr "Tinte"
319
320 #~ msgid "Saturation"
321 #~ msgstr "Saturación"
322
323 #~ msgid "Dialpad"
324 #~ msgstr "Panel de marcación"
325
326 #~ msgid ""
327 #~ "Defines whether the window should close automatically after a timeout "
328 #~ "when the call is over."
329 #~ msgstr ""
330 #~ "Define si la ventana se debe cerrar automáticamente cierto tiempo después "
331 #~ "de finalizar la llamada."
332
333 #~ msgid ""
334 #~ "Defines how many seconds the call window should remain visible after the "
335 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
336 #~ msgstr ""
337 #~ "Define cuántos segundos debe permanecer visible la ventana de llamada "
338 #~ "tras finalizar la llamada. Esta opción depende de «CerrarAlDesconectar»."
339
340 #, fuzzy
341 #~| msgid "The audio output device could not be initialized."
342 #~ msgid "The video input device could not be initialized"
343 #~ msgstr "No se pudo inicializar el dispositivo de salida de audio."
344
345 #, fuzzy
346 #~| msgid ""
347 #~| "Some gstreamer elements could not be created. Please check your "
348 #~| "gstreamer installation."
349 #~ msgid ""
350 #~ "Could not create some of the required elements. Please check your "
351 #~ "GStreamer installation."
352 #~ msgstr ""
353 #~ "No se pudieron crear algunos elementos gstreamer. Por favor, compruebe su "
354 #~ "instalación de gstreeamer."
355
356 #~ msgctxt "@action:inmenu"
357 #~ msgid "Show participants"
358 #~ msgstr "Mostrar participantes"
359
360 #~ msgctxt "@action:inmenu"
361 #~ msgid "Show log"
362 #~ msgstr "Mostrar registro"
363
364 #~ msgctxt "@action"
365 #~ msgid "Stop sending video"
366 #~ msgstr "Dejar de enviar vídeo"
367
368 #~ msgctxt "@action:inmenu"
369 #~ msgid "Status"
370 #~ msgstr "Estado"
371
372 #~ msgctxt "@action:inmenu"
373 #~ msgid "Available"
374 #~ msgstr "Disponible"
375
376 #~ msgctxt "@action:inmenu"
377 #~ msgid "Away"
378 #~ msgstr "Ausente"
379
380 #~ msgctxt "@action:inmenu"
381 #~ msgid "Be right back"
382 #~ msgstr "Vuelvo ahora mismo"
383
384 #~ msgctxt "@action:inmenu"
385 #~ msgid "Busy"
386 #~ msgstr "Ocupado"
387
388 #~ msgctxt "@action:inmenu"
389 #~ msgid "Do not disturb"
390 #~ msgstr "No molestar"
391
392 #~ msgctxt "@action:inmenu"
393 #~ msgid "Extended Away"
394 #~ msgstr "Ausente extendido"
395
396 #~ msgctxt "@action:inmenu"
397 #~ msgid "Invisible"
398 #~ msgstr "Invisible"
399
400 #~ msgctxt "@action:inmenu"
401 #~ msgid "Offline"
402 #~ msgstr "Desconectado"
403
404 #~ msgctxt "protocol - display name (Connecting)"
405 #~ msgid "%1 - %2 (Connecting)"
406 #~ msgstr "%1 - %2 (Conectando)"
407
408 #~ msgctxt "protocol - display name"
409 #~ msgid "%1 - %2"
410 #~ msgstr "%1 - %2"
411
412 #~ msgctxt "@title:window"
413 #~ msgid "KCall"
414 #~ msgstr "KCall"
415
416 #~ msgctxt "@info:status"
417 #~ msgid "Connected"
418 #~ msgstr "Conectado"
419
420 #~ msgctxt "@action"
421 #~ msgid "Disconnect"
422 #~ msgstr "Desconectar"
423
424 #~ msgctxt "@action"
425 #~ msgid "Cancel connection attempt"
426 #~ msgstr "Cancelar intento de conexión"
427
428 #~ msgctxt "@action"
429 #~ msgid "Connect"
430 #~ msgstr "Conectar"
431
432 #~ msgid "Volume"
433 #~ msgstr "Volumen"
434
435 #~ msgid "Speakers"
436 #~ msgstr "Altavoces"
437
438 #~ msgid "Microphone"
439 #~ msgstr "Micrófono"
440
441 #~ msgid "Video controls"
442 #~ msgstr "Controles de vídeo"
443
444 #~ msgid "Video input"
445 #~ msgstr "Entrada de vídeo"
446
447 #~ msgid "Call log"
448 #~ msgstr "Registro de llamadas"
449
450 #~ msgid "Participants"
451 #~ msgstr "Participantes"
452
453 #~ msgctxt "@title:tab"
454 #~ msgid "&Contact list"
455 #~ msgstr "Lista de &contactos"
456
457 #~ msgid "Account"
458 #~ msgstr "Cuenta"
459
460 #~ msgctxt "@info:status"
461 #~ msgid "Hanging up..."
462 #~ msgstr "Colgando..."
463
464 #~ msgid "Channel closed"
465 #~ msgstr "Canal cerrado"
466
467 #~ msgid "Channel closed with error: %1"
468 #~ msgstr "Canal cerrado con errores: %1"
469
470 #~ msgid "User %1 joined the conference."
471 #~ msgstr "El usuario %1 se ha unido a la conversación."
472
473 #~ msgid "Awaiting answer from user %1."
474 #~ msgstr "Esperando respuesta del usuario %1."
475
476 #~ msgid "User %1 left the conference."
477 #~ msgstr "El usuario %1 ha abandonado la conversación."
478
479 #~ msgid "Audio input device"
480 #~ msgstr "Dispositivo de entrada de audio"
481
482 #~ msgid "Audio output device"
483 #~ msgstr "Dispositivo de salida de audio"
484
485 #~ msgid "Video input device"
486 #~ msgstr "Dispositivo de entrada de vídeo"
487
488 #~ msgid "Video output driver"
489 #~ msgstr "Dispositivo de salida de vídeo"
490
491 #~ msgid "Autodetect"
492 #~ msgstr "Autodetectar"
493
494 #~ msgid "ALSA"
495 #~ msgstr "ALSA"
496
497 #~ msgid "OSS"
498 #~ msgstr "OSS"
499
500 #~ msgid "JACK"
501 #~ msgstr "JACK"
502
503 #~ msgid "PULSE"
504 #~ msgstr "PULSE"
505
506 #~ msgid "Video4Linux"
507 #~ msgstr "Video4Linux"
508
509 #~ msgid "Device name"
510 #~ msgstr "Nombre del dispositivo"
511
512 #~ msgid "Sound system"
513 #~ msgstr "Sistema de sonido"
514
515 #~ msgid "Video system"
516 #~ msgstr "Sistema de vídeo"
517
518 #~ msgid "Gstreamer element"
519 #~ msgstr "Elemento gstreamer"
520
521 #~ msgid "Add custom device..."
522 #~ msgstr "Añadir dispositivo personalizado..."
523
524 #~ msgid ""
525 #~ "The gstreamer element for the selected device could not be created. "
526 #~ "Please check your gstreamer installation."
527 #~ msgstr ""
528 #~ "No se pudo crear el elemento gstreamer para el dispositivo seleccionado. "
529 #~ "Por favor, compruebe su instalación de gstreamer."
530
531 #~ msgid ""
532 #~ "The selected device could not be initialized. Please select another "
533 #~ "device."
534 #~ msgstr ""
535 #~ "No se pudo inicializar el dispositivo seleccionado. Por favor, seleccione "
536 #~ "otro dispositivo."
537
538 #~ msgctxt "stop audio/video test"
539 #~ msgid "Stop test"
540 #~ msgstr "Parar prueba"
541
542 #~ msgid "Hide details"
543 #~ msgstr "Ocultar detalles"
544
545 #~ msgid "Could not initialize the channel"
546 #~ msgstr "No se pudo inicializar el canal"
547
548 #~ msgid "Ignore"
549 #~ msgstr "Ignorar"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( et ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of kcall.po to Estonian
1 # Copyright (C) 2009 This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Marek Laane <bald@smail.ee>, 2009, 2011, 2012.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: kcall\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2012-05-22 15:34+0300\n"
11 "Last-Translator: Marek Laane <bald@smail.ee>\n"
12 "Language-Team: Estonian <kde-et@linux.ee>\n"
13 "Language: et\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Lokalize 1.4\n"
18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr "Sisenev videokõne"
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr "<p>%1 soovib alustada sinuga videokõnet</p>"
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr "Sisenev kõne"
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr "<p>%1 helistab sulle</p>"
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr "Vasta"
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr "Keeldu"
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr "Kõne kasutajaga %1"
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr "Ühendumine..."
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr "Helistamine..."
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr "Teine kasutaja võttis kõne vastu, oodatakse ühendust..."
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr "Kõnelemine..."
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr "Teine kasutaja lõpetas kõne."
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr "Teine kasutaja ei võtnud kõnet vastu."
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr "Teine kasutaja ei vastanud."
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr "Vigane number või kontakt."
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr "Su arvel pole piisavalt vahendeid selle kõne tegemiseks."
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr "Sul ei ole õigust seda kõnet teha."
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr "Teine kasutaja on praegu hõivatud."
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr "Sisemise komponendi tõrge."
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr "Kaugteenuse tõrge."
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr "Võrgutõrge."
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr "Läbirääkimised koodeki osas nurjusid."
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr "Toetamata meediatüüp."
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr "Ühenduse tõrge."
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr "Tundmatu tõrge."
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr "Ühendus lõpetatud."
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr "Ühendus katkestatud: %1"
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr "Enda video näitamine"
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr "Telefoniklahvide näitamine"
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr "Saada video"
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr "Tummaks"
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr "Ootele"
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr "Lõpeta kõne"
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr "KDE Telepathy kõne kasutajaliides"
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr "KDE VoIP klient"
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr "(C) 2009: George Kiagiadakis"
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr "George Kiagiadakis"
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr "Marek Laane"
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr "bald@smail.ee"
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr "Kõne"
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr "Meedia"
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr "Peamine tööriistariba"
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr "1"
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr "2"
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr "3"
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr "4"
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr "5"
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr "6"
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr "7"
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr "8"
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr "9"
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr "*"
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr "0"
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr "#"
300
301 #~ msgid "Warning: %1"
302 #~ msgstr "Hoiatus: %1"
303
304 #~ msgid "Error: %1"
305 #~ msgstr "Tõrge: %1"
306
307 #~ msgid "KCall"
308 #~ msgstr "KCall"
309
310 #~ msgid "Brightness"
311 #~ msgstr "Heledus"
312
313 #~ msgid "Contrast"
314 #~ msgstr "Kontrast"
315
316 #~ msgid "Hue"
317 #~ msgstr "Toon"
318
319 #~ msgid "Saturation"
320 #~ msgstr "Küllastus"
321
322 #~ msgid "Dialpad"
323 #~ msgstr "Klahvistik"
324
325 #~ msgid ""
326 #~ "Defines whether the window should close automatically after a timeout "
327 #~ "when the call is over."
328 #~ msgstr ""
329 #~ "Määramine, kas pärast kõne lõppemist sulgeda aken automaatselt teatava "
330 #~ "aja järel."
331
332 #~ msgid ""
333 #~ "Defines how many seconds the call window should remain visible after the "
334 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
335 #~ msgstr ""
336 #~ "Määramine, mitmeks sekundiks jääb aken pärast kõne lõppemist nähtavale. "
337 #~ "See sõltub valikust \"sulgemine lõpetamisel\"."
338
339 #~ msgid "The audio input device could not be initialized"
340 #~ msgstr "Helisisendi seadme initsialiseerimine nurjus"
341
342 #~ msgid "The video input device could not be initialized"
343 #~ msgstr "Videosisendi seadme initsialiseerimine nurjus"
344
345 #~ msgid ""
346 #~ "Could not create some of the required elements. Please check your "
347 #~ "GStreamer installation."
348 #~ msgstr ""
349 #~ "Mõningate vajalike elementide loomine nurjus. Palun kontrolli oma "
350 #~ "GStreameri paigadust."
351
352 #~ msgid "The audio output device could not be initialized"
353 #~ msgstr "Heliväljundi seadme initsialiseerimine nurjus"
354
355 #~ msgctxt "@action:inmenu"
356 #~ msgid "Show participants"
357 #~ msgstr "Näita osalejaid"
358
359 #~ msgctxt "@action:inmenu"
360 #~ msgid "Show log"
361 #~ msgstr "Näita logi"
362
363 #~ msgctxt "@action"
364 #~ msgid "Stop sending video"
365 #~ msgstr "Peata video saatmine"
366
367 #~ msgctxt "@action:inmenu"
368 #~ msgid "Status"
369 #~ msgstr "Olek"
370
371 #~ msgctxt "@action:inmenu"
372 #~ msgid "Available"
373 #~ msgstr "Saadaolev"
374
375 #~ msgctxt "@action:inmenu"
376 #~ msgid "Away"
377 #~ msgstr "Eemal"
378
379 #~ msgctxt "@action:inmenu"
380 #~ msgid "Be right back"
381 #~ msgstr "Tulen kohe tagasi"
382
383 #~ msgctxt "@action:inmenu"
384 #~ msgid "Busy"
385 #~ msgstr "Hõivatud"
386
387 #~ msgctxt "@action:inmenu"
388 #~ msgid "Do not disturb"
389 #~ msgstr "Mitte segada"
390
391 #~ msgctxt "@action:inmenu"
392 #~ msgid "Extended Away"
393 #~ msgstr "Pikaajaline eemalolek"
394
395 #~ msgctxt "@action:inmenu"
396 #~ msgid "Invisible"
397 #~ msgstr "Nähtamatu"
398
399 #~ msgctxt "@action:inmenu"
400 #~ msgid "Offline"
401 #~ msgstr "Pole võrgus"
402
403 #~ msgctxt "@info:status"
404 #~ msgid "Waiting for account information..."
405 #~ msgstr "Konto teabe ootamine..."
406
407 #~ msgctxt "protocol - display name (Connecting)"
408 #~ msgid "%1 - %2 (Connecting)"
409 #~ msgstr "%1 - %2 (ühendumine)"
410
411 #~ msgctxt "protocol - display name"
412 #~ msgid "%1 - %2"
413 #~ msgstr "%1 - %2"
414
415 #~ msgctxt "@title:window"
416 #~ msgid "KCall"
417 #~ msgstr "KCall"
418
419 #~ msgctxt "@info:status"
420 #~ msgid "Connected"
421 #~ msgstr "Ühendatud"
422
423 #~ msgctxt "@action"
424 #~ msgid "Disconnect"
425 #~ msgstr "Katkesta ühendus"
426
427 #~ msgctxt "@action"
428 #~ msgid "Cancel connection attempt"
429 #~ msgstr "Loobu ühenduse proovimisest"
430
431 #~ msgctxt "@action"
432 #~ msgid "Connect"
433 #~ msgstr "Ühenda"
434
435 #~ msgid ""
436 #~ "You have requested to close KCall. Note that KCall will not actually "
437 #~ "quit, but it will stay active in the system tray waiting for incoming "
438 #~ "calls."
439 #~ msgstr ""
440 #~ "Soovisid KCalli sulgeda. Pane tähele, et KCall ei lõpeta tegelikult tööd, "
441 #~ "vaid jääb aktiivseks süsteemisalves, oodates sisenevaid kõnesid."
442
443 #~ msgid "Volume"
444 #~ msgstr "Helitugevus"
445
446 #~ msgid "Speakers"
447 #~ msgstr "Kõlarid"
448
449 #~ msgid "Microphone"
450 #~ msgstr "Mikrofon"
451
452 #~ msgid "Video controls"
453 #~ msgstr "Video juhtimine"
454
455 #~ msgid "Video input"
456 #~ msgstr "Videosisend"
457
458 #~ msgid "Call log"
459 #~ msgstr "Kõnelogi"
460
461 #~ msgid "Participants"
462 #~ msgstr "Osalejad"
463
464 #~ msgctxt "@title:tab"
465 #~ msgid "&Contact list"
466 #~ msgstr "Kontaktide nimekiri"
467
468 #~ msgid "Dial directly"
469 #~ msgstr "Otsevalimine"
470
471 #~ msgid "Account"
472 #~ msgstr "Konto"
473
474 #~ msgid "Contact handle"
475 #~ msgstr "Kontaktiga suhtlemine"
476
477 #~ msgid "Dial (Audio only)"
478 #~ msgstr "Helista (ainult hääl)"
479
480 #~ msgid "Dial (Audio/Video)"
481 #~ msgstr "Helista (heli ja video)"
482
483 #~ msgctxt "@info:status"
484 #~ msgid "Hanging up..."
485 #~ msgstr "Lõpetamine..."
486
487 #, fuzzy
488 #~ msgid "Channel closed"
489 #~ msgstr "Kanal"
490
491 #, fuzzy
492 #~| msgctxt "@info:status"
493 #~| msgid "Disconnected with error."
494 #~ msgid "Channel closed with error: %1"
495 #~ msgstr "Ühendus lõpetatatud vea tõttu."
496
497 #, fuzzy
498 #~ msgid "Audio stream created. Stream id: %1."
499 #~ msgstr "Audio Voog."
500
501 #, fuzzy
502 #~ msgid "Video stream created. Stream id: %1."
503 #~ msgstr "Video Voog."
504
505 #, fuzzy
506 #~ msgctxt "1 is the stream's id"
507 #~ msgid "Stream %1 direction is: %2."
508 #~ msgstr "Voog suund on."
509
510 #, fuzzy
511 #~ msgctxt "1 is the stream's id"
512 #~ msgid "Stream %1 removed."
513 #~ msgstr "Voog."
514
515 #, fuzzy
516 #~ msgctxt "1 is the stream's id"
517 #~ msgid "Stream %1 direction changed to: %2."
518 #~ msgstr "Voog suund muudetud kuni."
519
520 #, fuzzy
521 #~ msgctxt "1 is the stream's id"
522 #~ msgid "Stream %1 state changed to: %2."
523 #~ msgstr "Voog muudetud kuni."
524
525 #, fuzzy
526 #~ msgid "User %1 joined the conference."
527 #~ msgstr "Kasutaja."
528
529 #, fuzzy
530 #~ msgid "Awaiting answer from user %1."
531 #~ msgstr "vastus kasutaja."
532
533 #, fuzzy
534 #~ msgid "User %1 left the conference."
535 #~ msgstr "Kasutaja vasakult."
536
537 #, fuzzy
538 #~ msgid "Audio input device"
539 #~ msgstr "Audio input seade"
540
541 #, fuzzy
542 #~ msgid "Audio output device"
543 #~ msgstr "Audio väljund seade"
544
545 #, fuzzy
546 #~ msgid "Video input device"
547 #~ msgstr "Video input seade"
548
549 #, fuzzy
550 #~ msgid "Video output driver"
551 #~ msgstr "Video väljund"
552
553 #, fuzzy
554 #~ msgid "Xv video renderer"
555 #~ msgstr "video"
556
557 #, fuzzy
558 #~ msgid "X11 video renderer"
559 #~ msgstr "video"
560
561 #, fuzzy
562 #~ msgid "Autodetect"
563 #~ msgstr "Automaatne tuvastamine"
564
565 #, fuzzy
566 #~ msgid "Test input device"
567 #~ msgstr "Test input seade"
568
569 #, fuzzy
570 #~ msgid "ALSA"
571 #~ msgstr "ALSA"
572
573 #, fuzzy
574 #~ msgid "OSS"
575 #~ msgstr "OSS"
576
577 #, fuzzy
578 #~ msgid "Video4Linux"
579 #~ msgstr "Video4Linux"
580
581 #, fuzzy
582 #~ msgid "Device name"
583 #~ msgstr "Seadme nimi"
584
585 #, fuzzy
586 #~ msgid "Sound system"
587 #~ msgstr "Heli süsteem"
588
589 #, fuzzy
590 #~ msgid "Video system"
591 #~ msgstr "Video süsteem"
592
593 #, fuzzy
594 #~ msgid "Gstreamer element"
595 #~ msgstr "element"
596
597 #, fuzzy
598 #~ msgid "Driver-specific handle"
599 #~ msgstr "Draiver"
600
601 #, fuzzy
602 #~ msgctxt "test the device"
603 #~ msgid "Test"
604 #~ msgstr "Test"
605
606 #, fuzzy
607 #~ msgid "Add custom device..."
608 #~ msgstr "Lisa kohandatud seade."
609
610 #, fuzzy
611 #~ msgid ""
612 #~ "The gstreamer element for the selected device could not be created. "
613 #~ "Please check your gstreamer installation."
614 #~ msgstr "element tingimusel seade mitte kontroll paigaldamine."
615
616 #, fuzzy
617 #~ msgid ""
618 #~ "The selected device could not be initialized. Please select another "
619 #~ "device."
620 #~ msgstr "seade mitte seade."
621
622 #, fuzzy
623 #~ msgid ""
624 #~ "The gstreamer element for the audio output device could not be created. "
625 #~ "Please check your gstreamer installation"
626 #~ msgstr "element tingimusel audio väljund seade mitte kontroll paigaldamine"
627
628 #, fuzzy
629 #~ msgid "The audio output device could not be initialized."
630 #~ msgstr "audio väljund seade mitte."
631
632 #, fuzzy
633 #~ msgid "The video output driver could not be initialized."
634 #~ msgstr "video väljund mitte."
635
636 #, fuzzy
637 #~ msgid ""
638 #~ "The selected video output driver could not be initialized. Please select "
639 #~ "another driver."
640 #~ msgstr "video väljund mitte."
641
642 #, fuzzy
643 #~ msgctxt "stop audio/video test"
644 #~ msgid "Stop test"
645 #~ msgstr "Peata"
646
647 #, fuzzy
648 #~ msgid "Hide details"
649 #~ msgstr "Peida"
650
651 #, fuzzy
652 #~ msgid "Automatically close the call window after a timeout"
653 #~ msgstr "call aken a ajaületus"
654
655 #, fuzzy
656 #~ msgid "Timeout in seconds:"
657 #~ msgstr "Aegumine sekundites:"
658
659 #, fuzzy
660 #~ msgid ""
661 #~ "The gstreamer element for the audio input device could not be created. "
662 #~ "Please check your gstreamer installation"
663 #~ msgstr "element tingimusel audio input seade mitte kontroll paigaldamine"
664
665 #, fuzzy
666 #~ msgid ""
667 #~ "The gstreamer element for the video input device could not be created. "
668 #~ "Please check your gstreamer installation."
669 #~ msgstr "element tingimusel video input seade mitte kontroll paigaldamine."
670
671 #, fuzzy
672 #~ msgid "Could not initialize the channel"
673 #~ msgstr "mitte kanal"
674
675 #~ msgid "Ignore"
676 #~ msgstr "Eira"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( fr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of telepathy-kde-call-ui.po to Français
1 # translation of kcall.po to
2 # Copyright (C) YEAR This_file_is_part_of_KDE
3 # This file is distributed under the same license as the PACKAGE package.
4 #
5 # Joëlle Cornavin <jcornavin AT laposte DOT net>, 2009, 2010 2011.
6 # Joëlle Cornavin <jcorn@free.fr>, 2011.
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: telepathy-kde-call-ui\n"
10 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
11 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
12 "PO-Revision-Date: 2011-07-15 16:30+0200\n"
13 "Last-Translator: Joëlle Cornavin <jcorn@free.fr>\n"
14 "Language-Team: French <kde-francophone@kde.org>\n"
15 "Language: fr\n"
16 "MIME-Version: 1.0\n"
17 "Content-Type: text/plain; charset=UTF-8\n"
18 "Content-Transfer-Encoding: 8bit\n"
19 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
21 #: src/approver.cpp:38
22 #, fuzzy
23 #| msgctxt "@action:inmenu"
24 #| msgid "Video call"
25 msgid "Incoming video call"
26 msgstr "Communication vidéo"
27
28 #: src/approver.cpp:39
29 #, kde-format
30 msgid "<p>%1 is asking you for a video call</p>"
31 msgstr ""
32
33 #: src/approver.cpp:41
34 #, fuzzy
35 #| msgctxt "@action:inmenu"
36 #| msgid "Voice call"
37 msgid "Incoming call"
38 msgstr "Communication vocale"
39
40 #: src/approver.cpp:42
41 #, kde-format
42 msgid "<p>%1 is calling you</p>"
43 msgstr ""
44
45 #: src/approver.cpp:58 src/approver.cpp:80
46 msgctxt "action, answers the incoming call"
47 msgid "Answer"
48 msgstr ""
49
50 #: src/approver.cpp:59 src/approver.cpp:82
51 msgctxt "action, rejects the incoming call"
52 msgid "Reject"
53 msgstr ""
54
55 #: src/call-window.cpp:95
56 #, kde-format
57 msgid "Call with %1"
58 msgstr ""
59
60 #: src/call-window.cpp:109
61 msgctxt "@info:status"
62 msgid "Connecting..."
63 msgstr "Connexion..."
64
65 #: src/call-window.cpp:113
66 #, fuzzy
67 #| msgctxt "@info:status"
68 #| msgid "Connecting..."
69 msgctxt "@info:status the remote user's phone is ringing"
70 msgid "Ringing..."
71 msgstr "Connexion..."
72
73 #: src/call-window.cpp:117
74 msgctxt "@info:status"
75 msgid "Remote user accepted the call, waiting for connection..."
76 msgstr ""
77
78 #: src/call-window.cpp:120
79 msgctxt "@info:status"
80 msgid "Talking..."
81 msgstr "Parole..."
82
83 #: src/call-window.cpp:136
84 msgctxt "@info:status"
85 msgid "Remote contact ended the call."
86 msgstr ""
87
88 #: src/call-window.cpp:143
89 msgctxt "@info:status"
90 msgid "Remote contact rejected the call."
91 msgstr ""
92
93 #: src/call-window.cpp:148
94 msgctxt "@info:status"
95 msgid "Remote contact didn't answer."
96 msgstr ""
97
98 #: src/call-window.cpp:152
99 msgctxt "@info:status"
100 msgid "Invalid number or contact."
101 msgstr ""
102
103 #: src/call-window.cpp:156
104 msgctxt "@info:status"
105 msgid "You don't have enough balance to make this call."
106 msgstr ""
107
108 #: src/call-window.cpp:158
109 msgctxt "@info:status"
110 msgid "You don't have permission to make this call."
111 msgstr ""
112
113 #: src/call-window.cpp:163
114 msgctxt "@info:status"
115 msgid "Remote contact is currently busy."
116 msgstr ""
117
118 #: src/call-window.cpp:167
119 msgctxt "@info:status"
120 msgid "Internal component error."
121 msgstr ""
122
123 #: src/call-window.cpp:170
124 msgctxt "@info:status"
125 msgid "Remote service error."
126 msgstr ""
127
128 #: src/call-window.cpp:173
129 msgctxt "@info:status"
130 msgid "Network error."
131 msgstr ""
132
133 #: src/call-window.cpp:177
134 msgctxt "@info:status"
135 msgid "Failed to negotiate codecs."
136 msgstr ""
137
138 #: src/call-window.cpp:179
139 msgctxt "@info:status"
140 msgid "Unsupported media type."
141 msgstr ""
142
143 #: src/call-window.cpp:183
144 msgctxt "@info:status"
145 msgid "Connectivity error."
146 msgstr ""
147
148 #: src/call-window.cpp:187
149 msgctxt "@info:status"
150 msgid "Unknown error."
151 msgstr ""
152
153 #: src/call-window.cpp:192
154 msgctxt "@info:status"
155 msgid "Disconnected."
156 msgstr "Déconnecté."
157
158 #: src/call-window.cpp:196
159 #, fuzzy, kde-format
160 #| msgctxt "@info:status"
161 #| msgid "Disconnected"
162 msgctxt "@info:status the call was disconnected because..."
163 msgid "Disconnected: %1"
164 msgstr "Déconnecté"
165
166 #: src/call-window.cpp:339
167 #, fuzzy
168 #| msgctxt "@action"
169 #| msgid "Send video"
170 msgctxt "@action"
171 msgid "Show my video"
172 msgstr "Envoyer la vidéo"
173
174 #: src/call-window.cpp:344
175 #, fuzzy
176 #| msgid "Dialpad"
177 msgctxt "@action"
178 msgid "Show dialpad"
179 msgstr "Dialpad"
180
181 #: src/call-window.cpp:351
182 msgctxt "@action"
183 msgid "Send video"
184 msgstr "Envoyer la vidéo"
185
186 #: src/call-window.cpp:356 src/call-window.cpp:357
187 msgctxt "@action"
188 msgid "Mute"
189 msgstr ""
190
191 #: src/call-window.cpp:363
192 msgctxt "@action"
193 msgid "Hold"
194 msgstr ""
195
196 #: src/call-window.cpp:368
197 msgctxt "@action"
198 msgid "Hangup"
199 msgstr "Raccrocher"
200
201 #: src/main.cpp:36
202 msgid "KDE Telepathy Call Ui"
203 msgstr ""
204
205 #: src/main.cpp:37
206 msgid "VoIP client for KDE"
207 msgstr "Client VoIP pour KDE"
208
209 #: src/main.cpp:38
210 msgid "(C) 2009, George Kiagiadakis"
211 msgstr "(C) 2009, George Kiagiadakis"
212
213 #: src/main.cpp:40
214 msgctxt "@info:credit"
215 msgid "George Kiagiadakis"
216 msgstr "George Kiagiadakis"
217
218 #: rc.cpp:1
219 msgctxt "NAME OF TRANSLATORS"
220 msgid "Your names"
221 msgstr "Joëlle Cornavin"
222
223 #: rc.cpp:2
224 msgctxt "EMAIL OF TRANSLATORS"
225 msgid "Your emails"
226 msgstr "jcorn@free.fr"
227
228 #. i18n: file: src/callwindowui.rc:11
229 #. i18n: ectx: Menu (call)
230 #: rc.cpp:5
231 msgid "Call"
232 msgstr "Appel"
233
234 #. i18n: file: src/callwindowui.rc:20
235 #. i18n: ectx: Menu (media)
236 #: rc.cpp:8
237 msgid "Media"
238 msgstr ""
239
240 #. i18n: file: src/callwindowui.rc:27
241 #. i18n: ectx: ToolBar (mainToolBar)
242 #: rc.cpp:11
243 msgid "Main Toolbar"
244 msgstr "Barre principale"
245
246 #. i18n: file: src/dtmf-widget.ui:17
247 #. i18n: ectx: property (text), widget (QPushButton, button1)
248 #: rc.cpp:14
249 msgid "1"
250 msgstr "1"
251
252 #. i18n: file: src/dtmf-widget.ui:24
253 #. i18n: ectx: property (text), widget (QPushButton, button2)
254 #: rc.cpp:17
255 msgid "2"
256 msgstr "2"
257
258 #. i18n: file: src/dtmf-widget.ui:31
259 #. i18n: ectx: property (text), widget (QPushButton, button3)
260 #: rc.cpp:20
261 msgid "3"
262 msgstr "3"
263
264 #. i18n: file: src/dtmf-widget.ui:38
265 #. i18n: ectx: property (text), widget (QPushButton, button4)
266 #: rc.cpp:23
267 msgid "4"
268 msgstr "4"
269
270 #. i18n: file: src/dtmf-widget.ui:45
271 #. i18n: ectx: property (text), widget (QPushButton, button5)
272 #: rc.cpp:26
273 msgid "5"
274 msgstr "5"
275
276 #. i18n: file: src/dtmf-widget.ui:52
277 #. i18n: ectx: property (text), widget (QPushButton, button6)
278 #: rc.cpp:29
279 msgid "6"
280 msgstr "6"
281
282 #. i18n: file: src/dtmf-widget.ui:59
283 #. i18n: ectx: property (text), widget (QPushButton, button7)
284 #: rc.cpp:32
285 msgid "7"
286 msgstr "7"
287
288 #. i18n: file: src/dtmf-widget.ui:66
289 #. i18n: ectx: property (text), widget (QPushButton, button8)
290 #: rc.cpp:35
291 msgid "8"
292 msgstr "8"
293
294 #. i18n: file: src/dtmf-widget.ui:73
295 #. i18n: ectx: property (text), widget (QPushButton, button9)
296 #: rc.cpp:38
297 msgid "9"
298 msgstr "9"
299
300 #. i18n: file: src/dtmf-widget.ui:80
301 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
302 #: rc.cpp:41
303 msgid "*"
304 msgstr "*"
305
306 #. i18n: file: src/dtmf-widget.ui:87
307 #. i18n: ectx: property (text), widget (QPushButton, button0)
308 #: rc.cpp:44
309 msgid "0"
310 msgstr "0"
311
312 #. i18n: file: src/dtmf-widget.ui:94
313 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
314 #: rc.cpp:47
315 msgid "#"
316 msgstr "#"
317
318 #~ msgid "Warning: %1"
319 #~ msgstr "Avertissement : %1"
320
321 #~ msgid "Error: %1"
322 #~ msgstr "Erreur : %1"
323
324 #~ msgid "KCall"
325 #~ msgstr "KCall"
326
327 #~ msgid "Brightness"
328 #~ msgstr "Luminosité"
329
330 #~ msgid "Contrast"
331 #~ msgstr "Contraste"
332
333 #~ msgid "Hue"
334 #~ msgstr "Teinte"
335
336 #~ msgid "Saturation"
337 #~ msgstr "Saturation"
338
339 #~ msgid "Dialpad"
340 #~ msgstr "Dialpad"
341
342 #~ msgid ""
343 #~ "Defines whether the window should close automatically after a timeout "
344 #~ "when the call is over."
345 #~ msgstr ""
346 #~ "Définit s'il faut ou non que la fenêtre se ferme automatiquement après un "
347 #~ "délai d'attente une fois l'appel terminé."
348
349 #~ msgid ""
350 #~ "Defines how many seconds the call window should remain visible after the "
351 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
352 #~ msgstr ""
353 #~ "Définit pendant combien de secondes la fenêtre d'appel devra rester "
354 #~ "visible une fois l'appel terminé. Cette option repose sur "
355 #~ "« CloseOnDisconnect »."
356
357 #~ msgid "The audio input device could not be initialized"
358 #~ msgstr "Impossible d'initialiser le périphérique d'entrée audio"
359
360 #~ msgid "The video input device could not be initialized"
361 #~ msgstr "Impossible d'initialiser le périphérique d'entrée vidéo"
362
363 #~ msgid ""
364 #~ "Could not create some of the required elements. Please check your "
365 #~ "GStreamer installation."
366 #~ msgstr ""
367 #~ "Impossible de créer certains des éléments requis. Veuillez vérifier votre "
368 #~ "installation de GStreamer."
369
370 #~ msgid "The audio output device could not be initialized"
371 #~ msgstr "Impossible d'initialiser le périphérique de sortie audio"
372
373 #~ msgctxt "@action:inmenu"
374 #~ msgid "Show participants"
375 #~ msgstr "Afficher les participants"
376
377 #~ msgctxt "@action:inmenu"
378 #~ msgid "Show log"
379 #~ msgstr "Afficher le journal"
380
381 #~ msgctxt "@action"
382 #~ msgid "Stop sending video"
383 #~ msgstr "Arrêter d'envoyer la vidéo"
384
385 #~ msgctxt "@action:inmenu"
386 #~ msgid "Status"
387 #~ msgstr "État"
388
389 #~ msgctxt "@action:inmenu"
390 #~ msgid "Available"
391 #~ msgstr "Disponible"
392
393 #~ msgctxt "@action:inmenu"
394 #~ msgid "Away"
395 #~ msgstr "Absent"
396
397 #~ msgctxt "@action:inmenu"
398 #~ msgid "Be right back"
399 #~ msgstr "Être de retour"
400
401 #~ msgctxt "@action:inmenu"
402 #~ msgid "Busy"
403 #~ msgstr "Occupé"
404
405 #~ msgctxt "@action:inmenu"
406 #~ msgid "Do not disturb"
407 #~ msgstr "Ne pas déranger"
408
409 #~ msgctxt "@action:inmenu"
410 #~ msgid "Extended Away"
411 #~ msgstr "Absence prolongée"
412
413 #~ msgctxt "@action:inmenu"
414 #~ msgid "Invisible"
415 #~ msgstr "Invisible"
416
417 #~ msgctxt "@action:inmenu"
418 #~ msgid "Offline"
419 #~ msgstr "Hors ligne"
420
421 #~ msgctxt "@info:status"
422 #~ msgid "Waiting for account information..."
423 #~ msgstr "Attente des informations sur le compte..."
424
425 #~ msgctxt "protocol - display name (Connecting)"
426 #~ msgid "%1 - %2 (Connecting)"
427 #~ msgstr "%1 - %2 (Connexion en cours)"
428
429 #~ msgctxt "protocol - display name"
430 #~ msgid "%1 - %2"
431 #~ msgstr "%1 - %2"
432
433 #~ msgctxt "@title:window"
434 #~ msgid "KCall"
435 #~ msgstr "KCall"
436
437 #~ msgctxt "@info:status"
438 #~ msgid "Connected"
439 #~ msgstr "Connecté"
440
441 #~ msgctxt "@action"
442 #~ msgid "Disconnect"
443 #~ msgstr "Déconnecter"
444
445 #~ msgctxt "@action"
446 #~ msgid "Cancel connection attempt"
447 #~ msgstr "Annuler la tentative de connexion"
448
449 #~ msgctxt "@action"
450 #~ msgid "Connect"
451 #~ msgstr "Connecter"
452
453 #~ msgid ""
454 #~ "You have requested to close KCall. Note that KCall will not actually "
455 #~ "quit, but it will stay active in the system tray waiting for incoming "
456 #~ "calls."
457 #~ msgstr ""
458 #~ "Vous avez demandé à quitter KCall. Notez que KCall ne se fermera pas à "
459 #~ "proprement parler mais restera actif dans la boîte à miniatures, "
460 #~ "attendant des appels entrants."
461
462 #~ msgid "Volume"
463 #~ msgstr "Volume"
464
465 #~ msgid "Speakers"
466 #~ msgstr "Haut-parleurs"
467
468 #~ msgid "Microphone"
469 #~ msgstr "Microphone"
470
471 #~ msgid "Video controls"
472 #~ msgstr "Contrôles vidéo"
473
474 #~ msgid "Video input"
475 #~ msgstr "Entrée vidéo"
476
477 #~ msgid "Call log"
478 #~ msgstr "Journal des appels"
479
480 #~ msgid "Participants"
481 #~ msgstr "Participants"
482
483 #~ msgctxt "@title:tab"
484 #~ msgid "&Contact list"
485 #~ msgstr "&Liste de contacts"
486
487 #~ msgid "Dial directly"
488 #~ msgstr "Numéroter directement"
489
490 #~ msgid "Account"
491 #~ msgstr "Compte"
492
493 #~ msgid "Contact handle"
494 #~ msgstr "Descripteur de contacts"
495
496 #~ msgid "Dial (Audio only)"
497 #~ msgstr "Numéroter directement (audio seulement)"
498
499 #~ msgid "Dial (Audio/Video)"
500 #~ msgstr "Numéroter directement (audio/vidéo)"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( ga ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Irish translation of kcall
1 # Copyright (C) 2009 This_file_is_part_of_KDE
2 # This file is distributed under the same license as the kcall package.
3 # Kevin Scannell <kscanne@gmail.com>, 2009.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: kcall\n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2009-12-24 06:59-0500\n"
10 "Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
11 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
12 "Language: ga\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? "
17 "3 : 4\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr ""
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr ""
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr ""
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr ""
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 #, fuzzy
39 #| msgid "Answer"
40 msgctxt "action, answers the incoming call"
41 msgid "Answer"
42 msgstr "Freagra"
43
44 #: src/approver.cpp:59 src/approver.cpp:82
45 msgctxt "action, rejects the incoming call"
46 msgid "Reject"
47 msgstr ""
48
49 #: src/call-window.cpp:95
50 #, kde-format
51 msgid "Call with %1"
52 msgstr ""
53
54 #: src/call-window.cpp:109
55 msgctxt "@info:status"
56 msgid "Connecting..."
57 msgstr "Á Cheangal..."
58
59 #: src/call-window.cpp:113
60 #, fuzzy
61 #| msgctxt "@info:status"
62 #| msgid "Connecting..."
63 msgctxt "@info:status the remote user's phone is ringing"
64 msgid "Ringing..."
65 msgstr "Á Cheangal..."
66
67 #: src/call-window.cpp:117
68 msgctxt "@info:status"
69 msgid "Remote user accepted the call, waiting for connection..."
70 msgstr ""
71
72 #: src/call-window.cpp:120
73 msgctxt "@info:status"
74 msgid "Talking..."
75 msgstr "Ag Caint..."
76
77 #: src/call-window.cpp:136
78 msgctxt "@info:status"
79 msgid "Remote contact ended the call."
80 msgstr ""
81
82 #: src/call-window.cpp:143
83 msgctxt "@info:status"
84 msgid "Remote contact rejected the call."
85 msgstr ""
86
87 #: src/call-window.cpp:148
88 msgctxt "@info:status"
89 msgid "Remote contact didn't answer."
90 msgstr ""
91
92 #: src/call-window.cpp:152
93 msgctxt "@info:status"
94 msgid "Invalid number or contact."
95 msgstr ""
96
97 #: src/call-window.cpp:156
98 msgctxt "@info:status"
99 msgid "You don't have enough balance to make this call."
100 msgstr ""
101
102 #: src/call-window.cpp:158
103 msgctxt "@info:status"
104 msgid "You don't have permission to make this call."
105 msgstr ""
106
107 #: src/call-window.cpp:163
108 msgctxt "@info:status"
109 msgid "Remote contact is currently busy."
110 msgstr ""
111
112 #: src/call-window.cpp:167
113 msgctxt "@info:status"
114 msgid "Internal component error."
115 msgstr ""
116
117 #: src/call-window.cpp:170
118 msgctxt "@info:status"
119 msgid "Remote service error."
120 msgstr ""
121
122 #: src/call-window.cpp:173
123 msgctxt "@info:status"
124 msgid "Network error."
125 msgstr ""
126
127 #: src/call-window.cpp:177
128 msgctxt "@info:status"
129 msgid "Failed to negotiate codecs."
130 msgstr ""
131
132 #: src/call-window.cpp:179
133 msgctxt "@info:status"
134 msgid "Unsupported media type."
135 msgstr ""
136
137 #: src/call-window.cpp:183
138 msgctxt "@info:status"
139 msgid "Connectivity error."
140 msgstr ""
141
142 #: src/call-window.cpp:187
143 msgctxt "@info:status"
144 msgid "Unknown error."
145 msgstr ""
146
147 #: src/call-window.cpp:192
148 msgctxt "@info:status"
149 msgid "Disconnected."
150 msgstr "Dícheangailte."
151
152 #: src/call-window.cpp:196
153 #, fuzzy, kde-format
154 #| msgctxt "@info:status"
155 #| msgid "Disconnected."
156 msgctxt "@info:status the call was disconnected because..."
157 msgid "Disconnected: %1"
158 msgstr "Dícheangailte."
159
160 #: src/call-window.cpp:339
161 msgctxt "@action"
162 msgid "Show my video"
163 msgstr "Taispeáin m'fhíseán"
164
165 #: src/call-window.cpp:344
166 msgctxt "@action"
167 msgid "Show dialpad"
168 msgstr "Taispeáin eochaircheap"
169
170 #: src/call-window.cpp:351
171 msgctxt "@action"
172 msgid "Send video"
173 msgstr "Seol físeán"
174
175 #: src/call-window.cpp:356 src/call-window.cpp:357
176 msgctxt "@action"
177 msgid "Mute"
178 msgstr "Gan Fuaim"
179
180 #: src/call-window.cpp:363
181 msgctxt "@action"
182 msgid "Hold"
183 msgstr "Cuir Ar Feitheamh"
184
185 #: src/call-window.cpp:368
186 msgctxt "@action"
187 msgid "Hangup"
188 msgstr "Croch suas"
189
190 #: src/main.cpp:36
191 msgid "KDE Telepathy Call Ui"
192 msgstr ""
193
194 #: src/main.cpp:37
195 msgid "VoIP client for KDE"
196 msgstr "Cliant VoIP KDE"
197
198 #: src/main.cpp:38
199 msgid "(C) 2009, George Kiagiadakis"
200 msgstr "© 2009, George Kiagiadakis"
201
202 #: src/main.cpp:40
203 msgctxt "@info:credit"
204 msgid "George Kiagiadakis"
205 msgstr "George Kiagiadakis"
206
207 #: rc.cpp:1
208 msgctxt "NAME OF TRANSLATORS"
209 msgid "Your names"
210 msgstr "Kevin Scannell"
211
212 #: rc.cpp:2
213 msgctxt "EMAIL OF TRANSLATORS"
214 msgid "Your emails"
215 msgstr "kscanne@gmail.com"
216
217 #. i18n: file: src/callwindowui.rc:11
218 #. i18n: ectx: Menu (call)
219 #: rc.cpp:5
220 msgid "Call"
221 msgstr "Glao"
222
223 #. i18n: file: src/callwindowui.rc:20
224 #. i18n: ectx: Menu (media)
225 #: rc.cpp:8
226 msgid "Media"
227 msgstr "Meáin"
228
229 #. i18n: file: src/callwindowui.rc:27
230 #. i18n: ectx: ToolBar (mainToolBar)
231 #: rc.cpp:11
232 msgid "Main Toolbar"
233 msgstr "Príomhbharra Uirlisí"
234
235 #. i18n: file: src/dtmf-widget.ui:17
236 #. i18n: ectx: property (text), widget (QPushButton, button1)
237 #: rc.cpp:14
238 msgid "1"
239 msgstr "1"
240
241 #. i18n: file: src/dtmf-widget.ui:24
242 #. i18n: ectx: property (text), widget (QPushButton, button2)
243 #: rc.cpp:17
244 msgid "2"
245 msgstr "2"
246
247 #. i18n: file: src/dtmf-widget.ui:31
248 #. i18n: ectx: property (text), widget (QPushButton, button3)
249 #: rc.cpp:20
250 msgid "3"
251 msgstr "3"
252
253 #. i18n: file: src/dtmf-widget.ui:38
254 #. i18n: ectx: property (text), widget (QPushButton, button4)
255 #: rc.cpp:23
256 msgid "4"
257 msgstr "4"
258
259 #. i18n: file: src/dtmf-widget.ui:45
260 #. i18n: ectx: property (text), widget (QPushButton, button5)
261 #: rc.cpp:26
262 msgid "5"
263 msgstr "5"
264
265 #. i18n: file: src/dtmf-widget.ui:52
266 #. i18n: ectx: property (text), widget (QPushButton, button6)
267 #: rc.cpp:29
268 msgid "6"
269 msgstr "6"
270
271 #. i18n: file: src/dtmf-widget.ui:59
272 #. i18n: ectx: property (text), widget (QPushButton, button7)
273 #: rc.cpp:32
274 msgid "7"
275 msgstr "7"
276
277 #. i18n: file: src/dtmf-widget.ui:66
278 #. i18n: ectx: property (text), widget (QPushButton, button8)
279 #: rc.cpp:35
280 msgid "8"
281 msgstr "8"
282
283 #. i18n: file: src/dtmf-widget.ui:73
284 #. i18n: ectx: property (text), widget (QPushButton, button9)
285 #: rc.cpp:38
286 msgid "9"
287 msgstr "9"
288
289 #. i18n: file: src/dtmf-widget.ui:80
290 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
291 #: rc.cpp:41
292 msgid "*"
293 msgstr "*"
294
295 #. i18n: file: src/dtmf-widget.ui:87
296 #. i18n: ectx: property (text), widget (QPushButton, button0)
297 #: rc.cpp:44
298 msgid "0"
299 msgstr "0"
300
301 #. i18n: file: src/dtmf-widget.ui:94
302 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
303 #: rc.cpp:47
304 msgid "#"
305 msgstr "#"
306
307 #~ msgid "Warning: %1"
308 #~ msgstr "Rabhadh: %1"
309
310 #~ msgid "Error: %1"
311 #~ msgstr "Earráid: %1"
312
313 #~ msgid "KCall"
314 #~ msgstr "KCall"
315
316 #~ msgid "Brightness"
317 #~ msgstr "Gile"
318
319 #~ msgid "Contrast"
320 #~ msgstr "Codarsnacht"
321
322 #~ msgid "Hue"
323 #~ msgstr "Lí"
324
325 #~ msgid "Saturation"
326 #~ msgstr "Sáithiú"
327
328 #~ msgid "Dialpad"
329 #~ msgstr "Eochaircheap"
330
331 #~ msgid "Volume"
332 #~ msgstr "Airde"
333
334 #~ msgid "Microphone"
335 #~ msgstr "Micreafón"
336
337 #~ msgid "Participants"
338 #~ msgstr "Rannpháirtithe"
339
340 #~ msgid "Account"
341 #~ msgstr "Cuntas"
342
343 #~ msgid "Autodetect"
344 #~ msgstr "Braith go huathoibríoch"
345
346 #~ msgid "ALSA"
347 #~ msgstr "ALSA"
348
349 #~ msgid "OSS"
350 #~ msgstr "OSS"
351
352 #~ msgid "Video4Linux"
353 #~ msgstr "Video4Linux"
354
355 #~ msgid "Device name"
356 #~ msgstr "Ainm an ghléis"
357
358 #~ msgid "Timeout in seconds:"
359 #~ msgstr "Teorainn Ama (soicindí):"
360
361 #~ msgid "Ignore"
362 #~ msgstr "Déan neamhaird de"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( gl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Xosé <xosecalvo@gmail.com>, 2009.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2009-11-23 23:15+0100\n"
10 "Last-Translator: Xosé <xosecalvo@gmail.com>\n"
11 "Language-Team: Galego <proxecto@trasno.net>\n"
12 "Language: gl\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.0\n"
17 "Plural-Forms: nplurals=2; plural=n != 1;\n"
18 "X-Environment: kde\n"
19 "X-Accelerator-Marker: &\n"
20 "X-Text-Markup: kde4\n"
21
22 #: src/approver.cpp:38
23 #, fuzzy
24 #| msgctxt "@action:inmenu"
25 #| msgid "Video call"
26 msgid "Incoming video call"
27 msgstr "Chamada de vídeo"
28
29 #: src/approver.cpp:39
30 #, kde-format
31 msgid "<p>%1 is asking you for a video call</p>"
32 msgstr ""
33
34 #: src/approver.cpp:41
35 #, fuzzy
36 #| msgctxt "@action:inmenu"
37 #| msgid "Voice call"
38 msgid "Incoming call"
39 msgstr "Chamada de voz"
40
41 #: src/approver.cpp:42
42 #, kde-format
43 msgid "<p>%1 is calling you</p>"
44 msgstr ""
45
46 #: src/approver.cpp:58 src/approver.cpp:80
47 msgctxt "action, answers the incoming call"
48 msgid "Answer"
49 msgstr ""
50
51 #: src/approver.cpp:59 src/approver.cpp:82
52 msgctxt "action, rejects the incoming call"
53 msgid "Reject"
54 msgstr ""
55
56 #: src/call-window.cpp:95
57 #, kde-format
58 msgid "Call with %1"
59 msgstr ""
60
61 #: src/call-window.cpp:109
62 msgctxt "@info:status"
63 msgid "Connecting..."
64 msgstr "A conectar..."
65
66 #: src/call-window.cpp:113
67 #, fuzzy
68 #| msgctxt "@info:status"
69 #| msgid "Connecting..."
70 msgctxt "@info:status the remote user's phone is ringing"
71 msgid "Ringing..."
72 msgstr "A conectar..."
73
74 #: src/call-window.cpp:117
75 msgctxt "@info:status"
76 msgid "Remote user accepted the call, waiting for connection..."
77 msgstr ""
78
79 #: src/call-window.cpp:120
80 msgctxt "@info:status"
81 msgid "Talking..."
82 msgstr "A falar..."
83
84 #: src/call-window.cpp:136
85 msgctxt "@info:status"
86 msgid "Remote contact ended the call."
87 msgstr ""
88
89 #: src/call-window.cpp:143
90 msgctxt "@info:status"
91 msgid "Remote contact rejected the call."
92 msgstr ""
93
94 #: src/call-window.cpp:148
95 msgctxt "@info:status"
96 msgid "Remote contact didn't answer."
97 msgstr ""
98
99 #: src/call-window.cpp:152
100 msgctxt "@info:status"
101 msgid "Invalid number or contact."
102 msgstr ""
103
104 #: src/call-window.cpp:156
105 msgctxt "@info:status"
106 msgid "You don't have enough balance to make this call."
107 msgstr ""
108
109 #: src/call-window.cpp:158
110 msgctxt "@info:status"
111 msgid "You don't have permission to make this call."
112 msgstr ""
113
114 #: src/call-window.cpp:163
115 msgctxt "@info:status"
116 msgid "Remote contact is currently busy."
117 msgstr ""
118
119 #: src/call-window.cpp:167
120 msgctxt "@info:status"
121 msgid "Internal component error."
122 msgstr ""
123
124 #: src/call-window.cpp:170
125 msgctxt "@info:status"
126 msgid "Remote service error."
127 msgstr ""
128
129 #: src/call-window.cpp:173
130 msgctxt "@info:status"
131 msgid "Network error."
132 msgstr ""
133
134 #: src/call-window.cpp:177
135 msgctxt "@info:status"
136 msgid "Failed to negotiate codecs."
137 msgstr ""
138
139 #: src/call-window.cpp:179
140 msgctxt "@info:status"
141 msgid "Unsupported media type."
142 msgstr ""
143
144 #: src/call-window.cpp:183
145 msgctxt "@info:status"
146 msgid "Connectivity error."
147 msgstr ""
148
149 #: src/call-window.cpp:187
150 msgctxt "@info:status"
151 msgid "Unknown error."
152 msgstr ""
153
154 #: src/call-window.cpp:192
155 msgctxt "@info:status"
156 msgid "Disconnected."
157 msgstr "Desconectado."
158
159 #: src/call-window.cpp:196
160 #, fuzzy, kde-format
161 #| msgctxt "@info:status"
162 #| msgid "Disconnected"
163 msgctxt "@info:status the call was disconnected because..."
164 msgid "Disconnected: %1"
165 msgstr "Desconectado"
166
167 #: src/call-window.cpp:339
168 #, fuzzy
169 #| msgctxt "@action"
170 #| msgid "Send video"
171 msgctxt "@action"
172 msgid "Show my video"
173 msgstr "Enviar vídeo"
174
175 #: src/call-window.cpp:344
176 #, fuzzy
177 #| msgid "Dialpad"
178 msgctxt "@action"
179 msgid "Show dialpad"
180 msgstr "Teclado para marcar"
181
182 #: src/call-window.cpp:351
183 msgctxt "@action"
184 msgid "Send video"
185 msgstr "Enviar vídeo"
186
187 #: src/call-window.cpp:356 src/call-window.cpp:357
188 msgctxt "@action"
189 msgid "Mute"
190 msgstr ""
191
192 #: src/call-window.cpp:363
193 msgctxt "@action"
194 msgid "Hold"
195 msgstr ""
196
197 #: src/call-window.cpp:368
198 msgctxt "@action"
199 msgid "Hangup"
200 msgstr "Colgar"
201
202 #: src/main.cpp:36
203 msgid "KDE Telepathy Call Ui"
204 msgstr ""
205
206 #: src/main.cpp:37
207 msgid "VoIP client for KDE"
208 msgstr "Cliente de VoIP para o KDE"
209
210 #: src/main.cpp:38
211 msgid "(C) 2009, George Kiagiadakis"
212 msgstr "(C) 2009, George Kiagiadakis"
213
214 #: src/main.cpp:40
215 msgctxt "@info:credit"
216 msgid "George Kiagiadakis"
217 msgstr "George Kiagiadakis"
218
219 #: rc.cpp:1
220 msgctxt "NAME OF TRANSLATORS"
221 msgid "Your names"
222 msgstr "Xosé Calvo"
223
224 #: rc.cpp:2
225 msgctxt "EMAIL OF TRANSLATORS"
226 msgid "Your emails"
227 msgstr "xosecalvo@gmail.com"
228
229 #. i18n: file: src/callwindowui.rc:11
230 #. i18n: ectx: Menu (call)
231 #: rc.cpp:5
232 msgid "Call"
233 msgstr "Chamada"
234
235 #. i18n: file: src/callwindowui.rc:20
236 #. i18n: ectx: Menu (media)
237 #: rc.cpp:8
238 msgid "Media"
239 msgstr ""
240
241 #. i18n: file: src/callwindowui.rc:27
242 #. i18n: ectx: ToolBar (mainToolBar)
243 #: rc.cpp:11
244 msgid "Main Toolbar"
245 msgstr "Barra de ferramentas principal"
246
247 #. i18n: file: src/dtmf-widget.ui:17
248 #. i18n: ectx: property (text), widget (QPushButton, button1)
249 #: rc.cpp:14
250 msgid "1"
251 msgstr "1"
252
253 #. i18n: file: src/dtmf-widget.ui:24
254 #. i18n: ectx: property (text), widget (QPushButton, button2)
255 #: rc.cpp:17
256 msgid "2"
257 msgstr "2"
258
259 #. i18n: file: src/dtmf-widget.ui:31
260 #. i18n: ectx: property (text), widget (QPushButton, button3)
261 #: rc.cpp:20
262 msgid "3"
263 msgstr "3"
264
265 #. i18n: file: src/dtmf-widget.ui:38
266 #. i18n: ectx: property (text), widget (QPushButton, button4)
267 #: rc.cpp:23
268 msgid "4"
269 msgstr "4"
270
271 #. i18n: file: src/dtmf-widget.ui:45
272 #. i18n: ectx: property (text), widget (QPushButton, button5)
273 #: rc.cpp:26
274 msgid "5"
275 msgstr "5"
276
277 #. i18n: file: src/dtmf-widget.ui:52
278 #. i18n: ectx: property (text), widget (QPushButton, button6)
279 #: rc.cpp:29
280 msgid "6"
281 msgstr " "
282
283 #. i18n: file: src/dtmf-widget.ui:59
284 #. i18n: ectx: property (text), widget (QPushButton, button7)
285 #: rc.cpp:32
286 msgid "7"
287 msgstr "7"
288
289 #. i18n: file: src/dtmf-widget.ui:66
290 #. i18n: ectx: property (text), widget (QPushButton, button8)
291 #: rc.cpp:35
292 msgid "8"
293 msgstr " "
294
295 #. i18n: file: src/dtmf-widget.ui:73
296 #. i18n: ectx: property (text), widget (QPushButton, button9)
297 #: rc.cpp:38
298 msgid "9"
299 msgstr "9"
300
301 #. i18n: file: src/dtmf-widget.ui:80
302 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
303 #: rc.cpp:41
304 msgid "*"
305 msgstr "*"
306
307 #. i18n: file: src/dtmf-widget.ui:87
308 #. i18n: ectx: property (text), widget (QPushButton, button0)
309 #: rc.cpp:44
310 msgid "0"
311 msgstr "0"
312
313 #. i18n: file: src/dtmf-widget.ui:94
314 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
315 #: rc.cpp:47
316 msgid "#"
317 msgstr "#"
318
319 #~ msgid "Warning: %1"
320 #~ msgstr "Aviso: %1"
321
322 #~ msgid "Error: %1"
323 #~ msgstr "Erro: %1"
324
325 #~ msgid "KCall"
326 #~ msgstr "KCall"
327
328 #~ msgid "Brightness"
329 #~ msgstr "Brillo"
330
331 #~ msgid "Contrast"
332 #~ msgstr "Contraste"
333
334 #~ msgid "Hue"
335 #~ msgstr "Matiz"
336
337 #~ msgid "Saturation"
338 #~ msgstr "Saturación"
339
340 #~ msgid "Dialpad"
341 #~ msgstr "Teclado para marcar"
342
343 #~ msgid ""
344 #~ "Defines whether the window should close automatically after a timeout "
345 #~ "when the call is over."
346 #~ msgstr ""
347 #~ "Define se a xanela se fecha automaticamente logo dun tempo de espera ao "
348 #~ "rematar a chamada."
349
350 #~ msgid ""
351 #~ "Defines how many seconds the call window should remain visible after the "
352 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
353 #~ msgstr ""
354 #~ "Define o número de segundos que fica visíbel a xanela de chamada unha vez "
355 #~ "rematada a chamada. Esta opción depende de \"CloseOnDisconnect\"."
356
357 #~ msgid "The audio input device could not be initialized"
358 #~ msgstr "Non foi posíbel inicializar o dispositivo de entrada de son"
359
360 #, fuzzy
361 #~| msgid "The video input device could not be initialized."
362 #~ msgid "The video input device could not be initialized"
363 #~ msgstr "Non foi posíbel inicializar o dispositivo de entrada de vídeo."
364
365 #, fuzzy
366 #~| msgid ""
367 #~| "Some gstreamer elements could not be created. Please check your "
368 #~| "gstreamer installation."
369 #~ msgid ""
370 #~ "Could not create some of the required elements. Please check your "
371 #~ "GStreamer installation."
372 #~ msgstr ""
373 #~ "Non foi posíbel crear algúns elementos de gstreamer. Verifique a "
374 #~ "instalación do gstreamer."
375
376 #~ msgid "The audio output device could not be initialized"
377 #~ msgstr "Non foi posíbel inicializar o dispositivo de saída de son"
378
379 #~ msgctxt "@action:inmenu"
380 #~ msgid "Show participants"
381 #~ msgstr "Mostrar os participantes"
382
383 #~ msgctxt "@action:inmenu"
384 #~ msgid "Show log"
385 #~ msgstr "Mostrar o rexistro"
386
387 #~ msgctxt "@action"
388 #~ msgid "Stop sending video"
389 #~ msgstr "Parar de enviar vídeo"
390
391 #~ msgctxt "@action:inmenu"
392 #~ msgid "Status"
393 #~ msgstr "Estado"
394
395 #~ msgctxt "@action:inmenu"
396 #~ msgid "Available"
397 #~ msgstr "Dispoñíbel"
398
399 #~ msgctxt "@action:inmenu"
400 #~ msgid "Away"
401 #~ msgstr "Fóra"
402
403 #~ msgctxt "@action:inmenu"
404 #~ msgid "Be right back"
405 #~ msgstr "Volvo axiña"
406
407 #~ msgctxt "@action:inmenu"
408 #~ msgid "Busy"
409 #~ msgstr "Ocupada/o"
410
411 #~ msgctxt "@action:inmenu"
412 #~ msgid "Do not disturb"
413 #~ msgstr "Non amolar"
414
415 #~ msgctxt "@action:inmenu"
416 #~ msgid "Extended Away"
417 #~ msgstr "Fóra moito tempo"
418
419 #~ msgctxt "@action:inmenu"
420 #~ msgid "Invisible"
421 #~ msgstr "Invisíbel"
422
423 #~ msgctxt "@action:inmenu"
424 #~ msgid "Offline"
425 #~ msgstr "Desconectada/o"
426
427 #~ msgctxt "@info:status"
428 #~ msgid "Waiting for account information..."
429 #~ msgstr "A agardar pola información da conta..."
430
431 #~ msgctxt "protocol - display name (Connecting)"
432 #~ msgid "%1 - %2 (Connecting)"
433 #~ msgstr "%1 - %2 (A conectar)"
434
435 #~ msgctxt "protocol - display name"
436 #~ msgid "%1 - %2"
437 #~ msgstr "%1 - %2"
438
439 #~ msgctxt "@title:window"
440 #~ msgid "KCall"
441 #~ msgstr "KCall"
442
443 #~ msgctxt "@info:status"
444 #~ msgid "Connected"
445 #~ msgstr "Conectado"
446
447 #~ msgctxt "@action"
448 #~ msgid "Disconnect"
449 #~ msgstr "Desconectar"
450
451 #~ msgctxt "@action"
452 #~ msgid "Cancel connection attempt"
453 #~ msgstr "Cancelar a tentativa de conexión"
454
455 #~ msgctxt "@action"
456 #~ msgid "Connect"
457 #~ msgstr "Conectar"
458
459 #~ msgid ""
460 #~ "You have requested to close KCall. Note that KCall will not actually "
461 #~ "quit, but it will stay active in the system tray waiting for incoming "
462 #~ "calls."
463 #~ msgstr ""
464 #~ "Solicitou fechar o KCall. Lembre que o KCall non sae de todo, senón que "
465 #~ "fica activo na bandexa do sistema a agardar por chamadas entrantes."
466
467 #~ msgid "Volume"
468 #~ msgstr "Volume"
469
470 #~ msgid "Speakers"
471 #~ msgstr "Altofalantes"
472
473 #~ msgid "Microphone"
474 #~ msgstr "Micrófono"
475
476 #~ msgid "Video controls"
477 #~ msgstr "Controles de vídeo"
478
479 #~ msgid "Video input"
480 #~ msgstr "Entrada de vídeo"
481
482 #~ msgid "Call log"
483 #~ msgstr "Rexistro de chamadas"
484
485 #~ msgid "Participants"
486 #~ msgstr "Participantes"
487
488 #~ msgctxt "@title:tab"
489 #~ msgid "&Contact list"
490 #~ msgstr "Lista de &contactos"
491
492 #~ msgid "Dial directly"
493 #~ msgstr "Marcar directamente"
494
495 #~ msgid "Account"
496 #~ msgstr "Conta"
497
498 #~ msgid "Contact handle"
499 #~ msgstr "Manipulador do contacto"
500
501 #~ msgid "Dial (Audio only)"
502 #~ msgstr "Marcar (só voz)"
503
504 #~ msgid "Dial (Audio/Video)"
505 #~ msgstr "Marcar (voz/vídeo)"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( hu ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Kristóf Kiszel <ulysses@kubuntu.org>, 2011, 2012.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-06-05 23:09+0200\n"
10 "Last-Translator: Kristóf Kiszel <ulysses@kubuntu.org>\n"
11 "Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
12 "Language: hu\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.4\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr "Bejövő videohívás"
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr "<p>%1 videohívást kezdeményez Önnel</p>"
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr "Bejövő hívás"
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr "<p>%1 hívja Önt</p>"
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr "Válasz"
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr "Elutasítás"
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr "Felhívás ezzel: %1"
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "Kapcsolódás…"
56
57 #: src/call-window.cpp:113
58 msgctxt "@info:status the remote user's phone is ringing"
59 msgid "Ringing..."
60 msgstr "Kicsöng…"
61
62 #: src/call-window.cpp:117
63 msgctxt "@info:status"
64 msgid "Remote user accepted the call, waiting for connection..."
65 msgstr "A távoli felhasználó fogadta a hívást, várakozás kapcsolódásra…"
66
67 #: src/call-window.cpp:120
68 msgctxt "@info:status"
69 msgid "Talking..."
70 msgstr "Beszélgetés…"
71
72 #: src/call-window.cpp:136
73 msgctxt "@info:status"
74 msgid "Remote contact ended the call."
75 msgstr "A távoli partner befejezte a hívást."
76
77 #: src/call-window.cpp:143
78 msgctxt "@info:status"
79 msgid "Remote contact rejected the call."
80 msgstr "A távoli partner elutasította a hívást."
81
82 #: src/call-window.cpp:148
83 msgctxt "@info:status"
84 msgid "Remote contact didn't answer."
85 msgstr "A távoli partner nem válaszol."
86
87 #: src/call-window.cpp:152
88 msgctxt "@info:status"
89 msgid "Invalid number or contact."
90 msgstr "Érvénytelen szám vagy névjegy."
91
92 #: src/call-window.cpp:156
93 msgctxt "@info:status"
94 msgid "You don't have enough balance to make this call."
95 msgstr "Nincs elég pénz az egyenlegén a hívás kezdeményezéséhez."
96
97 #: src/call-window.cpp:158
98 msgctxt "@info:status"
99 msgid "You don't have permission to make this call."
100 msgstr "Nincs jogosultsága a hívás kezdeményezéséhez."
101
102 #: src/call-window.cpp:163
103 msgctxt "@info:status"
104 msgid "Remote contact is currently busy."
105 msgstr "A távoli partner jelenleg elfoglalt."
106
107 #: src/call-window.cpp:167
108 msgctxt "@info:status"
109 msgid "Internal component error."
110 msgstr "Belső komponenshiba."
111
112 #: src/call-window.cpp:170
113 msgctxt "@info:status"
114 msgid "Remote service error."
115 msgstr "Távoli szolgáltatáshiba."
116
117 #: src/call-window.cpp:173
118 msgctxt "@info:status"
119 msgid "Network error."
120 msgstr "Hálózati hiba."
121
122 #: src/call-window.cpp:177
123 msgctxt "@info:status"
124 msgid "Failed to negotiate codecs."
125 msgstr "Nem sikerült egyeztetni a kodekeket."
126
127 #: src/call-window.cpp:179
128 msgctxt "@info:status"
129 msgid "Unsupported media type."
130 msgstr "Nem támogatott médiatípus."
131
132 #: src/call-window.cpp:183
133 msgctxt "@info:status"
134 msgid "Connectivity error."
135 msgstr "Kapcsolódási hiba."
136
137 #: src/call-window.cpp:187
138 msgctxt "@info:status"
139 msgid "Unknown error."
140 msgstr "Ismeretlen hiba."
141
142 #: src/call-window.cpp:192
143 msgctxt "@info:status"
144 msgid "Disconnected."
145 msgstr "Szétkapcsolva."
146
147 #: src/call-window.cpp:196
148 #, kde-format
149 msgctxt "@info:status the call was disconnected because..."
150 msgid "Disconnected: %1"
151 msgstr "Szétkapcsolva: %1"
152
153 #: src/call-window.cpp:339
154 msgctxt "@action"
155 msgid "Show my video"
156 msgstr "Saját videó megjelenítése"
157
158 #: src/call-window.cpp:344
159 msgctxt "@action"
160 msgid "Show dialpad"
161 msgstr "Tárcsázó megjelenítése"
162
163 #: src/call-window.cpp:351
164 msgctxt "@action"
165 msgid "Send video"
166 msgstr "Videó küldése"
167
168 #: src/call-window.cpp:356 src/call-window.cpp:357
169 msgctxt "@action"
170 msgid "Mute"
171 msgstr "Némítás"
172
173 #: src/call-window.cpp:363
174 msgctxt "@action"
175 msgid "Hold"
176 msgstr "Tartás"
177
178 #: src/call-window.cpp:368
179 msgctxt "@action"
180 msgid "Hangup"
181 msgstr "Bontás"
182
183 #: src/main.cpp:36
184 msgid "KDE Telepathy Call Ui"
185 msgstr "KDE Telepathy hívófelület"
186
187 #: src/main.cpp:37
188 msgid "VoIP client for KDE"
189 msgstr "VoIP-kliens a KDE-hez"
190
191 #: src/main.cpp:38
192 msgid "(C) 2009, George Kiagiadakis"
193 msgstr "© George Kiagiadakis, 2009."
194
195 #: src/main.cpp:40
196 msgctxt "@info:credit"
197 msgid "George Kiagiadakis"
198 msgstr "George Kiagiadakis"
199
200 #: rc.cpp:1
201 msgctxt "NAME OF TRANSLATORS"
202 msgid "Your names"
203 msgstr "Kiszel Kristóf"
204
205 #: rc.cpp:2
206 msgctxt "EMAIL OF TRANSLATORS"
207 msgid "Your emails"
208 msgstr "ulysses@kubuntu.org"
209
210 #. i18n: file: src/callwindowui.rc:11
211 #. i18n: ectx: Menu (call)
212 #: rc.cpp:5
213 msgid "Call"
214 msgstr "Hívás"
215
216 #. i18n: file: src/callwindowui.rc:20
217 #. i18n: ectx: Menu (media)
218 #: rc.cpp:8
219 msgid "Media"
220 msgstr "Média"
221
222 #. i18n: file: src/callwindowui.rc:27
223 #. i18n: ectx: ToolBar (mainToolBar)
224 #: rc.cpp:11
225 msgid "Main Toolbar"
226 msgstr "Alap eszköztár"
227
228 #. i18n: file: src/dtmf-widget.ui:17
229 #. i18n: ectx: property (text), widget (QPushButton, button1)
230 #: rc.cpp:14
231 msgid "1"
232 msgstr "1"
233
234 #. i18n: file: src/dtmf-widget.ui:24
235 #. i18n: ectx: property (text), widget (QPushButton, button2)
236 #: rc.cpp:17
237 msgid "2"
238 msgstr "2"
239
240 #. i18n: file: src/dtmf-widget.ui:31
241 #. i18n: ectx: property (text), widget (QPushButton, button3)
242 #: rc.cpp:20
243 msgid "3"
244 msgstr "3"
245
246 #. i18n: file: src/dtmf-widget.ui:38
247 #. i18n: ectx: property (text), widget (QPushButton, button4)
248 #: rc.cpp:23
249 msgid "4"
250 msgstr "4"
251
252 #. i18n: file: src/dtmf-widget.ui:45
253 #. i18n: ectx: property (text), widget (QPushButton, button5)
254 #: rc.cpp:26
255 msgid "5"
256 msgstr "5"
257
258 #. i18n: file: src/dtmf-widget.ui:52
259 #. i18n: ectx: property (text), widget (QPushButton, button6)
260 #: rc.cpp:29
261 msgid "6"
262 msgstr "6"
263
264 #. i18n: file: src/dtmf-widget.ui:59
265 #. i18n: ectx: property (text), widget (QPushButton, button7)
266 #: rc.cpp:32
267 msgid "7"
268 msgstr "7"
269
270 #. i18n: file: src/dtmf-widget.ui:66
271 #. i18n: ectx: property (text), widget (QPushButton, button8)
272 #: rc.cpp:35
273 msgid "8"
274 msgstr "8"
275
276 #. i18n: file: src/dtmf-widget.ui:73
277 #. i18n: ectx: property (text), widget (QPushButton, button9)
278 #: rc.cpp:38
279 msgid "9"
280 msgstr "9"
281
282 #. i18n: file: src/dtmf-widget.ui:80
283 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
284 #: rc.cpp:41
285 msgid "*"
286 msgstr "*"
287
288 #. i18n: file: src/dtmf-widget.ui:87
289 #. i18n: ectx: property (text), widget (QPushButton, button0)
290 #: rc.cpp:44
291 msgid "0"
292 msgstr "0"
293
294 #. i18n: file: src/dtmf-widget.ui:94
295 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
296 #: rc.cpp:47
297 msgid "#"
298 msgstr "#"
299
300 #~ msgid "Warning: %1"
301 #~ msgstr "Figyelmeztetés: %1"
302
303 #~ msgid "Error: %1"
304 #~ msgstr "Hiba: %1"
305
306 #~ msgid "KCall"
307 #~ msgstr "KCall"
308
309 #~ msgid "Brightness"
310 #~ msgstr "Fényesség"
311
312 #~ msgid "Contrast"
313 #~ msgstr "Kontraszt"
314
315 #~ msgid "Hue"
316 #~ msgstr "Árnyalat"
317
318 #~ msgid "Saturation"
319 #~ msgstr "Telítettség"
320
321 #~ msgid "Dialpad"
322 #~ msgstr "Tárcsázókészülék"
323
324 #~ msgid ""
325 #~ "Defines whether the window should close automatically after a timeout "
326 #~ "when the call is over."
327 #~ msgstr ""
328 #~ "Megadja, hogy az ablak bezáródjon-e egy bizonyos idő leteltével a hívás "
329 #~ "vége után."
330
331 #~ msgid ""
332 #~ "Defines how many seconds the call window should remain visible after the "
333 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
334 #~ msgstr ""
335 #~ "Megadja, hogy hány másodpercig maradjon még látható a hívóablak a hívás "
336 #~ "befejezése után. Ez a beállítás a „CloseOnDisconnect”-től függ."
337
338 #~ msgid "The audio input device could not be initialized"
339 #~ msgstr "Nem sikerült inicializálni a hangbeviteli eszközt"
340
341 #~ msgid "The video input device could not be initialized"
342 #~ msgstr "Nem sikerült inicializálni a videobeviteli eszközt"
343
344 #~ msgid ""
345 #~ "Could not create some of the required elements. Please check your "
346 #~ "GStreamer installation."
347 #~ msgstr ""
348 #~ "Nem sikerült létrehozni néhány elemet, ellenőrizze a GStreamer "
349 #~ "telepítését."
350
351 #~ msgid "The audio output device could not be initialized"
352 #~ msgstr "Nem sikerült inicializálni a hangkimeneti eszközt"
353
354 #~ msgctxt "@action:inmenu"
355 #~ msgid "Show participants"
356 #~ msgstr "Résztvevők megjelenítése"
357
358 #~ msgctxt "@action:inmenu"
359 #~ msgid "Show log"
360 #~ msgstr "Napló megjelenítése"
361
362 #~ msgctxt "@action"
363 #~ msgid "Stop sending video"
364 #~ msgstr "Videoküldés megállítása"
365
366 #~ msgctxt "@action:inmenu"
367 #~ msgid "Status"
368 #~ msgstr "Állapot"
369
370 #~ msgctxt "@action:inmenu"
371 #~ msgid "Available"
372 #~ msgstr "Elérhető"
373
374 #~ msgctxt "@action:inmenu"
375 #~ msgid "Away"
376 #~ msgstr "Távollét"
377
378 #~ msgctxt "@action:inmenu"
379 #~ msgid "Be right back"
380 #~ msgstr "Rögtön jövök"
381
382 #~ msgctxt "@action:inmenu"
383 #~ msgid "Busy"
384 #~ msgstr "Elfoglalt"
385
386 #~ msgctxt "@action:inmenu"
387 #~ msgid "Do not disturb"
388 #~ msgstr "Ne zavarjanak"
389
390 #~ msgctxt "@action:inmenu"
391 #~ msgid "Extended Away"
392 #~ msgstr "Hosszabb távollét"
393
394 #~ msgctxt "@action:inmenu"
395 #~ msgid "Invisible"
396 #~ msgstr "Láthatatlan"
397
398 #~ msgctxt "@action:inmenu"
399 #~ msgid "Offline"
400 #~ msgstr "Offline"
401
402 #~ msgctxt "@info:status"
403 #~ msgid "Waiting for account information..."
404 #~ msgstr "Várakozás az azonosítóinformációkra…"
405
406 #~ msgctxt "protocol - display name (Connecting)"
407 #~ msgid "%1 - %2 (Connecting)"
408 #~ msgstr "%2 - %1 (kapcsolódás)"
409
410 #~ msgctxt "protocol - display name"
411 #~ msgid "%1 - %2"
412 #~ msgstr "%2 - %1"
413
414 #~ msgctxt "@title:window"
415 #~ msgid "KCall"
416 #~ msgstr "KCall"
417
418 #~ msgctxt "@info:status"
419 #~ msgid "Connected"
420 #~ msgstr "Kapcsolódva"
421
422 #~ msgctxt "@action"
423 #~ msgid "Disconnect"
424 #~ msgstr "Kapcsolat bontása"
425
426 #~ msgctxt "@action"
427 #~ msgid "Cancel connection attempt"
428 #~ msgstr "Kapcsolódási kísérlet megszakítása"
429
430 #~ msgctxt "@action"
431 #~ msgid "Connect"
432 #~ msgstr "Kapcsolódás"
433
434 #~ msgid ""
435 #~ "You have requested to close KCall. Note that KCall will not actually "
436 #~ "quit, but it will stay active in the system tray waiting for incoming "
437 #~ "calls."
438 #~ msgstr ""
439 #~ "A KCall bezárását kérte, az viszont nem fog ténylegesen kilépni, hanem a "
440 #~ "paneltálcán fog várakozni bejövő hívásokra."
441
442 #~ msgid "Volume"
443 #~ msgstr "Hangerő"
444
445 #~ msgid "Speakers"
446 #~ msgstr "Hangszórók"
447
448 #~ msgid "Microphone"
449 #~ msgstr "Mikrofon"
450
451 #~ msgid "Video controls"
452 #~ msgstr "Videovezérlők"
453
454 #~ msgid "Video input"
455 #~ msgstr "Videobemenet"
456
457 #~ msgid "Call log"
458 #~ msgstr "Híváslista"
459
460 #~ msgid "Participants"
461 #~ msgstr "Résztvevők"
462
463 #~ msgctxt "@title:tab"
464 #~ msgid "&Contact list"
465 #~ msgstr "&Partnerlista"
466
467 #~ msgid "Dial directly"
468 #~ msgstr "Közvetlen tárcsázás"
469
470 #~ msgid "Account"
471 #~ msgstr "Azonosító"
472
473 #~ msgid "Contact handle"
474 #~ msgstr "Partnerkezelés"
475
476 #~ msgid "Dial (Audio only)"
477 #~ msgstr "Tárcsázás (csak hang)"
478
479 #~ msgid "Dial (Audio/Video)"
480 #~ msgstr "Tárcsázás (hang/videó)"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( it ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of ktp-call-ui.po to Italian
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Pino Toscano <toscano.pino@tiscali.it>, 2011, 2012.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: ktp-call-ui\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2012-05-07 10:55+0200\n"
11 "Last-Translator: Pino Toscano <toscano.pino@tiscali.it>\n"
12 "Language-Team: Italian <kde-i18n-it@kde.org>\n"
13 "Language: it\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: KBabel 1.11.4\n"
18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr "Videochiamata in arrivo"
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr "<p>%1 ti sta chiedendo di effettuare una videochiamata</p>"
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr "Chiamata in arrivo"
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr "<p>%1 ti sta chiamando</p>"
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr "Rispondi"
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr "Rifiuta"
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr "Chiamata con %1"
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr "Connessione..."
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr "Sta squillando..."
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr "L'utente remoto ha accettato la chiamata, in attesa di connessione..."
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr "In conversazione..."
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr "Il contatto remoto ha terminato la chiamata."
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr "Il contatto remoto ha rifiutato la chiamata."
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr "Il contatto remoto non ha risposto."
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr "Numero o contatto non valido."
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr "Non hai abbastanza credito per effettuare questa chiamata."
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr "Non hai i permessi per effettuare questa chiamata."
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr "Il contatto remoto al momento è occupato."
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr "Errore interno di un componente."
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr "Errore del servizio remoto."
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr "Errore di rete."
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr "Non è stato possibile negoziare i codificatori."
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr "Tipo multimediale non supportato."
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr "Errore di connessione."
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr "Errore sconosciuto."
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr "Disconnesso."
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr "Disconnesso: %1"
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr "Mostra il mio video"
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr "Mostra tastierino"
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr "Invia video"
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr "Muto"
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr "Trattieni"
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr "Termina"
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr "Interfaccia di chiamata Telepathy KDE"
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr "Client VoIP per KDE"
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr "(C) 2009, George Kiagiadakis"
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr "George Kiagiadakis"
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr "Pino Toscano"
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr "toscano.pino@tiscali.it"
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr "Chiamata"
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr "Media"
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr "Barra principale"
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr "1"
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr "2"
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr "3"
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr "4"
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr "5"
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr "6"
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr "7"
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr "8"
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr "9"
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr "*"
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr "0"
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr "#"
300
301 #~ msgid "Warning: %1"
302 #~ msgstr "Avviso: %1"
303
304 #~ msgid "Error: %1"
305 #~ msgstr "Errore: %1"
306
307 #~ msgid "Brightness"
308 #~ msgstr "Luminosità"
309
310 #~ msgid "Contrast"
311 #~ msgstr "Contrasto"
312
313 #~ msgid "Hue"
314 #~ msgstr "Tonalità"
315
316 #~ msgid "Saturation"
317 #~ msgstr "Saturazione"
318
319 #~ msgid "Dialpad"
320 #~ msgstr "Tastierino"
321
322 #~ msgid ""
323 #~ "Defines whether the window should close automatically after a timeout "
324 #~ "when the call is over."
325 #~ msgstr ""
326 #~ "Definisce se la finestra dovrebbe chiudersi automaticamente dopo un tempo "
327 #~ "prestabilito alla fine di una chiamata."
328
329 #~ msgid ""
330 #~ "Defines how many seconds the call window should remain visible after the "
331 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
332 #~ msgstr ""
333 #~ "Definisce quanti secondi la finestra dovrebbe rimanere visibile alla fine "
334 #~ "di una chiamata. Questa opzione dipende da «CloseOnDisconnect»."
335
336 #~ msgid "The audio input device could not be initialized"
337 #~ msgstr ""
338 #~ "Non è stato possibile inizializzare il dispositivo audio in ingresso"
339
340 #~ msgid "The video input device could not be initialized"
341 #~ msgstr ""
342 #~ "Non è stato possibile inizializzare il dispositivo video in ingresso"
343
344 #~ msgid ""
345 #~ "Could not create some of the required elements. Please check your "
346 #~ "GStreamer installation."
347 #~ msgstr ""
348 #~ "Non è stato possibile creare alcuni degli elementi richiesti. Controlla "
349 #~ "la tua installazione di GStreamer."
350
351 #~ msgid "The audio output device could not be initialized"
352 #~ msgstr "Non è stato possibile inizializzare il dispositivo audio in uscita"
353
354 #~ msgctxt "@action:inmenu"
355 #~ msgid "Show participants"
356 #~ msgstr "Mostra partecipanti"
357
358 #~ msgctxt "@action:inmenu"
359 #~ msgid "Show log"
360 #~ msgstr "Mostra registro"
361
362 #~ msgctxt "@action"
363 #~ msgid "Stop sending video"
364 #~ msgstr "Interrompi l'invio del video"
365
366 #~ msgctxt "@action:inmenu"
367 #~ msgid "Status"
368 #~ msgstr "Stato"
369
370 #~ msgctxt "@action:inmenu"
371 #~ msgid "Available"
372 #~ msgstr "Disponibile"
373
374 #~ msgctxt "@action:inmenu"
375 #~ msgid "Away"
376 #~ msgstr "Assente"
377
378 #~ msgctxt "@action:inmenu"
379 #~ msgid "Be right back"
380 #~ msgstr "Torno subito"
381
382 #~ msgctxt "@action:inmenu"
383 #~ msgid "Busy"
384 #~ msgstr "Occupato"
385
386 #~ msgctxt "@action:inmenu"
387 #~ msgid "Do not disturb"
388 #~ msgstr "Non disturbare"
389
390 #~ msgctxt "@action:inmenu"
391 #~ msgid "Extended Away"
392 #~ msgstr "Assente a lungo"
393
394 #~ msgctxt "@action:inmenu"
395 #~ msgid "Invisible"
396 #~ msgstr "Invisibile"
397
398 #~ msgctxt "@action:inmenu"
399 #~ msgid "Offline"
400 #~ msgstr "Non in linea"
401
402 #~ msgctxt "@info:status"
403 #~ msgid "Waiting for account information..."
404 #~ msgstr "In attesa di informazioni dell'account..."
405
406 #~ msgctxt "protocol - display name (Connecting)"
407 #~ msgid "%1 - %2 (Connecting)"
408 #~ msgstr "%1 - %2 (connessione)"
409
410 #~ msgctxt "protocol - display name"
411 #~ msgid "%1 - %2"
412 #~ msgstr "%1 - %2"
413
414 #~ msgctxt "@title:window"
415 #~ msgid "KCall"
416 #~ msgstr "KCall"
417
418 #~ msgctxt "@info:status"
419 #~ msgid "Connected"
420 #~ msgstr "Connesso"
421
422 #~ msgctxt "@action"
423 #~ msgid "Disconnect"
424 #~ msgstr "Disconnesso"
425
426 #~ msgctxt "@action"
427 #~ msgid "Cancel connection attempt"
428 #~ msgstr "Annulla tentativo di connessione"
429
430 #~ msgctxt "@action"
431 #~ msgid "Connect"
432 #~ msgstr "Connetti"
433
434 #~ msgid ""
435 #~ "You have requested to close KCall. Note that KCall will not actually "
436 #~ "quit, but it will stay active in the system tray waiting for incoming "
437 #~ "calls."
438 #~ msgstr ""
439 #~ "Hai richiesto di chiudere KCall. Nota che KCall non verrà chiuso, ma "
440 #~ "rimarrà attivo nel vassoio di sistema in attesa di chiamate in arrivo."
441
442 #~ msgid "Volume"
443 #~ msgstr "Volume"
444
445 #~ msgid "Speakers"
446 #~ msgstr "Altoparlanti"
447
448 #~ msgid "Microphone"
449 #~ msgstr "Microfono"
450
451 #~ msgid "Video controls"
452 #~ msgstr "Controlli del video"
453
454 #~ msgid "Video input"
455 #~ msgstr "Ingresso del video"
456
457 #~ msgid "Call log"
458 #~ msgstr "Registro di chiamata"
459
460 #~ msgid "Participants"
461 #~ msgstr "Partecipanti"
462
463 #~ msgctxt "@title:tab"
464 #~ msgid "&Contact list"
465 #~ msgstr "Lista dei &contatti"
466
467 #~ msgid "Dial directly"
468 #~ msgstr "Chiama direttamente"
469
470 #~ msgid "Account"
471 #~ msgstr "Account"
472
473 #~ msgid "Contact handle"
474 #~ msgstr "Identificativo contatto"
475
476 #~ msgid "Dial (Audio only)"
477 #~ msgstr "Chiama (solo audio)"
478
479 #~ msgid "Dial (Audio/Video)"
480 #~ msgstr "Chiama (audio e video)"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( ja ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 msgid ""
1 msgstr ""
2 "Project-Id-Version: kcall\n"
3 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
4 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
5 "PO-Revision-Date: 2009-06-29 09:43+0900\n"
6 "Last-Translator: Japanese KDE translation team <Kdeveloper@kde.gr.jp>\n"
7 "Language-Team: Japanese <Kdeveloper@kde.gr.jp>\n"
8 "Language: ja\n"
9 "MIME-Version: 1.0\n"
10 "Content-Type: text/plain; charset=UTF-8\n"
11 "Content-Transfer-Encoding: 8bit\n"
12 "Plural-Forms: nplurals=2; plural=n != 1;\n"
13 "X-Accelerator-Marker: &\n"
14 "X-Text-Markup: kde4\n"
15
16 #: src/approver.cpp:38
17 msgid "Incoming video call"
18 msgstr ""
19
20 #: src/approver.cpp:39
21 #, kde-format
22 msgid "<p>%1 is asking you for a video call</p>"
23 msgstr ""
24
25 #: src/approver.cpp:41
26 msgid "Incoming call"
27 msgstr ""
28
29 #: src/approver.cpp:42
30 #, kde-format
31 msgid "<p>%1 is calling you</p>"
32 msgstr ""
33
34 #: src/approver.cpp:58 src/approver.cpp:80
35 msgctxt "action, answers the incoming call"
36 msgid "Answer"
37 msgstr ""
38
39 #: src/approver.cpp:59 src/approver.cpp:82
40 msgctxt "action, rejects the incoming call"
41 msgid "Reject"
42 msgstr ""
43
44 #: src/call-window.cpp:95
45 #, kde-format
46 msgid "Call with %1"
47 msgstr ""
48
49 #: src/call-window.cpp:109
50 msgctxt "@info:status"
51 msgid "Connecting..."
52 msgstr ""
53
54 #: src/call-window.cpp:113
55 msgctxt "@info:status the remote user's phone is ringing"
56 msgid "Ringing..."
57 msgstr ""
58
59 #: src/call-window.cpp:117
60 msgctxt "@info:status"
61 msgid "Remote user accepted the call, waiting for connection..."
62 msgstr ""
63
64 #: src/call-window.cpp:120
65 msgctxt "@info:status"
66 msgid "Talking..."
67 msgstr ""
68
69 #: src/call-window.cpp:136
70 msgctxt "@info:status"
71 msgid "Remote contact ended the call."
72 msgstr ""
73
74 #: src/call-window.cpp:143
75 msgctxt "@info:status"
76 msgid "Remote contact rejected the call."
77 msgstr ""
78
79 #: src/call-window.cpp:148
80 msgctxt "@info:status"
81 msgid "Remote contact didn't answer."
82 msgstr ""
83
84 #: src/call-window.cpp:152
85 msgctxt "@info:status"
86 msgid "Invalid number or contact."
87 msgstr ""
88
89 #: src/call-window.cpp:156
90 msgctxt "@info:status"
91 msgid "You don't have enough balance to make this call."
92 msgstr ""
93
94 #: src/call-window.cpp:158
95 msgctxt "@info:status"
96 msgid "You don't have permission to make this call."
97 msgstr ""
98
99 #: src/call-window.cpp:163
100 msgctxt "@info:status"
101 msgid "Remote contact is currently busy."
102 msgstr ""
103
104 #: src/call-window.cpp:167
105 msgctxt "@info:status"
106 msgid "Internal component error."
107 msgstr ""
108
109 #: src/call-window.cpp:170
110 msgctxt "@info:status"
111 msgid "Remote service error."
112 msgstr ""
113
114 #: src/call-window.cpp:173
115 msgctxt "@info:status"
116 msgid "Network error."
117 msgstr ""
118
119 #: src/call-window.cpp:177
120 msgctxt "@info:status"
121 msgid "Failed to negotiate codecs."
122 msgstr ""
123
124 #: src/call-window.cpp:179
125 msgctxt "@info:status"
126 msgid "Unsupported media type."
127 msgstr ""
128
129 #: src/call-window.cpp:183
130 msgctxt "@info:status"
131 msgid "Connectivity error."
132 msgstr ""
133
134 #: src/call-window.cpp:187
135 msgctxt "@info:status"
136 msgid "Unknown error."
137 msgstr ""
138
139 #: src/call-window.cpp:192
140 msgctxt "@info:status"
141 msgid "Disconnected."
142 msgstr ""
143
144 #: src/call-window.cpp:196
145 #, kde-format
146 msgctxt "@info:status the call was disconnected because..."
147 msgid "Disconnected: %1"
148 msgstr ""
149
150 #: src/call-window.cpp:339
151 msgctxt "@action"
152 msgid "Show my video"
153 msgstr ""
154
155 #: src/call-window.cpp:344
156 msgctxt "@action"
157 msgid "Show dialpad"
158 msgstr ""
159
160 #: src/call-window.cpp:351
161 msgctxt "@action"
162 msgid "Send video"
163 msgstr ""
164
165 #: src/call-window.cpp:356 src/call-window.cpp:357
166 msgctxt "@action"
167 msgid "Mute"
168 msgstr ""
169
170 #: src/call-window.cpp:363
171 msgctxt "@action"
172 msgid "Hold"
173 msgstr ""
174
175 #: src/call-window.cpp:368
176 msgctxt "@action"
177 msgid "Hangup"
178 msgstr ""
179
180 #: src/main.cpp:36
181 msgid "KDE Telepathy Call Ui"
182 msgstr ""
183
184 #: src/main.cpp:37
185 msgid "VoIP client for KDE"
186 msgstr ""
187
188 #: src/main.cpp:38
189 msgid "(C) 2009, George Kiagiadakis"
190 msgstr ""
191
192 #: src/main.cpp:40
193 msgctxt "@info:credit"
194 msgid "George Kiagiadakis"
195 msgstr ""
196
197 #: rc.cpp:1
198 msgctxt "NAME OF TRANSLATORS"
199 msgid "Your names"
200 msgstr ""
201
202 #: rc.cpp:2
203 msgctxt "EMAIL OF TRANSLATORS"
204 msgid "Your emails"
205 msgstr ""
206
207 #. i18n: file: src/callwindowui.rc:11
208 #. i18n: ectx: Menu (call)
209 #: rc.cpp:5
210 msgid "Call"
211 msgstr ""
212
213 #. i18n: file: src/callwindowui.rc:20
214 #. i18n: ectx: Menu (media)
215 #: rc.cpp:8
216 msgid "Media"
217 msgstr ""
218
219 #. i18n: file: src/callwindowui.rc:27
220 #. i18n: ectx: ToolBar (mainToolBar)
221 #: rc.cpp:11
222 msgid "Main Toolbar"
223 msgstr ""
224
225 #. i18n: file: src/dtmf-widget.ui:17
226 #. i18n: ectx: property (text), widget (QPushButton, button1)
227 #: rc.cpp:14
228 msgid "1"
229 msgstr ""
230
231 #. i18n: file: src/dtmf-widget.ui:24
232 #. i18n: ectx: property (text), widget (QPushButton, button2)
233 #: rc.cpp:17
234 msgid "2"
235 msgstr ""
236
237 #. i18n: file: src/dtmf-widget.ui:31
238 #. i18n: ectx: property (text), widget (QPushButton, button3)
239 #: rc.cpp:20
240 msgid "3"
241 msgstr ""
242
243 #. i18n: file: src/dtmf-widget.ui:38
244 #. i18n: ectx: property (text), widget (QPushButton, button4)
245 #: rc.cpp:23
246 msgid "4"
247 msgstr ""
248
249 #. i18n: file: src/dtmf-widget.ui:45
250 #. i18n: ectx: property (text), widget (QPushButton, button5)
251 #: rc.cpp:26
252 msgid "5"
253 msgstr ""
254
255 #. i18n: file: src/dtmf-widget.ui:52
256 #. i18n: ectx: property (text), widget (QPushButton, button6)
257 #: rc.cpp:29
258 msgid "6"
259 msgstr ""
260
261 #. i18n: file: src/dtmf-widget.ui:59
262 #. i18n: ectx: property (text), widget (QPushButton, button7)
263 #: rc.cpp:32
264 msgid "7"
265 msgstr ""
266
267 #. i18n: file: src/dtmf-widget.ui:66
268 #. i18n: ectx: property (text), widget (QPushButton, button8)
269 #: rc.cpp:35
270 msgid "8"
271 msgstr ""
272
273 #. i18n: file: src/dtmf-widget.ui:73
274 #. i18n: ectx: property (text), widget (QPushButton, button9)
275 #: rc.cpp:38
276 msgid "9"
277 msgstr ""
278
279 #. i18n: file: src/dtmf-widget.ui:80
280 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
281 #: rc.cpp:41
282 msgid "*"
283 msgstr ""
284
285 #. i18n: file: src/dtmf-widget.ui:87
286 #. i18n: ectx: property (text), widget (QPushButton, button0)
287 #: rc.cpp:44
288 msgid "0"
289 msgstr ""
290
291 #. i18n: file: src/dtmf-widget.ui:94
292 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
293 #: rc.cpp:47
294 msgid "#"
295 msgstr ""
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( km ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of telepathy-kde-call-ui.po to Khmer
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Khoem Sokhem <khoemsokhem@khmeros.info>, 2011.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: telepathy-kde-call-ui\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2011-06-28 07:46+0700\n"
11 "Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
12 "Language-Team: Khmer <support@khmeros.info>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: KBabel 1.11.4\n"
18 "Plural-Forms: nplurals=1; plural=0;\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr ""
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr ""
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr ""
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr ""
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr ""
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr ""
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr ""
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr ""
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr ""
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr ""
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr ""
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr ""
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr ""
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr ""
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr ""
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr ""
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr ""
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr ""
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr ""
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr ""
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr ""
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr ""
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr ""
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr ""
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr ""
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr ""
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr ""
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr ""
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr ""
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr ""
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr ""
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr ""
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr ""
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr ""
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr ""
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr ""
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr ""
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr ""
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr ""
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr ""
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr ""
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr ""
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr ""
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr ""
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr ""
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr ""
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr ""
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr ""
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr ""
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr ""
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr ""
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr ""
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr ""
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr ""
300
301 #~ msgid "The audio input device could not be initialized"
302 #~ msgstr " "
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( lt ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Lithuanian translations for kcall package.
1 # Copyright (C) 2009 This_file_is_part_of_KDE
2 # This file is distributed under the same license as the kcall package.
3 #
4 # Donatas G. <dgvirtual@akl.lt>, 2012.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: telepathy-kde-call-ui\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2012-03-31 18:26+0300\n"
11 "Last-Translator: Donatas G. <dgvirtual@akl.lt>\n"
12 "Language-Team: Lithuanian <kde-i18n-lt@kde.org>\n"
13 "Language: lt\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
18 "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
19 "X-Generator: Lokalize 1.4\n"
20
21 #: src/approver.cpp:38
22 msgid "Incoming video call"
23 msgstr "Įeinantis video skambutis"
24
25 #: src/approver.cpp:39
26 #, kde-format
27 msgid "<p>%1 is asking you for a video call</p>"
28 msgstr "<p>%1 prašo video pokalbio</p>"
29
30 #: src/approver.cpp:41
31 msgid "Incoming call"
32 msgstr "Įeinantis skambutis"
33
34 #: src/approver.cpp:42
35 #, kde-format
36 msgid "<p>%1 is calling you</p>"
37 msgstr "<p>Jums skambina %1</p>"
38
39 #: src/approver.cpp:58 src/approver.cpp:80
40 #, fuzzy
41 #| msgid "Answer"
42 msgctxt "action, answers the incoming call"
43 msgid "Answer"
44 msgstr "Pakelti"
45
46 #: src/approver.cpp:59 src/approver.cpp:82
47 #, fuzzy
48 #| msgid "Reject"
49 msgctxt "action, rejects the incoming call"
50 msgid "Reject"
51 msgstr "Atmesti"
52
53 #: src/call-window.cpp:95
54 #, kde-format
55 msgid "Call with %1"
56 msgstr "Skambinti naudojant %1"
57
58 #: src/call-window.cpp:109
59 msgctxt "@info:status"
60 msgid "Connecting..."
61 msgstr "Jungiamasi..."
62
63 #: src/call-window.cpp:113
64 msgctxt "@info:status the remote user's phone is ringing"
65 msgid "Ringing..."
66 msgstr "Skambinama..."
67
68 #: src/call-window.cpp:117
69 msgctxt "@info:status"
70 msgid "Remote user accepted the call, waiting for connection..."
71 msgstr "Nutolęs vartotojas priėmė skambutį, laukiama ryšio..."
72
73 #: src/call-window.cpp:120
74 msgctxt "@info:status"
75 msgid "Talking..."
76 msgstr "Kalbama..."
77
78 #: src/call-window.cpp:136
79 msgctxt "@info:status"
80 msgid "Remote contact ended the call."
81 msgstr "Nutolęs kontaktas užbaigė skambutį."
82
83 #: src/call-window.cpp:143
84 msgctxt "@info:status"
85 msgid "Remote contact rejected the call."
86 msgstr "Nutolęs kontaktas atmetė skambutį."
87
88 #: src/call-window.cpp:148
89 msgctxt "@info:status"
90 msgid "Remote contact didn't answer."
91 msgstr "Nutolęs kontaktas neatsakė."
92
93 #: src/call-window.cpp:152
94 msgctxt "@info:status"
95 msgid "Invalid number or contact."
96 msgstr "Neteisingas kontaktas ar numeris."
97
98 #: src/call-window.cpp:156
99 msgctxt "@info:status"
100 msgid "You don't have enough balance to make this call."
101 msgstr "Jūsų balanse trūksta lėšų šiam skambučiui."
102
103 #: src/call-window.cpp:158
104 msgctxt "@info:status"
105 msgid "You don't have permission to make this call."
106 msgstr "Jūs neturite leidimo atlikti šį skambutį."
107
108 #: src/call-window.cpp:163
109 msgctxt "@info:status"
110 msgid "Remote contact is currently busy."
111 msgstr "Nutolęs kontaktas šiuo metu užsiėmęs."
112
113 #: src/call-window.cpp:167
114 msgctxt "@info:status"
115 msgid "Internal component error."
116 msgstr "Vidinė komponento klaida."
117
118 #: src/call-window.cpp:170
119 msgctxt "@info:status"
120 msgid "Remote service error."
121 msgstr "Nutolusios tarnybos klaida."
122
123 #: src/call-window.cpp:173
124 msgctxt "@info:status"
125 msgid "Network error."
126 msgstr "Tinklo klaida."
127
128 #: src/call-window.cpp:177
129 msgctxt "@info:status"
130 msgid "Failed to negotiate codecs."
131 msgstr "Nepavyko susitarti dėl kodekų."
132
133 #: src/call-window.cpp:179
134 msgctxt "@info:status"
135 msgid "Unsupported media type."
136 msgstr "Nepalaikomas media tipas."
137
138 #: src/call-window.cpp:183
139 msgctxt "@info:status"
140 msgid "Connectivity error."
141 msgstr "Jungimosi klaida."
142
143 #: src/call-window.cpp:187
144 msgctxt "@info:status"
145 msgid "Unknown error."
146 msgstr "Nežinoma klaida."
147
148 #: src/call-window.cpp:192
149 msgctxt "@info:status"
150 msgid "Disconnected."
151 msgstr "Atsijungta."
152
153 #: src/call-window.cpp:196
154 #, kde-format
155 msgctxt "@info:status the call was disconnected because..."
156 msgid "Disconnected: %1"
157 msgstr "Atsijungta: %1"
158
159 #: src/call-window.cpp:339
160 msgctxt "@action"
161 msgid "Show my video"
162 msgstr "Rodyti mano video"
163
164 #: src/call-window.cpp:344
165 msgctxt "@action"
166 msgid "Show dialpad"
167 msgstr "Rodyti rinkimo pultelį"
168
169 #: src/call-window.cpp:351
170 msgctxt "@action"
171 msgid "Send video"
172 msgstr "Siųsti video"
173
174 #: src/call-window.cpp:356 src/call-window.cpp:357
175 msgctxt "@action"
176 msgid "Mute"
177 msgstr "Užtildyti"
178
179 #: src/call-window.cpp:363
180 msgctxt "@action"
181 msgid "Hold"
182 msgstr "Pristabdyti"
183
184 #: src/call-window.cpp:368
185 msgctxt "@action"
186 msgid "Hangup"
187 msgstr "Padėti ragelį"
188
189 #: src/main.cpp:36
190 msgid "KDE Telepathy Call Ui"
191 msgstr "KDE Telepathy skambučių vartotojo sąsaja"
192
193 #: src/main.cpp:37
194 msgid "VoIP client for KDE"
195 msgstr "KDE VoIP programa"
196
197 #: src/main.cpp:38
198 msgid "(C) 2009, George Kiagiadakis"
199 msgstr "(C) 2009, George Kiagiadakis"
200
201 #: src/main.cpp:40
202 msgctxt "@info:credit"
203 msgid "George Kiagiadakis"
204 msgstr "George Kiagiadakis"
205
206 #: rc.cpp:1
207 msgctxt "NAME OF TRANSLATORS"
208 msgid "Your names"
209 msgstr "Andrius Štikonas"
210
211 #: rc.cpp:2
212 msgctxt "EMAIL OF TRANSLATORS"
213 msgid "Your emails"
214 msgstr "stikonas@gmail.com"
215
216 #. i18n: file: src/callwindowui.rc:11
217 #. i18n: ectx: Menu (call)
218 #: rc.cpp:5
219 msgid "Call"
220 msgstr "Skambinti"
221
222 #. i18n: file: src/callwindowui.rc:20
223 #. i18n: ectx: Menu (media)
224 #: rc.cpp:8
225 msgid "Media"
226 msgstr "Media"
227
228 #. i18n: file: src/callwindowui.rc:27
229 #. i18n: ectx: ToolBar (mainToolBar)
230 #: rc.cpp:11
231 msgid "Main Toolbar"
232 msgstr "Pagrindinė įrankinė"
233
234 #. i18n: file: src/dtmf-widget.ui:17
235 #. i18n: ectx: property (text), widget (QPushButton, button1)
236 #: rc.cpp:14
237 msgid "1"
238 msgstr "1"
239
240 #. i18n: file: src/dtmf-widget.ui:24
241 #. i18n: ectx: property (text), widget (QPushButton, button2)
242 #: rc.cpp:17
243 msgid "2"
244 msgstr "2"
245
246 #. i18n: file: src/dtmf-widget.ui:31
247 #. i18n: ectx: property (text), widget (QPushButton, button3)
248 #: rc.cpp:20
249 msgid "3"
250 msgstr "3"
251
252 #. i18n: file: src/dtmf-widget.ui:38
253 #. i18n: ectx: property (text), widget (QPushButton, button4)
254 #: rc.cpp:23
255 msgid "4"
256 msgstr "4"
257
258 #. i18n: file: src/dtmf-widget.ui:45
259 #. i18n: ectx: property (text), widget (QPushButton, button5)
260 #: rc.cpp:26
261 msgid "5"
262 msgstr "5"
263
264 #. i18n: file: src/dtmf-widget.ui:52
265 #. i18n: ectx: property (text), widget (QPushButton, button6)
266 #: rc.cpp:29
267 msgid "6"
268 msgstr "6"
269
270 #. i18n: file: src/dtmf-widget.ui:59
271 #. i18n: ectx: property (text), widget (QPushButton, button7)
272 #: rc.cpp:32
273 msgid "7"
274 msgstr "7"
275
276 #. i18n: file: src/dtmf-widget.ui:66
277 #. i18n: ectx: property (text), widget (QPushButton, button8)
278 #: rc.cpp:35
279 msgid "8"
280 msgstr "8"
281
282 #. i18n: file: src/dtmf-widget.ui:73
283 #. i18n: ectx: property (text), widget (QPushButton, button9)
284 #: rc.cpp:38
285 msgid "9"
286 msgstr "9"
287
288 #. i18n: file: src/dtmf-widget.ui:80
289 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
290 #: rc.cpp:41
291 msgid "*"
292 msgstr "*"
293
294 #. i18n: file: src/dtmf-widget.ui:87
295 #. i18n: ectx: property (text), widget (QPushButton, button0)
296 #: rc.cpp:44
297 msgid "0"
298 msgstr "0"
299
300 #. i18n: file: src/dtmf-widget.ui:94
301 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
302 #: rc.cpp:47
303 msgid "#"
304 msgstr "#"
305
306 #~ msgid "Warning: %1"
307 #~ msgstr "Dėmesio: %1"
308
309 #~ msgid "Error: %1"
310 #~ msgstr "Klaida: %1"
311
312 #~ msgid "KCall"
313 #~ msgstr "KCall"
314
315 #~ msgid "Brightness"
316 #~ msgstr "Šviesumas"
317
318 #~ msgid "Contrast"
319 #~ msgstr "Kontrastas"
320
321 #~ msgid "Hue"
322 #~ msgstr "Atspalvis"
323
324 #~ msgid "Saturation"
325 #~ msgstr "Sodrumas"
326
327 #~ msgctxt "@action:inmenu"
328 #~ msgid "Show participants"
329 #~ msgstr "Rodyti dalyvius"
330
331 #~ msgctxt "@action:inmenu"
332 #~ msgid "Show log"
333 #~ msgstr "Rodyti žurnalą"
334
335 #~ msgctxt "@action:inmenu"
336 #~ msgid "Status"
337 #~ msgstr "Būsena"
338
339 #~ msgctxt "@action:inmenu"
340 #~ msgid "Available"
341 #~ msgstr "Prieinamas (-a)"
342
343 #~ msgctxt "@action:inmenu"
344 #~ msgid "Away"
345 #~ msgstr "Pasitraukęs (-usi)"
346
347 #~ msgctxt "@action:inmenu"
348 #~ msgid "Be right back"
349 #~ msgstr "Tuoj grįšiu"
350
351 #~ msgctxt "@action:inmenu"
352 #~ msgid "Busy"
353 #~ msgstr "Užimtas (-a)"
354
355 #~ msgctxt "@action:inmenu"
356 #~ msgid "Do not disturb"
357 #~ msgstr "Netrukdyti"
358
359 #~ msgctxt "@action:inmenu"
360 #~ msgid "Extended Away"
361 #~ msgstr "Ilgam pasitraukęs (-usi)"
362
363 #~ msgctxt "@action:inmenu"
364 #~ msgid "Invisible"
365 #~ msgstr "Nematomas (-a)"
366
367 #~ msgctxt "@action:inmenu"
368 #~ msgid "Offline"
369 #~ msgstr "Neprisijungęs (-usi)"
370
371 #~ msgctxt "protocol - display name (Connecting)"
372 #~ msgid "%1 - %2 (Connecting)"
373 #~ msgstr "%1 – %2 (Jungiamasi)"
374
375 #~ msgctxt "protocol - display name"
376 #~ msgid "%1 - %2"
377 #~ msgstr "%1 – %2"
378
379 #~ msgctxt "@title:window"
380 #~ msgid "KCall"
381 #~ msgstr "KCall"
382
383 #~ msgctxt "@info:status"
384 #~ msgid "Connected"
385 #~ msgstr "Prisijungta"
386
387 #~ msgctxt "@action"
388 #~ msgid "Disconnect"
389 #~ msgstr "Atsijungti"
390
391 #~ msgctxt "@action"
392 #~ msgid "Connect"
393 #~ msgstr "Prisijungta"
394
395 #~ msgid "Volume"
396 #~ msgstr "Garsumas"
397
398 #~ msgid "Speakers"
399 #~ msgstr "Garsiakalbiai"
400
401 #~ msgid "Microphone"
402 #~ msgstr "Mikrofonas"
403
404 #~ msgid "Participants"
405 #~ msgstr "Dalyviai"
406
407 #~ msgctxt "@title:tab"
408 #~ msgid "&Contact list"
409 #~ msgstr "&Kontaktų sąrašas"
410
411 #~ msgid "Account"
412 #~ msgstr "Paskyra"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( mai ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of kcall.po to Maithili
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Rajesh Ranjan <rajesh672@gmail.com>, 2010.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: kcall\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2010-09-24 13:00+0530\n"
11 "Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n"
12 "Language-Team: Maithili <bhashaghar@googlegroups.com>\n"
13 "Language: mai\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: KBabel 1.11.4\n"
18 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr ""
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr ""
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr ""
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr ""
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr ""
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr ""
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr ""
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr "कनेक्ट कए रहल अछि...."
57
58 #: src/call-window.cpp:113
59 #, fuzzy
60 #| msgctxt "@info:status"
61 #| msgid "Connecting..."
62 msgctxt "@info:status the remote user's phone is ringing"
63 msgid "Ringing..."
64 msgstr "कनेक्ट कए रहल अछि...."
65
66 #: src/call-window.cpp:117
67 msgctxt "@info:status"
68 msgid "Remote user accepted the call, waiting for connection..."
69 msgstr ""
70
71 #: src/call-window.cpp:120
72 msgctxt "@info:status"
73 msgid "Talking..."
74 msgstr ""
75
76 #: src/call-window.cpp:136
77 msgctxt "@info:status"
78 msgid "Remote contact ended the call."
79 msgstr ""
80
81 #: src/call-window.cpp:143
82 msgctxt "@info:status"
83 msgid "Remote contact rejected the call."
84 msgstr ""
85
86 #: src/call-window.cpp:148
87 msgctxt "@info:status"
88 msgid "Remote contact didn't answer."
89 msgstr ""
90
91 #: src/call-window.cpp:152
92 msgctxt "@info:status"
93 msgid "Invalid number or contact."
94 msgstr ""
95
96 #: src/call-window.cpp:156
97 msgctxt "@info:status"
98 msgid "You don't have enough balance to make this call."
99 msgstr ""
100
101 #: src/call-window.cpp:158
102 msgctxt "@info:status"
103 msgid "You don't have permission to make this call."
104 msgstr ""
105
106 #: src/call-window.cpp:163
107 msgctxt "@info:status"
108 msgid "Remote contact is currently busy."
109 msgstr ""
110
111 #: src/call-window.cpp:167
112 msgctxt "@info:status"
113 msgid "Internal component error."
114 msgstr ""
115
116 #: src/call-window.cpp:170
117 msgctxt "@info:status"
118 msgid "Remote service error."
119 msgstr ""
120
121 #: src/call-window.cpp:173
122 msgctxt "@info:status"
123 msgid "Network error."
124 msgstr ""
125
126 #: src/call-window.cpp:177
127 msgctxt "@info:status"
128 msgid "Failed to negotiate codecs."
129 msgstr ""
130
131 #: src/call-window.cpp:179
132 msgctxt "@info:status"
133 msgid "Unsupported media type."
134 msgstr ""
135
136 #: src/call-window.cpp:183
137 msgctxt "@info:status"
138 msgid "Connectivity error."
139 msgstr ""
140
141 #: src/call-window.cpp:187
142 #, fuzzy
143 #| msgctxt "Unknown audio or video system"
144 #| msgid "Unknown"
145 msgctxt "@info:status"
146 msgid "Unknown error."
147 msgstr "अज्ञात"
148
149 #: src/call-window.cpp:192
150 msgctxt "@info:status"
151 msgid "Disconnected."
152 msgstr "संबंधन नहि अछि"
153
154 #: src/call-window.cpp:196
155 #, fuzzy, kde-format
156 #| msgctxt "@info:status"
157 #| msgid "Disconnected"
158 msgctxt "@info:status the call was disconnected because..."
159 msgid "Disconnected: %1"
160 msgstr "बिसंबंधित"
161
162 #: src/call-window.cpp:339
163 msgctxt "@action"
164 msgid "Show my video"
165 msgstr ""
166
167 #: src/call-window.cpp:344
168 #, fuzzy
169 #| msgid "Show details"
170 msgctxt "@action"
171 msgid "Show dialpad"
172 msgstr "विवरण देखाबू"
173
174 #: src/call-window.cpp:351
175 msgctxt "@action"
176 msgid "Send video"
177 msgstr ""
178
179 #: src/call-window.cpp:356 src/call-window.cpp:357
180 msgctxt "@action"
181 msgid "Mute"
182 msgstr ""
183
184 #: src/call-window.cpp:363
185 msgctxt "@action"
186 msgid "Hold"
187 msgstr ""
188
189 #: src/call-window.cpp:368
190 msgctxt "@action"
191 msgid "Hangup"
192 msgstr "हैंगअप"
193
194 #: src/main.cpp:36
195 msgid "KDE Telepathy Call Ui"
196 msgstr ""
197
198 #: src/main.cpp:37
199 msgid "VoIP client for KDE"
200 msgstr ""
201
202 #: src/main.cpp:38
203 msgid "(C) 2009, George Kiagiadakis"
204 msgstr ""
205
206 #: src/main.cpp:40
207 msgctxt "@info:credit"
208 msgid "George Kiagiadakis"
209 msgstr "George Kiagiadakis"
210
211 #: rc.cpp:1
212 msgctxt "NAME OF TRANSLATORS"
213 msgid "Your names"
214 msgstr "संगीता कुमारी"
215
216 #: rc.cpp:2
217 msgctxt "EMAIL OF TRANSLATORS"
218 msgid "Your emails"
219 msgstr "sangeeta09@gmail.com"
220
221 #. i18n: file: src/callwindowui.rc:11
222 #. i18n: ectx: Menu (call)
223 #: rc.cpp:5
224 msgid "Call"
225 msgstr "कॉल"
226
227 #. i18n: file: src/callwindowui.rc:20
228 #. i18n: ectx: Menu (media)
229 #: rc.cpp:8
230 msgid "Media"
231 msgstr ""
232
233 #. i18n: file: src/callwindowui.rc:27
234 #. i18n: ectx: ToolBar (mainToolBar)
235 #: rc.cpp:11
236 msgid "Main Toolbar"
237 msgstr "मुख्य अओजार पट्टी"
238
239 #. i18n: file: src/dtmf-widget.ui:17
240 #. i18n: ectx: property (text), widget (QPushButton, button1)
241 #: rc.cpp:14
242 msgid "1"
243 msgstr "1"
244
245 #. i18n: file: src/dtmf-widget.ui:24
246 #. i18n: ectx: property (text), widget (QPushButton, button2)
247 #: rc.cpp:17
248 msgid "2"
249 msgstr "2"
250
251 #. i18n: file: src/dtmf-widget.ui:31
252 #. i18n: ectx: property (text), widget (QPushButton, button3)
253 #: rc.cpp:20
254 msgid "3"
255 msgstr "3"
256
257 #. i18n: file: src/dtmf-widget.ui:38
258 #. i18n: ectx: property (text), widget (QPushButton, button4)
259 #: rc.cpp:23
260 msgid "4"
261 msgstr "4"
262
263 #. i18n: file: src/dtmf-widget.ui:45
264 #. i18n: ectx: property (text), widget (QPushButton, button5)
265 #: rc.cpp:26
266 msgid "5"
267 msgstr "5"
268
269 #. i18n: file: src/dtmf-widget.ui:52
270 #. i18n: ectx: property (text), widget (QPushButton, button6)
271 #: rc.cpp:29
272 msgid "6"
273 msgstr "6"
274
275 #. i18n: file: src/dtmf-widget.ui:59
276 #. i18n: ectx: property (text), widget (QPushButton, button7)
277 #: rc.cpp:32
278 msgid "7"
279 msgstr "7"
280
281 #. i18n: file: src/dtmf-widget.ui:66
282 #. i18n: ectx: property (text), widget (QPushButton, button8)
283 #: rc.cpp:35
284 msgid "8"
285 msgstr "8"
286
287 #. i18n: file: src/dtmf-widget.ui:73
288 #. i18n: ectx: property (text), widget (QPushButton, button9)
289 #: rc.cpp:38
290 msgid "9"
291 msgstr "9"
292
293 #. i18n: file: src/dtmf-widget.ui:80
294 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
295 #: rc.cpp:41
296 msgid "*"
297 msgstr "*"
298
299 #. i18n: file: src/dtmf-widget.ui:87
300 #. i18n: ectx: property (text), widget (QPushButton, button0)
301 #: rc.cpp:44
302 msgid "0"
303 msgstr "0"
304
305 #. i18n: file: src/dtmf-widget.ui:94
306 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
307 #: rc.cpp:47
308 msgid "#"
309 msgstr "#"
310
311 #~ msgid "Error: %1"
312 #~ msgstr "त्रुटि: %1"
313
314 #~ msgid "Brightness"
315 #~ msgstr "चमकीलापन"
316
317 #~ msgid "Contrast"
318 #~ msgstr "विरोधी"
319
320 #~ msgid "Hue"
321 #~ msgstr "वर्ण"
322
323 #~ msgid "Saturation"
324 #~ msgstr "संतृप्ति"
325
326 #~ msgid "Dialpad"
327 #~ msgstr "डॉयलपैड"
328
329 #~ msgctxt "@action:inmenu"
330 #~ msgid "Status"
331 #~ msgstr "स्थिति"
332
333 #~ msgctxt "@action:inmenu"
334 #~ msgid "Available"
335 #~ msgstr "उपलब्ध"
336
337 #~ msgctxt "@action:inmenu"
338 #~ msgid "Away"
339 #~ msgstr "दूरि"
340
341 #~ msgctxt "@action:inmenu"
342 #~ msgid "Busy"
343 #~ msgstr "व्यस्त"
344
345 #~ msgctxt "@action:inmenu"
346 #~ msgid "Do not disturb"
347 #~ msgstr "तँग नहि करू"
348
349 #~ msgctxt "@action:inmenu"
350 #~ msgid "Extended Away"
351 #~ msgstr "बड़ समय लेल अनुपस्थित"
352
353 #~ msgctxt "@action:inmenu"
354 #~ msgid "Invisible"
355 #~ msgstr "अदृश्य"
356
357 #~ msgctxt "@action:inmenu"
358 #~ msgid "Offline"
359 #~ msgstr "आफलाइन"
360
361 #~ msgctxt "@info:status"
362 #~ msgid "Connected"
363 #~ msgstr "संबंधित"
364
365 #~ msgctxt "@action"
366 #~ msgid "Disconnect"
367 #~ msgstr "डिसकनेक्ट करू"
368
369 #~ msgctxt "@action"
370 #~ msgid "Connect"
371 #~ msgstr "जोड़ू"
372
373 #~ msgid "Volume"
374 #~ msgstr "आवाज"
375
376 #~ msgid "Speakers"
377 #~ msgstr "स्पीकर"
378
379 #~ msgid "Microphone"
380 #~ msgstr "माइक्रोफोन"
381
382 #~ msgid "Account"
383 #~ msgstr "खाता"
384
385 #~ msgid "Audio input device"
386 #~ msgstr "ऑडियो इनपुट डिवायस"
387
388 #~ msgid "Audio output device"
389 #~ msgstr "ऑडियो आउटपुट डिवायस"
390
391 #~ msgid "Video input device"
392 #~ msgstr "वीडियो इनपुट डिवाइस"
393
394 #~ msgid "Autodetect"
395 #~ msgstr "अपने जाँचू"
396
397 #~ msgid "ALSA"
398 #~ msgstr "आल्सा"
399
400 #~ msgid "OSS"
401 #~ msgstr "OSS"
402
403 #~ msgid "Device name"
404 #~ msgstr "डिवाइस नाम"
405
406 #~ msgctxt "test the device"
407 #~ msgid "Test"
408 #~ msgstr "जाँच"
409
410 #~ msgid "Hide details"
411 #~ msgstr "विवरण नुकाबू"
412
413 #~ msgid "Ignore"
414 #~ msgstr "उपेक्षा"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( nds ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of kcall.po to Low Saxon
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 # Manfred Wiese <m.j.wiese@web.de>, 2009, 2010, 2011.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: kcall\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2010-11-15 07:51+0100\n"
11 "Last-Translator: Manfred Wiese <m.j.wiese@web.de>\n"
12 "Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n"
13 "Language: nds\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Lokalize 1.0\n"
18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
20 #: src/approver.cpp:38
21 #, fuzzy
22 #| msgctxt "@action:inmenu"
23 #| msgid "Video call"
24 msgid "Incoming video call"
25 msgstr "Videoanroop"
26
27 #: src/approver.cpp:39
28 #, kde-format
29 msgid "<p>%1 is asking you for a video call</p>"
30 msgstr ""
31
32 #: src/approver.cpp:41
33 #, fuzzy
34 #| msgctxt "@action:inmenu"
35 #| msgid "Voice call"
36 msgid "Incoming call"
37 msgstr "Stimmanroop"
38
39 #: src/approver.cpp:42
40 #, fuzzy, kde-format
41 #| msgid "%1 is calling you"
42 msgid "<p>%1 is calling you</p>"
43 msgstr "%1 röppt Di an"
44
45 #: src/approver.cpp:58 src/approver.cpp:80
46 #, fuzzy
47 #| msgid "Answer"
48 msgctxt "action, answers the incoming call"
49 msgid "Answer"
50 msgstr "Antern"
51
52 #: src/approver.cpp:59 src/approver.cpp:82
53 msgctxt "action, rejects the incoming call"
54 msgid "Reject"
55 msgstr ""
56
57 #: src/call-window.cpp:95
58 #, kde-format
59 msgid "Call with %1"
60 msgstr ""
61
62 #: src/call-window.cpp:109
63 msgctxt "@info:status"
64 msgid "Connecting..."
65 msgstr "An't Tokoppeln..."
66
67 #: src/call-window.cpp:113
68 #, fuzzy
69 #| msgctxt "@info:status"
70 #| msgid "Ringing..."
71 msgctxt "@info:status the remote user's phone is ringing"
72 msgid "Ringing..."
73 msgstr "An't Pingeln"
74
75 #: src/call-window.cpp:117
76 msgctxt "@info:status"
77 msgid "Remote user accepted the call, waiting for connection..."
78 msgstr ""
79
80 #: src/call-window.cpp:120
81 msgctxt "@info:status"
82 msgid "Talking..."
83 msgstr "An't Snacken"
84
85 #: src/call-window.cpp:136
86 msgctxt "@info:status"
87 msgid "Remote contact ended the call."
88 msgstr ""
89
90 #: src/call-window.cpp:143
91 msgctxt "@info:status"
92 msgid "Remote contact rejected the call."
93 msgstr ""
94
95 #: src/call-window.cpp:148
96 msgctxt "@info:status"
97 msgid "Remote contact didn't answer."
98 msgstr ""
99
100 #: src/call-window.cpp:152
101 msgctxt "@info:status"
102 msgid "Invalid number or contact."
103 msgstr ""
104
105 #: src/call-window.cpp:156
106 msgctxt "@info:status"
107 msgid "You don't have enough balance to make this call."
108 msgstr ""
109
110 #: src/call-window.cpp:158
111 msgctxt "@info:status"
112 msgid "You don't have permission to make this call."
113 msgstr ""
114
115 #: src/call-window.cpp:163
116 msgctxt "@info:status"
117 msgid "Remote contact is currently busy."
118 msgstr ""
119
120 #: src/call-window.cpp:167
121 msgctxt "@info:status"
122 msgid "Internal component error."
123 msgstr ""
124
125 #: src/call-window.cpp:170
126 msgctxt "@info:status"
127 msgid "Remote service error."
128 msgstr ""
129
130 #: src/call-window.cpp:173
131 msgctxt "@info:status"
132 msgid "Network error."
133 msgstr ""
134
135 #: src/call-window.cpp:177
136 msgctxt "@info:status"
137 msgid "Failed to negotiate codecs."
138 msgstr ""
139
140 #: src/call-window.cpp:179
141 msgctxt "@info:status"
142 msgid "Unsupported media type."
143 msgstr ""
144
145 #: src/call-window.cpp:183
146 #, fuzzy
147 #| msgctxt "@info:status"
148 #| msgid "Disconnected with error."
149 msgctxt "@info:status"
150 msgid "Connectivity error."
151 msgstr "Mit Fehler afkoppelt"
152
153 #: src/call-window.cpp:187
154 #, fuzzy
155 #| msgctxt "Unknown audio or video system"
156 #| msgid "Unknown"
157 msgctxt "@info:status"
158 msgid "Unknown error."
159 msgstr "Nich begäng"
160
161 #: src/call-window.cpp:192
162 msgctxt "@info:status"
163 msgid "Disconnected."
164 msgstr "Afkoppelt."
165
166 #: src/call-window.cpp:196
167 #, fuzzy, kde-format
168 #| msgctxt "@info:status"
169 #| msgid "Disconnected"
170 msgctxt "@info:status the call was disconnected because..."
171 msgid "Disconnected: %1"
172 msgstr "Afkoppelt"
173
174 #: src/call-window.cpp:339
175 #, fuzzy
176 #| msgctxt "@action"
177 #| msgid "Send video"
178 msgctxt "@action"
179 msgid "Show my video"
180 msgstr "Video loosstüern"
181
182 #: src/call-window.cpp:344
183 #, fuzzy
184 #| msgid "Show details"
185 msgctxt "@action"
186 msgid "Show dialpad"
187 msgstr "Enkelheiten wiesen"
188
189 #: src/call-window.cpp:351
190 msgctxt "@action"
191 msgid "Send video"
192 msgstr "Video loosstüern"
193
194 #: src/call-window.cpp:356 src/call-window.cpp:357
195 msgctxt "@action"
196 msgid "Mute"
197 msgstr ""
198
199 #: src/call-window.cpp:363
200 msgctxt "@action"
201 msgid "Hold"
202 msgstr ""
203
204 #: src/call-window.cpp:368
205 msgctxt "@action"
206 msgid "Hangup"
207 msgstr "Ophangen"
208
209 #: src/main.cpp:36
210 msgid "KDE Telepathy Call Ui"
211 msgstr ""
212
213 #: src/main.cpp:37
214 msgid "VoIP client for KDE"
215 msgstr "En VoIP-Programm för KDE"
216
217 #: src/main.cpp:38
218 msgid "(C) 2009, George Kiagiadakis"
219 msgstr "© 2009: George Kiagiadakis"
220
221 #: src/main.cpp:40
222 msgctxt "@info:credit"
223 msgid "George Kiagiadakis"
224 msgstr "George Kiagiadakis"
225
226 #: rc.cpp:1
227 msgctxt "NAME OF TRANSLATORS"
228 msgid "Your names"
229 msgstr "Manfred Wiese"
230
231 #: rc.cpp:2
232 msgctxt "EMAIL OF TRANSLATORS"
233 msgid "Your emails"
234 msgstr "m.j.wiese@web.de"
235
236 #. i18n: file: src/callwindowui.rc:11
237 #. i18n: ectx: Menu (call)
238 #: rc.cpp:5
239 msgid "Call"
240 msgstr "Anroop"
241
242 #. i18n: file: src/callwindowui.rc:20
243 #. i18n: ectx: Menu (media)
244 #: rc.cpp:8
245 msgid "Media"
246 msgstr ""
247
248 #. i18n: file: src/callwindowui.rc:27
249 #. i18n: ectx: ToolBar (mainToolBar)
250 #: rc.cpp:11
251 msgid "Main Toolbar"
252 msgstr "Hööftbalken"
253
254 #. i18n: file: src/dtmf-widget.ui:17
255 #. i18n: ectx: property (text), widget (QPushButton, button1)
256 #: rc.cpp:14
257 msgid "1"
258 msgstr "1"
259
260 #. i18n: file: src/dtmf-widget.ui:24
261 #. i18n: ectx: property (text), widget (QPushButton, button2)
262 #: rc.cpp:17
263 msgid "2"
264 msgstr "2"
265
266 #. i18n: file: src/dtmf-widget.ui:31
267 #. i18n: ectx: property (text), widget (QPushButton, button3)
268 #: rc.cpp:20
269 msgid "3"
270 msgstr "3"
271
272 #. i18n: file: src/dtmf-widget.ui:38
273 #. i18n: ectx: property (text), widget (QPushButton, button4)
274 #: rc.cpp:23
275 msgid "4"
276 msgstr "4"
277
278 #. i18n: file: src/dtmf-widget.ui:45
279 #. i18n: ectx: property (text), widget (QPushButton, button5)
280 #: rc.cpp:26
281 msgid "5"
282 msgstr "5"
283
284 #. i18n: file: src/dtmf-widget.ui:52
285 #. i18n: ectx: property (text), widget (QPushButton, button6)
286 #: rc.cpp:29
287 msgid "6"
288 msgstr "6"
289
290 #. i18n: file: src/dtmf-widget.ui:59
291 #. i18n: ectx: property (text), widget (QPushButton, button7)
292 #: rc.cpp:32
293 msgid "7"
294 msgstr "7"
295
296 #. i18n: file: src/dtmf-widget.ui:66
297 #. i18n: ectx: property (text), widget (QPushButton, button8)
298 #: rc.cpp:35
299 msgid "8"
300 msgstr "8"
301
302 #. i18n: file: src/dtmf-widget.ui:73
303 #. i18n: ectx: property (text), widget (QPushButton, button9)
304 #: rc.cpp:38
305 msgid "9"
306 msgstr "9"
307
308 #. i18n: file: src/dtmf-widget.ui:80
309 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
310 #: rc.cpp:41
311 msgid "*"
312 msgstr "*"
313
314 #. i18n: file: src/dtmf-widget.ui:87
315 #. i18n: ectx: property (text), widget (QPushButton, button0)
316 #: rc.cpp:44
317 msgid "0"
318 msgstr "0"
319
320 #. i18n: file: src/dtmf-widget.ui:94
321 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
322 #: rc.cpp:47
323 msgid "#"
324 msgstr "#"
325
326 #~ msgid "Warning: %1"
327 #~ msgstr "Wohrschoen: %1"
328
329 #~ msgid "Error: %1"
330 #~ msgstr "Fehler: %1"
331
332 #~ msgid "KCall"
333 #~ msgstr "KCall"
334
335 #~ msgid "Brightness"
336 #~ msgstr "Helligkeit"
337
338 #~ msgid "Contrast"
339 #~ msgstr "Kontrast"
340
341 #~ msgid "Hue"
342 #~ msgstr "Klöörtoon"
343
344 #~ msgid "Saturation"
345 #~ msgstr "Sattheit"
346
347 #~ msgid "Dialpad"
348 #~ msgstr "Bedeendeel"
349
350 #~ msgid ""
351 #~ "Defines whether the window should close automatically after a timeout "
352 #~ "when the call is over."
353 #~ msgstr ""
354 #~ "Dit maakt dat Finster automaatsch na en fastleggt Tiet to, wenn de Anroop "
355 #~ "beendt is."
356
357 #~ msgid ""
358 #~ "Defines how many seconds the call window should remain visible after the "
359 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
360 #~ msgstr ""
361 #~ "Gifft an, woveel Sekunnen dat Anroopfinster noch sichtbor blifft, wenn de "
362 #~ "Anroop al beendt is. Disse Optschoon hangt vun "
363 #~ "»CloseOnDisconnect« (Tomaken na't Afkoppeln) af."
364
365 #~ msgid "The audio input device could not be initialized"
366 #~ msgstr "De Reedschap för de Klangingaav lett sik nich torechtmaken."
367
368 #, fuzzy
369 #~| msgid "The video input device could not be initialized."
370 #~ msgid "The video input device could not be initialized"
371 #~ msgstr "De Reedschap för de Videoingaav lett sik nich torechtmaken."
372
373 #, fuzzy
374 #~| msgid ""
375 #~| "Some gstreamer elements could not be created. Please check your "
376 #~| "gstreamer installation."
377 #~ msgid ""
378 #~ "Could not create some of the required elements. Please check your "
379 #~ "GStreamer installation."
380 #~ msgstr ""
381 #~ "En Reeg vun GStreamer-Elementen laat sik nich opstellen. Bitte prööv Dien "
382 #~ "GStreamer-Installatschoon.."
383
384 #~ msgid "The audio output device could not be initialized"
385 #~ msgstr "De Reedschap för de Klangutgaav lett sik nich torechtmaken."
386
387 #~ msgctxt "@action:inmenu"
388 #~ msgid "Show participants"
389 #~ msgstr "Deelnehmers wiesen"
390
391 #~ msgctxt "@action:inmenu"
392 #~ msgid "Show log"
393 #~ msgstr "Logbook wiesen"
394
395 #~ msgctxt "@action"
396 #~ msgid "Stop sending video"
397 #~ msgstr "Videoöverdregen afbreken"
398
399 #~ msgctxt "@action:inmenu"
400 #~ msgid "Status"
401 #~ msgstr "Status"
402
403 #~ msgctxt "@action:inmenu"
404 #~ msgid "Available"
405 #~ msgstr "Verföögbor"
406
407 #~ msgctxt "@action:inmenu"
408 #~ msgid "Away"
409 #~ msgstr "Weg"
410
411 #~ msgctxt "@action:inmenu"
412 #~ msgid "Be right back"
413 #~ msgstr "Glieks torüch"
414
415 #~ msgctxt "@action:inmenu"
416 #~ msgid "Busy"
417 #~ msgstr "Besett"
418
419 #~ msgctxt "@action:inmenu"
420 #~ msgid "Do not disturb"
421 #~ msgstr "Nich stören"
422
423 #~ msgctxt "@action:inmenu"
424 #~ msgid "Extended Away"
425 #~ msgstr "Länger weg"
426
427 #~ msgctxt "@action:inmenu"
428 #~ msgid "Invisible"
429 #~ msgstr "Nich sichtbor"
430
431 #~ msgctxt "@action:inmenu"
432 #~ msgid "Offline"
433 #~ msgstr "Afkoppelt"
434
435 #~ msgctxt "@info:status"
436 #~ msgid "Waiting for account information..."
437 #~ msgstr "An't Töven op Anmelleninformatschoon..."
438
439 #~ msgctxt "protocol - display name (Connecting)"
440 #~ msgid "%1 - %2 (Connecting)"
441 #~ msgstr "%1 - %2 (An't Tokoppeln)"
442
443 #~ msgctxt "protocol - display name"
444 #~ msgid "%1 - %2"
445 #~ msgstr "%1 - %2"
446
447 #~ msgctxt "@title:window"
448 #~ msgid "KCall"
449 #~ msgstr "KCall"
450
451 #~ msgctxt "@info:status"
452 #~ msgid "Connected"
453 #~ msgstr "Tokoppelt"
454
455 #~ msgctxt "@action"
456 #~ msgid "Disconnect"
457 #~ msgstr "Afkoppeln"
458
459 #~ msgctxt "@action"
460 #~ msgid "Cancel connection attempt"
461 #~ msgstr "Tokoppelversöök afbreken"
462
463 #~ msgctxt "@action"
464 #~ msgid "Connect"
465 #~ msgstr "Tokoppeln"
466
467 #~ msgid ""
468 #~ "You have requested to close KCall. Note that KCall will not actually "
469 #~ "quit, but it will stay active in the system tray waiting for incoming "
470 #~ "calls."
471 #~ msgstr ""
472 #~ "Du wullt KCall tomaken. Beacht, dat KCall nich redig utmaakt warrt, man "
473 #~ "in'n Systeemafsnitt op rinkamen Anrööp luustert."
474
475 #~ msgid "Volume"
476 #~ msgstr "Luutstärk"
477
478 #~ msgid "Speakers"
479 #~ msgstr "Luutsprekers"
480
481 #~ msgid "Microphone"
482 #~ msgstr "Mikrofoon"
483
484 #~ msgid "Video controls"
485 #~ msgstr "Videokuntrull"
486
487 #~ msgid "Video input"
488 #~ msgstr "Videoingaav"
489
490 #~ msgid "Call log"
491 #~ msgstr "Anrooplogbook"
492
493 #~ msgid "Participants"
494 #~ msgstr "Deelnehmers"
495
496 #~ msgctxt "@title:tab"
497 #~ msgid "&Contact list"
498 #~ msgstr "&Kontaktenlist"
499
500 #~ msgid "Dial directly"
501 #~ msgstr "Direktanroop"
502
503 #~ msgid "Account"
504 #~ msgstr "Konto"
505
506 #~ msgid "Contact handle"
507 #~ msgstr "Kontakt-Hanteren"
508
509 #~ msgid "Dial (Audio only)"
510 #~ msgstr "Wählen (Bloots Klang)"
511
512 #~ msgid "Dial (Audio/Video)"
513 #~ msgstr "Wählen (Bloots Bild)"
514
515 #~ msgctxt "@info:status"
516 #~ msgid "Hanging up..."
517 #~ msgstr "An't Ophangen..."
518
519 #~ msgid "Channel closed"
520 #~ msgstr "Kanaal tomaakt"
521
522 #~ msgid "Channel closed with error: %1"
523 #~ msgstr "Kanaal mit Fehler tomaakt: %1"
524
525 #~ msgid "Audio stream created. Stream id: %1."
526 #~ msgstr "Klangstroom opstellt. Stroom-ID: %1"
527
528 #~ msgid "Video stream created. Stream id: %1."
529 #~ msgstr "Videostroom opstellt. Stroom-ID: %1"
530
531 #~ msgctxt "1 is the stream's id"
532 #~ msgid "Stream %1 direction is: %2."
533 #~ msgstr "Richt vun Stroom %1 is: %2."
534
535 #~ msgctxt "1 is the stream's id"
536 #~ msgid "Stream %1 removed."
537 #~ msgstr "Stroom %1 wegdaan"
538
539 #~ msgctxt "1 is the stream's id"
540 #~ msgid "Stream %1 direction changed to: %2."
541 #~ msgstr "Richt vun Stroom %1 ännert na: %2"
542
543 #~ msgctxt "1 is the stream's id"
544 #~ msgid "Stream %1 state changed to: %2."
545 #~ msgstr "Status vun Stroom %1 ännert na: %2"
546
547 #~ msgid "User %1 joined the conference."
548 #~ msgstr "Bruker %1 is na den Koppelsnack rinkamen."
549
550 #~ msgid "Awaiting answer from user %1."
551 #~ msgstr "Antwoort vun Bruker %1 verwacht."
552
553 #~ msgid "User %1 left the conference."
554 #~ msgstr "Bruker %1 is ut den Koppelsnack weggahn."
555
556 #~ msgid "Audio input device"
557 #~ msgstr "Klangingaavreedschap"
558
559 #~ msgid "Audio output device"
560 #~ msgstr "Klangutgaavreedschap"
561
562 #~ msgid "Video input device"
563 #~ msgstr "Videoingaavreedschap"
564
565 #~ msgid "Video output driver"
566 #~ msgstr "Videoutgaavreedschap"
567
568 #~ msgid "Xv video renderer"
569 #~ msgstr "Xv-Videodorstellen"
570
571 #~ msgid "X11 video renderer"
572 #~ msgstr "X11-Videodorstellen"
573
574 #~ msgid "Autodetect"
575 #~ msgstr "Automaatsch opdecken"
576
577 #~ msgid "Test input device"
578 #~ msgstr "Ingaavreedschap utproberen"
579
580 #~ msgctxt "autodetected audio or video system"
581 #~ msgid "Autodetected"
582 #~ msgstr "Automaatsch opdeckt"
583
584 #~ msgid "ALSA"
585 #~ msgstr "ALSA"
586
587 #~ msgid "OSS"
588 #~ msgstr "OSS"
589
590 #~ msgid "JACK"
591 #~ msgstr "JACK"
592
593 #~ msgid "PULSE"
594 #~ msgstr "PULSE"
595
596 #~ msgid "Video4Linux"
597 #~ msgstr "Video4Linux"
598
599 #~ msgid "Device name"
600 #~ msgstr "Reedschapnaam"
601
602 #~ msgid "Sound system"
603 #~ msgstr "Klangsysteem"
604
605 #~ msgid "Video system"
606 #~ msgstr "Videosysteem"
607
608 #~ msgid "Gstreamer element"
609 #~ msgstr "Gstreamer-Element"
610
611 #~ msgid "Driver-specific handle"
612 #~ msgstr "Besünner Driever bruken"
613
614 #~ msgctxt "test the device"
615 #~ msgid "Test"
616 #~ msgstr "Utproberen"
617
618 #~ msgid "Add custom device..."
619 #~ msgstr "Egen Reedschap tofögen..."
620
621 #~ msgid ""
622 #~ "The gstreamer element for the selected device could not be created. "
623 #~ "Please check your gstreamer installation."
624 #~ msgstr ""
625 #~ "Dat GStreamer-Element för de fastleggt Reedschap lett sik nich opstellen. "
626 #~ "Bitte prööv Dien GStreamer-Installatschoon..."
627
628 #~ msgid ""
629 #~ "The selected device could not be initialized. Please select another "
630 #~ "device."
631 #~ msgstr ""
632 #~ "De fastleggt Reedschap lett sik nich torechtmaken. Bitte en anner "
633 #~ "Reedschap utsöken."
634
635 #~ msgid ""
636 #~ "The gstreamer element for the audio output device could not be created. "
637 #~ "Please check your gstreamer installation"
638 #~ msgstr ""
639 #~ "Dat GStreamer-Element för de Klangutgaavreedschap lett sik nich "
640 #~ "opstellen. Bitte prööv Dien GStreamer-Installatschoon.."
641
642 #~ msgid "The audio output device could not be initialized."
643 #~ msgstr "De Reedschap för de Klangutgaav lett sik nich torechtmaken."
644
645 #~ msgid "The video output driver could not be initialized."
646 #~ msgstr "De Reedschap för de Videoutgaav lett sik nich torechtmaken."
647
648 #~ msgid ""
649 #~ "The selected video output driver could not be initialized. Please select "
650 #~ "another driver."
651 #~ msgstr ""
652 #~ "De fastleggt Driever för de Videoutgaav lett sik nich torechtmaken. Bitte "
653 #~ "en anner Driever utsöken."
654
655 #~ msgctxt "stop audio/video test"
656 #~ msgid "Stop test"
657 #~ msgstr "Utproberen ophollen"
658
659 #~ msgid "Hide details"
660 #~ msgstr "Enkelheiten versteken"
661
662 #~ msgid "Automatically close the call window after a timeout"
663 #~ msgstr "Anroopfinster automaatsch na en fastleggt Tiet tomaken."
664
665 #~ msgid "Timeout in seconds:"
666 #~ msgstr "Tietgrenz in Sekunnen:"
667
668 #~ msgid ""
669 #~ "The gstreamer element for the audio input device could not be created. "
670 #~ "Please check your gstreamer installation"
671 #~ msgstr ""
672 #~ "Dat GStreamer-Element för de Klangingaavreedschap lett sik nich "
673 #~ "opstellen. Bitte prööv Dien GStreamer-Installatschoon.."
674
675 #~ msgid ""
676 #~ "The gstreamer element for the video input device could not be created. "
677 #~ "Please check your gstreamer installation."
678 #~ msgstr ""
679 #~ "Dat GStreamer-Element för de Videoingaavreedschap lett sik nich "
680 #~ "opstellen. Bitte prööv Dien GStreamer-Installatschoon.."
681
682 #~ msgid "Could not initialize the channel"
683 #~ msgstr "De Kanaal lett sik nich torechtmaken."
684
685 #~ msgid "Ignore"
686 #~ msgstr "Övergahn"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( nl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Freek de Kruijf <freekdekruijf@kde.nl>, 2012.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-02 00:40+0200\n"
10 "Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
11 "Language-Team: Dutch <kde-i18n-nl@kde.org>\n"
12 "Language: \n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.2\n"
17 "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr "Inkomende video-oproep"
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr "<p>%1 vraagt u om een video-oproep</p>"
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr "Inkomend gesprek"
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr "<p>%1 roept u op</p>"
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr "Antwoord"
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr "Verwerpen"
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr "Oproepen met %1"
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "Verbinden..."
56
57 #: src/call-window.cpp:113
58 msgctxt "@info:status the remote user's phone is ringing"
59 msgid "Ringing..."
60 msgstr "Bel gaat over..."
61
62 #: src/call-window.cpp:117
63 msgctxt "@info:status"
64 msgid "Remote user accepted the call, waiting for connection..."
65 msgstr ""
66 "De gebruiker op afstand heeft de aanroep geaccepteerd, wacht op de "
67 "verbinding..."
68
69 #: src/call-window.cpp:120
70 msgctxt "@info:status"
71 msgid "Talking..."
72 msgstr "Praten..."
73
74 #: src/call-window.cpp:136
75 msgctxt "@info:status"
76 msgid "Remote contact ended the call."
77 msgstr "Het contact op afstand heeft de aanroep beëindigd."
78
79 #: src/call-window.cpp:143
80 msgctxt "@info:status"
81 msgid "Remote contact rejected the call."
82 msgstr "Het contact op afstand heeft de aanroep geweigerd."
83
84 #: src/call-window.cpp:148
85 msgctxt "@info:status"
86 msgid "Remote contact didn't answer."
87 msgstr "Geen antwoord van het contact op afstand."
88
89 #: src/call-window.cpp:152
90 msgctxt "@info:status"
91 msgid "Invalid number or contact."
92 msgstr "Ongeldig nummer of contact."
93
94 #: src/call-window.cpp:156
95 msgctxt "@info:status"
96 msgid "You don't have enough balance to make this call."
97 msgstr "U hebt niet voldoende saldo om deze aanroep te doen."
98
99 #: src/call-window.cpp:158
100 msgctxt "@info:status"
101 msgid "You don't have permission to make this call."
102 msgstr "U bezit niet de nodige permissies om deze aanroep te doen."
103
104 #: src/call-window.cpp:163
105 msgctxt "@info:status"
106 msgid "Remote contact is currently busy."
107 msgstr "Het contact op afstand is bezet."
108
109 #: src/call-window.cpp:167
110 msgctxt "@info:status"
111 msgid "Internal component error."
112 msgstr "Interne fout in component."
113
114 #: src/call-window.cpp:170
115 msgctxt "@info:status"
116 msgid "Remote service error."
117 msgstr "Fout in de service op afstand."
118
119 #: src/call-window.cpp:173
120 msgctxt "@info:status"
121 msgid "Network error."
122 msgstr "Netwerkfout."
123
124 #: src/call-window.cpp:177
125 msgctxt "@info:status"
126 msgid "Failed to negotiate codecs."
127 msgstr "Onderhandelen over codecs is mislukt."
128
129 #: src/call-window.cpp:179
130 msgctxt "@info:status"
131 msgid "Unsupported media type."
132 msgstr "Niet-ondersteund schijftype."
133
134 #: src/call-window.cpp:183
135 msgctxt "@info:status"
136 msgid "Connectivity error."
137 msgstr "Fout met verbinding."
138
139 #: src/call-window.cpp:187
140 msgctxt "@info:status"
141 msgid "Unknown error."
142 msgstr "Onbekende fout."
143
144 #: src/call-window.cpp:192
145 msgctxt "@info:status"
146 msgid "Disconnected."
147 msgstr "Verbinding verbroken."
148
149 #: src/call-window.cpp:196
150 #, kde-format
151 msgctxt "@info:status the call was disconnected because..."
152 msgid "Disconnected: %1"
153 msgstr "Verbinding verbroken: %1"
154
155 #: src/call-window.cpp:339
156 msgctxt "@action"
157 msgid "Show my video"
158 msgstr "Mijn video weergeven"
159
160 #: src/call-window.cpp:344
161 msgctxt "@action"
162 msgid "Show dialpad"
163 msgstr "Kiestoetsen tonen"
164
165 #: src/call-window.cpp:351
166 msgctxt "@action"
167 msgid "Send video"
168 msgstr "Video verzenden"
169
170 #: src/call-window.cpp:356 src/call-window.cpp:357
171 msgctxt "@action"
172 msgid "Mute"
173 msgstr "Dempen"
174
175 #: src/call-window.cpp:363
176 msgctxt "@action"
177 msgid "Hold"
178 msgstr "In wacht"
179
180 #: src/call-window.cpp:368
181 msgctxt "@action"
182 msgid "Hangup"
183 msgstr "Ophangen"
184
185 #: src/main.cpp:36
186 msgid "KDE Telepathy Call Ui"
187 msgstr "UI voor opbellen met KDE Telepathy"
188
189 #: src/main.cpp:37
190 msgid "VoIP client for KDE"
191 msgstr "VoIP-client voor KDE"
192
193 #: src/main.cpp:38
194 msgid "(C) 2009, George Kiagiadakis"
195 msgstr "(C) 2009, George Kiagiadakis"
196
197 #: src/main.cpp:40
198 msgctxt "@info:credit"
199 msgid "George Kiagiadakis"
200 msgstr "George Kiagiadakis"
201
202 #: rc.cpp:1
203 msgctxt "NAME OF TRANSLATORS"
204 msgid "Your names"
205 msgstr "Freek de Kruijf"
206
207 #: rc.cpp:2
208 msgctxt "EMAIL OF TRANSLATORS"
209 msgid "Your emails"
210 msgstr "freekdekruijf@kde.nl"
211
212 #. i18n: file: src/callwindowui.rc:11
213 #. i18n: ectx: Menu (call)
214 #: rc.cpp:5
215 msgid "Call"
216 msgstr "Aanroep"
217
218 #. i18n: file: src/callwindowui.rc:20
219 #. i18n: ectx: Menu (media)
220 #: rc.cpp:8
221 msgid "Media"
222 msgstr "Media"
223
224 #. i18n: file: src/callwindowui.rc:27
225 #. i18n: ectx: ToolBar (mainToolBar)
226 #: rc.cpp:11
227 msgid "Main Toolbar"
228 msgstr "Hoofdwerkbalk"
229
230 #. i18n: file: src/dtmf-widget.ui:17
231 #. i18n: ectx: property (text), widget (QPushButton, button1)
232 #: rc.cpp:14
233 msgid "1"
234 msgstr "1"
235
236 #. i18n: file: src/dtmf-widget.ui:24
237 #. i18n: ectx: property (text), widget (QPushButton, button2)
238 #: rc.cpp:17
239 msgid "2"
240 msgstr "2"
241
242 #. i18n: file: src/dtmf-widget.ui:31
243 #. i18n: ectx: property (text), widget (QPushButton, button3)
244 #: rc.cpp:20
245 msgid "3"
246 msgstr "3"
247
248 #. i18n: file: src/dtmf-widget.ui:38
249 #. i18n: ectx: property (text), widget (QPushButton, button4)
250 #: rc.cpp:23
251 msgid "4"
252 msgstr "4"
253
254 #. i18n: file: src/dtmf-widget.ui:45
255 #. i18n: ectx: property (text), widget (QPushButton, button5)
256 #: rc.cpp:26
257 msgid "5"
258 msgstr "5"
259
260 #. i18n: file: src/dtmf-widget.ui:52
261 #. i18n: ectx: property (text), widget (QPushButton, button6)
262 #: rc.cpp:29
263 msgid "6"
264 msgstr "6"
265
266 #. i18n: file: src/dtmf-widget.ui:59
267 #. i18n: ectx: property (text), widget (QPushButton, button7)
268 #: rc.cpp:32
269 msgid "7"
270 msgstr "7"
271
272 #. i18n: file: src/dtmf-widget.ui:66
273 #. i18n: ectx: property (text), widget (QPushButton, button8)
274 #: rc.cpp:35
275 msgid "8"
276 msgstr "8"
277
278 #. i18n: file: src/dtmf-widget.ui:73
279 #. i18n: ectx: property (text), widget (QPushButton, button9)
280 #: rc.cpp:38
281 msgid "9"
282 msgstr "9"
283
284 #. i18n: file: src/dtmf-widget.ui:80
285 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
286 #: rc.cpp:41
287 msgid "*"
288 msgstr "*"
289
290 #. i18n: file: src/dtmf-widget.ui:87
291 #. i18n: ectx: property (text), widget (QPushButton, button0)
292 #: rc.cpp:44
293 msgid "0"
294 msgstr "0"
295
296 #. i18n: file: src/dtmf-widget.ui:94
297 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
298 #: rc.cpp:47
299 msgid "#"
300 msgstr "#"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( pl ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2011, 2012.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-12 08:54+0200\n"
10 "Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
11 "Language-Team: Polish <kde-i18n-doc@kde.org>\n"
12 "Language: pl\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.4\n"
17 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18 "|| n%100>=20) ? 1 : 2);\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr "Przychodząca rozmowa wideo"
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr "<p>%1 prosi cię o rozmowę wideo</p>"
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr "Rozmowa przychodząca"
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr "<p>%1 dzwoni do ciebie</p>"
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr "Odpowiedz"
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr "Odrzuć"
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr "Zadzwoń do %1"
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr "Łączenie..."
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr "Dzwonienie..."
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr "Zdalny użytkownik zaakceptował rozmowę, oczekiwanie na połączenie..."
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr "Rozmawianie..."
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr "Zdalny kontakt zakończył dzwonienie."
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr "Zdalny kontakt odrzucił dzwonienie."
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr "Zdalny kontakt nie odpowiedział."
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr "Nieprawidłowy numer lub kontakt."
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr "Nie masz wystarczająco pieniędzy, aby wykonać tą rozmowę."
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr "Nie masz wystarczających uprawnień, aby wykonać tą rozmowę."
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr "Zdalny kontakt jest obecnie zajęty."
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr "Błąd wewnętrznego składnika."
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr "Błąd zdalnej usługi."
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr "Błąd sieci."
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr "Negocjacja kodeków nie udała się."
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr "Nieobsługiwany typ mediów."
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr "Błąd łączności."
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr "Nieznany błąd."
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr "Rozłączony."
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr "Rozłączony: %1"
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr "Pokaż mój obraz"
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr "Pokaż panel wybierania"
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr "Wyślij obraz"
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr "Wycisz"
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr "Trzymaj"
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr "Odwieś"
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr "Interfejs użytkownika dzwonienia KDE Telepathy"
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr "Klient VoIP dla KDE"
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr "(C) 2009, George Kiagiadakis"
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr "George Kiagiadakis"
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr "Łukasz Wojniłowicz"
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr "lukasz.wojnilowicz@gmail.com"
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr "Rozmowa"
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr "Media"
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr "Główny pasek narzędzi"
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr "1"
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr "2"
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr "3"
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr "4"
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr "5"
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr "6"
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr "7"
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr "8"
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr "9"
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr "*"
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr "0"
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr "#"
300
301 #~ msgid "Warning: %1"
302 #~ msgstr "Ostrzeżenie: %1"
303
304 #~ msgid "Error: %1"
305 #~ msgstr "Błąd: %1"
306
307 #~ msgid "KCall"
308 #~ msgstr "KCall"
309
310 #~ msgid "Brightness"
311 #~ msgstr "Jasność"
312
313 #~ msgid "Contrast"
314 #~ msgstr "Kontrast"
315
316 #~ msgid "Hue"
317 #~ msgstr "Odcień"
318
319 #~ msgid "Saturation"
320 #~ msgstr "Nasycenie"
321
322 #~ msgid "Dialpad"
323 #~ msgstr "Panel wyboru"
324
325 #~ msgid ""
326 #~ "Defines whether the window should close automatically after a timeout "
327 #~ "when the call is over."
328 #~ msgstr ""
329 #~ "Określa czy okno powinno automatycznie zamknąć się, po czasie "
330 #~ "oczekiwania , po skończonej rozmowie."
331
332 #~ msgid ""
333 #~ "Defines how many seconds the call window should remain visible after the "
334 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
335 #~ msgstr ""
336 #~ "Określa ile sekund okno rozmowy powinno zostać widoczne, po skończeniu "
337 #~ "rozmowy. Opcja ta zależy od \"ZamknijPrzyRozłączeniu\"."
338
339 #~ msgid "The audio input device could not be initialized"
340 #~ msgstr "Nie można zainicjować wejściowego urządzenia dźwiękowego"
341
342 #~ msgid "The video input device could not be initialized"
343 #~ msgstr "Nie można zainicjować wejściowego urządzenia obrazu"
344
345 #~ msgid ""
346 #~ "Could not create some of the required elements. Please check your "
347 #~ "GStreamer installation."
348 #~ msgstr ""
349 #~ "Nie można utworzyć pewnych wymaganych elementów. Proszę sprawdzić swoją "
350 #~ "instalację GStreamer."
351
352 #~ msgid "The audio output device could not be initialized"
353 #~ msgstr "Nie można zainicjować wyjściowego urządzenia dźwiękowego"
354
355 #~ msgctxt "@action:inmenu"
356 #~ msgid "Show participants"
357 #~ msgstr "Pokaż uczestników"
358
359 #~ msgctxt "@action:inmenu"
360 #~ msgid "Show log"
361 #~ msgstr "Pokaż dziennik"
362
363 #~ msgctxt "@action"
364 #~ msgid "Stop sending video"
365 #~ msgstr "Przestań wysyłać obraz"
366
367 #~ msgctxt "@action:inmenu"
368 #~ msgid "Status"
369 #~ msgstr "Stan"
370
371 #~ msgctxt "@action:inmenu"
372 #~ msgid "Available"
373 #~ msgstr "Dostępny"
374
375 #~ msgctxt "@action:inmenu"
376 #~ msgid "Away"
377 #~ msgstr "Nieobecny"
378
379 #~ msgctxt "@action:inmenu"
380 #~ msgid "Be right back"
381 #~ msgstr "Zaraz wracam"
382
383 #~ msgctxt "@action:inmenu"
384 #~ msgid "Busy"
385 #~ msgstr "Zajęty"
386
387 #~ msgctxt "@action:inmenu"
388 #~ msgid "Do not disturb"
389 #~ msgstr "Nie przeszkadzać"
390
391 #~ msgctxt "@action:inmenu"
392 #~ msgid "Extended Away"
393 #~ msgstr "Nieobecny na dłużej"
394
395 #~ msgctxt "@action:inmenu"
396 #~ msgid "Invisible"
397 #~ msgstr "Niewidoczny"
398
399 #~ msgctxt "@action:inmenu"
400 #~ msgid "Offline"
401 #~ msgstr "Niedostępny"
402
403 #~ msgctxt "@info:status"
404 #~ msgid "Waiting for account information..."
405 #~ msgstr "Oczekiwanie na informacje o koncie..."
406
407 #~ msgctxt "protocol - display name (Connecting)"
408 #~ msgid "%1 - %2 (Connecting)"
409 #~ msgstr "%1 - %2 (Łączenie)"
410
411 #~ msgctxt "protocol - display name"
412 #~ msgid "%1 - %2"
413 #~ msgstr "%1 - %2"
414
415 #~ msgctxt "@title:window"
416 #~ msgid "KCall"
417 #~ msgstr "KCall"
418
419 #~ msgctxt "@info:status"
420 #~ msgid "Connected"
421 #~ msgstr "Połączony"
422
423 #~ msgctxt "@action"
424 #~ msgid "Disconnect"
425 #~ msgstr "Rozłącz"
426
427 #~ msgctxt "@action"
428 #~ msgid "Cancel connection attempt"
429 #~ msgstr "Anuluj próbę połączenia"
430
431 #~ msgctxt "@action"
432 #~ msgid "Connect"
433 #~ msgstr "Połącz"
434
435 #~ msgid ""
436 #~ "You have requested to close KCall. Note that KCall will not actually "
437 #~ "quit, but it will stay active in the system tray waiting for incoming "
438 #~ "calls."
439 #~ msgstr ""
440 #~ "Zażądano zamknięcia KCall. Wiedz, że KCall, tak właściwie to nie "
441 #~ "zakończy, ale pozostanie aktywny w tacce systemowej, oczekując na "
442 #~ "przychodzące rozmowy."
443
444 #~ msgid "Volume"
445 #~ msgstr "Głośność"
446
447 #~ msgid "Speakers"
448 #~ msgstr "Głośniki"
449
450 #~ msgid "Microphone"
451 #~ msgstr "Mikrofon"
452
453 #~ msgid "Video controls"
454 #~ msgstr "Sterowanie obrazem"
455
456 #~ msgid "Video input"
457 #~ msgstr "Wejście obrazu"
458
459 #~ msgid "Call log"
460 #~ msgstr "Dziennik rozmów"
461
462 #~ msgid "Participants"
463 #~ msgstr "Uczestnicy"
464
465 #~ msgctxt "@title:tab"
466 #~ msgid "&Contact list"
467 #~ msgstr "Lista &kontaktów"
468
469 #~ msgid "Dial directly"
470 #~ msgstr "Bezpośrednie wybieranie"
471
472 #~ msgid "Account"
473 #~ msgstr "Konto"
474
475 #~ msgid "Contact handle"
476 #~ msgstr "Obsługa kontaktu"
477
478 #~ msgid "Dial (Audio only)"
479 #~ msgstr "Wybierz (Tylko dźwięk)"
480
481 #~ msgid "Dial (Audio/Video)"
482 #~ msgstr "Wybierz (Dźwięk/Obraz)"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( pt ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: ktp-call-ui\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2012-05-02 10:14+0100\n"
11 "Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n"
12 "Language-Team: Portuguese <kde-i18n-pt@kde.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-POFile-SpellExtra: Kiagiadakis\n"
18 "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr "Chamada de vídeo recebida"
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr "<p>%1 está a pedir uma chamada de vídeo consigo</p>"
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr "Chamada recebida"
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr "<p>%1 está a ligar-lhe</p>"
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr "Responder"
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr "Rejeitar"
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr "Chamar com %1"
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr "A ligar..."
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr "A tocar..."
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr "O utilizador remoto aceitou a chamada; à espera da ligação..."
67
68 #: src/call-window.cpp:120
69 msgctxt "@info:status"
70 msgid "Talking..."
71 msgstr "A falar..."
72
73 #: src/call-window.cpp:136
74 msgctxt "@info:status"
75 msgid "Remote contact ended the call."
76 msgstr "O contacto remoto terminou a chamada."
77
78 #: src/call-window.cpp:143
79 msgctxt "@info:status"
80 msgid "Remote contact rejected the call."
81 msgstr "O contacto remoto rejeitou a chamada."
82
83 #: src/call-window.cpp:148
84 msgctxt "@info:status"
85 msgid "Remote contact didn't answer."
86 msgstr "O contacto remoto não respondeu."
87
88 #: src/call-window.cpp:152
89 msgctxt "@info:status"
90 msgid "Invalid number or contact."
91 msgstr "O número ou o contacto são inválidos."
92
93 #: src/call-window.cpp:156
94 msgctxt "@info:status"
95 msgid "You don't have enough balance to make this call."
96 msgstr "Não tem saldo suficiente para fazer esta chamada."
97
98 #: src/call-window.cpp:158
99 msgctxt "@info:status"
100 msgid "You don't have permission to make this call."
101 msgstr "Não tem permissões para fazer esta chamada."
102
103 #: src/call-window.cpp:163
104 msgctxt "@info:status"
105 msgid "Remote contact is currently busy."
106 msgstr "O contacto remoto está ocupado de momento."
107
108 #: src/call-window.cpp:167
109 msgctxt "@info:status"
110 msgid "Internal component error."
111 msgstr "Ocorreu um erro interno do componente."
112
113 #: src/call-window.cpp:170
114 msgctxt "@info:status"
115 msgid "Remote service error."
116 msgstr "Ocorreu um erro interno do serviço remoto."
117
118 #: src/call-window.cpp:173
119 msgctxt "@info:status"
120 msgid "Network error."
121 msgstr "Ocorreu um erro de rede."
122
123 #: src/call-window.cpp:177
124 msgctxt "@info:status"
125 msgid "Failed to negotiate codecs."
126 msgstr "Não foi possível negociar os codificadores."
127
128 #: src/call-window.cpp:179
129 msgctxt "@info:status"
130 msgid "Unsupported media type."
131 msgstr "O tipo de conteúdos não é suportado."
132
133 #: src/call-window.cpp:183
134 msgctxt "@info:status"
135 msgid "Connectivity error."
136 msgstr "Ocorreu um erro na ligação."
137
138 #: src/call-window.cpp:187
139 msgctxt "@info:status"
140 msgid "Unknown error."
141 msgstr "Erro desconhecido."
142
143 #: src/call-window.cpp:192
144 msgctxt "@info:status"
145 msgid "Disconnected."
146 msgstr "Desligado."
147
148 #: src/call-window.cpp:196
149 #, kde-format
150 msgctxt "@info:status the call was disconnected because..."
151 msgid "Disconnected: %1"
152 msgstr "Desligada: %1"
153
154 #: src/call-window.cpp:339
155 msgctxt "@action"
156 msgid "Show my video"
157 msgstr "Mostrar o meu vídeo"
158
159 #: src/call-window.cpp:344
160 msgctxt "@action"
161 msgid "Show dialpad"
162 msgstr "Mostrar o marcador"
163
164 #: src/call-window.cpp:351
165 msgctxt "@action"
166 msgid "Send video"
167 msgstr "Enviar o vídeo"
168
169 #: src/call-window.cpp:356 src/call-window.cpp:357
170 msgctxt "@action"
171 msgid "Mute"
172 msgstr "Silenciar"
173
174 #: src/call-window.cpp:363
175 msgctxt "@action"
176 msgid "Hold"
177 msgstr "Suspender"
178
179 #: src/call-window.cpp:368
180 msgctxt "@action"
181 msgid "Hangup"
182 msgstr "Desligar"
183
184 #: src/main.cpp:36
185 msgid "KDE Telepathy Call Ui"
186 msgstr "GUI de Chamadas pelo Telepathy KDE"
187
188 #: src/main.cpp:37
189 msgid "VoIP client for KDE"
190 msgstr "Cliente de VoIP para o KDE"
191
192 #: src/main.cpp:38
193 msgid "(C) 2009, George Kiagiadakis"
194 msgstr "(C) 2009, George Kiagiadakis"
195
196 #: src/main.cpp:40
197 msgctxt "@info:credit"
198 msgid "George Kiagiadakis"
199 msgstr "George Kiagiadakis"
200
201 #: rc.cpp:1
202 msgctxt "NAME OF TRANSLATORS"
203 msgid "Your names"
204 msgstr "José Nuno Pires"
205
206 #: rc.cpp:2
207 msgctxt "EMAIL OF TRANSLATORS"
208 msgid "Your emails"
209 msgstr "zepires@gmail.com"
210
211 #. i18n: file: src/callwindowui.rc:11
212 #. i18n: ectx: Menu (call)
213 #: rc.cpp:5
214 msgid "Call"
215 msgstr "Chamada"
216
217 #. i18n: file: src/callwindowui.rc:20
218 #. i18n: ectx: Menu (media)
219 #: rc.cpp:8
220 msgid "Media"
221 msgstr "Itens Multimédia"
222
223 #. i18n: file: src/callwindowui.rc:27
224 #. i18n: ectx: ToolBar (mainToolBar)
225 #: rc.cpp:11
226 msgid "Main Toolbar"
227 msgstr "Barra Principal"
228
229 #. i18n: file: src/dtmf-widget.ui:17
230 #. i18n: ectx: property (text), widget (QPushButton, button1)
231 #: rc.cpp:14
232 msgid "1"
233 msgstr "1"
234
235 #. i18n: file: src/dtmf-widget.ui:24
236 #. i18n: ectx: property (text), widget (QPushButton, button2)
237 #: rc.cpp:17
238 msgid "2"
239 msgstr "2"
240
241 #. i18n: file: src/dtmf-widget.ui:31
242 #. i18n: ectx: property (text), widget (QPushButton, button3)
243 #: rc.cpp:20
244 msgid "3"
245 msgstr "3"
246
247 #. i18n: file: src/dtmf-widget.ui:38
248 #. i18n: ectx: property (text), widget (QPushButton, button4)
249 #: rc.cpp:23
250 msgid "4"
251 msgstr "4"
252
253 #. i18n: file: src/dtmf-widget.ui:45
254 #. i18n: ectx: property (text), widget (QPushButton, button5)
255 #: rc.cpp:26
256 msgid "5"
257 msgstr "5"
258
259 #. i18n: file: src/dtmf-widget.ui:52
260 #. i18n: ectx: property (text), widget (QPushButton, button6)
261 #: rc.cpp:29
262 msgid "6"
263 msgstr "6"
264
265 #. i18n: file: src/dtmf-widget.ui:59
266 #. i18n: ectx: property (text), widget (QPushButton, button7)
267 #: rc.cpp:32
268 msgid "7"
269 msgstr "7"
270
271 #. i18n: file: src/dtmf-widget.ui:66
272 #. i18n: ectx: property (text), widget (QPushButton, button8)
273 #: rc.cpp:35
274 msgid "8"
275 msgstr "8"
276
277 #. i18n: file: src/dtmf-widget.ui:73
278 #. i18n: ectx: property (text), widget (QPushButton, button9)
279 #: rc.cpp:38
280 msgid "9"
281 msgstr "9"
282
283 #. i18n: file: src/dtmf-widget.ui:80
284 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
285 #: rc.cpp:41
286 msgid "*"
287 msgstr "*"
288
289 #. i18n: file: src/dtmf-widget.ui:87
290 #. i18n: ectx: property (text), widget (QPushButton, button0)
291 #: rc.cpp:44
292 msgid "0"
293 msgstr "0"
294
295 #. i18n: file: src/dtmf-widget.ui:94
296 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
297 #: rc.cpp:47
298 msgid "#"
299 msgstr "#"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( pt_BR ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2012.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-06 10:52-0300\n"
10 "Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n"
11 "Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
12 "Language: \n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.2\n"
17 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr "Chamada de vídeo recebida"
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr "<p>%1 está chamando você para uma chamada de vídeo</p>"
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr "Chamada recebida"
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr "<p>%1 está chamando você</p>"
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr "Responder"
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr "Rejeitar"
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr "Chamar com %1"
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "Conectando..."
56
57 #: src/call-window.cpp:113
58 msgctxt "@info:status the remote user's phone is ringing"
59 msgid "Ringing..."
60 msgstr "Chamando..."
61
62 #: src/call-window.cpp:117
63 msgctxt "@info:status"
64 msgid "Remote user accepted the call, waiting for connection..."
65 msgstr "O usuário remoto aceitou a chamada, aguardando pela conexão..."
66
67 #: src/call-window.cpp:120
68 msgctxt "@info:status"
69 msgid "Talking..."
70 msgstr "Falando..."
71
72 #: src/call-window.cpp:136
73 msgctxt "@info:status"
74 msgid "Remote contact ended the call."
75 msgstr "O contato remoto finalizou a chamada."
76
77 #: src/call-window.cpp:143
78 msgctxt "@info:status"
79 msgid "Remote contact rejected the call."
80 msgstr "O contato remoto rejeitou a chamada."
81
82 #: src/call-window.cpp:148
83 msgctxt "@info:status"
84 msgid "Remote contact didn't answer."
85 msgstr "O contato remoto não respondeu."
86
87 #: src/call-window.cpp:152
88 msgctxt "@info:status"
89 msgid "Invalid number or contact."
90 msgstr "Número ou contato inválido."
91
92 #: src/call-window.cpp:156
93 msgctxt "@info:status"
94 msgid "You don't have enough balance to make this call."
95 msgstr "Você não tem saldo suficiente para fazer esta chamada."
96
97 #: src/call-window.cpp:158
98 msgctxt "@info:status"
99 msgid "You don't have permission to make this call."
100 msgstr "Você não tem permissão para fazer esta chamada."
101
102 #: src/call-window.cpp:163
103 msgctxt "@info:status"
104 msgid "Remote contact is currently busy."
105 msgstr "O contato remoto está ocupado no momento."
106
107 #: src/call-window.cpp:167
108 msgctxt "@info:status"
109 msgid "Internal component error."
110 msgstr "Erro interno do componente."
111
112 #: src/call-window.cpp:170
113 msgctxt "@info:status"
114 msgid "Remote service error."
115 msgstr "Erro do serviço remoto."
116
117 #: src/call-window.cpp:173
118 msgctxt "@info:status"
119 msgid "Network error."
120 msgstr "Erro de rede."
121
122 #: src/call-window.cpp:177
123 msgctxt "@info:status"
124 msgid "Failed to negotiate codecs."
125 msgstr "Falha ao negociar os codecs."
126
127 #: src/call-window.cpp:179
128 msgctxt "@info:status"
129 msgid "Unsupported media type."
130 msgstr "Tipo de mídia não suportado."
131
132 #: src/call-window.cpp:183
133 msgctxt "@info:status"
134 msgid "Connectivity error."
135 msgstr "Erro de conectividade."
136
137 #: src/call-window.cpp:187
138 msgctxt "@info:status"
139 msgid "Unknown error."
140 msgstr "Erro desconhecido."
141
142 #: src/call-window.cpp:192
143 msgctxt "@info:status"
144 msgid "Disconnected."
145 msgstr "Desconectado."
146
147 #: src/call-window.cpp:196
148 #, kde-format
149 msgctxt "@info:status the call was disconnected because..."
150 msgid "Disconnected: %1"
151 msgstr "Desconectado: %1"
152
153 #: src/call-window.cpp:339
154 msgctxt "@action"
155 msgid "Show my video"
156 msgstr "Exibir meu vídeo"
157
158 #: src/call-window.cpp:344
159 msgctxt "@action"
160 msgid "Show dialpad"
161 msgstr "Exibir teclado numérico"
162
163 #: src/call-window.cpp:351
164 msgctxt "@action"
165 msgid "Send video"
166 msgstr "Enviar vídeo"
167
168 #: src/call-window.cpp:356 src/call-window.cpp:357
169 msgctxt "@action"
170 msgid "Mute"
171 msgstr "Mudo"
172
173 #: src/call-window.cpp:363
174 msgctxt "@action"
175 msgid "Hold"
176 msgstr "Aguardar"
177
178 #: src/call-window.cpp:368
179 msgctxt "@action"
180 msgid "Hangup"
181 msgstr "Desligar"
182
183 #: src/main.cpp:36
184 msgid "KDE Telepathy Call Ui"
185 msgstr "Interface de chamada KDE Telepathy"
186
187 #: src/main.cpp:37
188 msgid "VoIP client for KDE"
189 msgstr "Cliente VoIP para o KDE"
190
191 #: src/main.cpp:38
192 msgid "(C) 2009, George Kiagiadakis"
193 msgstr "(C) 2009, George Kiagiadakis"
194
195 #: src/main.cpp:40
196 msgctxt "@info:credit"
197 msgid "George Kiagiadakis"
198 msgstr "George Kiagiadakis"
199
200 #: rc.cpp:1
201 msgctxt "NAME OF TRANSLATORS"
202 msgid "Your names"
203 msgstr "Luiz Fernando Ranghetti"
204
205 #: rc.cpp:2
206 msgctxt "EMAIL OF TRANSLATORS"
207 msgid "Your emails"
208 msgstr "elchevive@opensuse.org"
209
210 #. i18n: file: src/callwindowui.rc:11
211 #. i18n: ectx: Menu (call)
212 #: rc.cpp:5
213 msgid "Call"
214 msgstr "Chamada"
215
216 #. i18n: file: src/callwindowui.rc:20
217 #. i18n: ectx: Menu (media)
218 #: rc.cpp:8
219 msgid "Media"
220 msgstr "Mídia"
221
222 #. i18n: file: src/callwindowui.rc:27
223 #. i18n: ectx: ToolBar (mainToolBar)
224 #: rc.cpp:11
225 msgid "Main Toolbar"
226 msgstr "Barra de ferramentas principal"
227
228 #. i18n: file: src/dtmf-widget.ui:17
229 #. i18n: ectx: property (text), widget (QPushButton, button1)
230 #: rc.cpp:14
231 msgid "1"
232 msgstr "1"
233
234 #. i18n: file: src/dtmf-widget.ui:24
235 #. i18n: ectx: property (text), widget (QPushButton, button2)
236 #: rc.cpp:17
237 msgid "2"
238 msgstr "2"
239
240 #. i18n: file: src/dtmf-widget.ui:31
241 #. i18n: ectx: property (text), widget (QPushButton, button3)
242 #: rc.cpp:20
243 msgid "3"
244 msgstr "3"
245
246 #. i18n: file: src/dtmf-widget.ui:38
247 #. i18n: ectx: property (text), widget (QPushButton, button4)
248 #: rc.cpp:23
249 msgid "4"
250 msgstr "4"
251
252 #. i18n: file: src/dtmf-widget.ui:45
253 #. i18n: ectx: property (text), widget (QPushButton, button5)
254 #: rc.cpp:26
255 msgid "5"
256 msgstr "5"
257
258 #. i18n: file: src/dtmf-widget.ui:52
259 #. i18n: ectx: property (text), widget (QPushButton, button6)
260 #: rc.cpp:29
261 msgid "6"
262 msgstr "6"
263
264 #. i18n: file: src/dtmf-widget.ui:59
265 #. i18n: ectx: property (text), widget (QPushButton, button7)
266 #: rc.cpp:32
267 msgid "7"
268 msgstr "7"
269
270 #. i18n: file: src/dtmf-widget.ui:66
271 #. i18n: ectx: property (text), widget (QPushButton, button8)
272 #: rc.cpp:35
273 msgid "8"
274 msgstr "8"
275
276 #. i18n: file: src/dtmf-widget.ui:73
277 #. i18n: ectx: property (text), widget (QPushButton, button9)
278 #: rc.cpp:38
279 msgid "9"
280 msgstr "9"
281
282 #. i18n: file: src/dtmf-widget.ui:80
283 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
284 #: rc.cpp:41
285 msgid "*"
286 msgstr "*"
287
288 #. i18n: file: src/dtmf-widget.ui:87
289 #. i18n: ectx: property (text), widget (QPushButton, button0)
290 #: rc.cpp:44
291 msgid "0"
292 msgstr "0"
293
294 #. i18n: file: src/dtmf-widget.ui:94
295 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
296 #: rc.cpp:47
297 msgid "#"
298 msgstr "#"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( sk ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of ktp-call-ui.po to Slovak
1 # Roman Paholik <wizzardsk@gmail.com>, 2012.
2 msgid ""
3 msgstr ""
4 "Project-Id-Version: ktp-call-ui\n"
5 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
6 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
7 "PO-Revision-Date: 2012-03-02 15:27+0100\n"
8 "Last-Translator: Roman Paholík <wizzardsk@gmail.com>\n"
9 "Language-Team: Slovak <kde-sk@linux.sk>\n"
10 "Language: sk\n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "X-Generator: Lokalize 0.2\n"
15 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
16
17 #: src/approver.cpp:38
18 msgid "Incoming video call"
19 msgstr ""
20
21 #: src/approver.cpp:39
22 #, kde-format
23 msgid "<p>%1 is asking you for a video call</p>"
24 msgstr ""
25
26 #: src/approver.cpp:41
27 msgid "Incoming call"
28 msgstr ""
29
30 #: src/approver.cpp:42
31 #, kde-format
32 msgid "<p>%1 is calling you</p>"
33 msgstr ""
34
35 #: src/approver.cpp:58 src/approver.cpp:80
36 msgctxt "action, answers the incoming call"
37 msgid "Answer"
38 msgstr ""
39
40 #: src/approver.cpp:59 src/approver.cpp:82
41 msgctxt "action, rejects the incoming call"
42 msgid "Reject"
43 msgstr ""
44
45 #: src/call-window.cpp:95
46 #, kde-format
47 msgid "Call with %1"
48 msgstr ""
49
50 #: src/call-window.cpp:109
51 msgctxt "@info:status"
52 msgid "Connecting..."
53 msgstr "Pripájanie..."
54
55 #: src/call-window.cpp:113
56 #, fuzzy
57 #| msgctxt "@info:status"
58 #| msgid "Connecting..."
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr "Pripájanie..."
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr ""
67
68 #: src/call-window.cpp:120
69 #, fuzzy
70 msgctxt "@info:status"
71 msgid "Talking..."
72 msgstr "Hovoriť s vami"
73
74 #: src/call-window.cpp:136
75 msgctxt "@info:status"
76 msgid "Remote contact ended the call."
77 msgstr ""
78
79 #: src/call-window.cpp:143
80 msgctxt "@info:status"
81 msgid "Remote contact rejected the call."
82 msgstr ""
83
84 #: src/call-window.cpp:148
85 msgctxt "@info:status"
86 msgid "Remote contact didn't answer."
87 msgstr ""
88
89 #: src/call-window.cpp:152
90 msgctxt "@info:status"
91 msgid "Invalid number or contact."
92 msgstr ""
93
94 #: src/call-window.cpp:156
95 msgctxt "@info:status"
96 msgid "You don't have enough balance to make this call."
97 msgstr ""
98
99 #: src/call-window.cpp:158
100 msgctxt "@info:status"
101 msgid "You don't have permission to make this call."
102 msgstr ""
103
104 #: src/call-window.cpp:163
105 msgctxt "@info:status"
106 msgid "Remote contact is currently busy."
107 msgstr ""
108
109 #: src/call-window.cpp:167
110 msgctxt "@info:status"
111 msgid "Internal component error."
112 msgstr ""
113
114 #: src/call-window.cpp:170
115 msgctxt "@info:status"
116 msgid "Remote service error."
117 msgstr ""
118
119 #: src/call-window.cpp:173
120 msgctxt "@info:status"
121 msgid "Network error."
122 msgstr ""
123
124 #: src/call-window.cpp:177
125 msgctxt "@info:status"
126 msgid "Failed to negotiate codecs."
127 msgstr ""
128
129 #: src/call-window.cpp:179
130 msgctxt "@info:status"
131 msgid "Unsupported media type."
132 msgstr ""
133
134 #: src/call-window.cpp:183
135 msgctxt "@info:status"
136 msgid "Connectivity error."
137 msgstr ""
138
139 #: src/call-window.cpp:187
140 msgctxt "@info:status"
141 msgid "Unknown error."
142 msgstr ""
143
144 #: src/call-window.cpp:192
145 msgctxt "@info:status"
146 msgid "Disconnected."
147 msgstr "Odpojený."
148
149 #: src/call-window.cpp:196
150 #, fuzzy, kde-format
151 #| msgctxt "@info:status"
152 #| msgid "Disconnected."
153 msgctxt "@info:status the call was disconnected because..."
154 msgid "Disconnected: %1"
155 msgstr "Odpojený."
156
157 #: src/call-window.cpp:339
158 #, fuzzy
159 msgctxt "@action"
160 msgid "Show my video"
161 msgstr "Zobraz moje záložky"
162
163 #: src/call-window.cpp:344
164 #, fuzzy
165 msgctxt "@action"
166 msgid "Show dialpad"
167 msgstr "Zobraziť &sledované"
168
169 #: src/call-window.cpp:351
170 #, fuzzy
171 msgctxt "@action"
172 msgid "Send video"
173 msgstr "Prehrávač videa"
174
175 #: src/call-window.cpp:356 src/call-window.cpp:357
176 msgctxt "@action"
177 msgid "Mute"
178 msgstr "Stlmiť"
179
180 #: src/call-window.cpp:363
181 #, fuzzy
182 msgctxt "@action"
183 msgid "Hold"
184 msgstr "Pozdržaná"
185
186 #: src/call-window.cpp:368
187 #, fuzzy
188 msgctxt "@action"
189 msgid "Hangup"
190 msgstr "Zavesiť"
191
192 #: src/main.cpp:36
193 msgid "KDE Telepathy Call Ui"
194 msgstr ""
195
196 #: src/main.cpp:37
197 #, fuzzy
198 msgid "VoIP client for KDE"
199 msgstr "BitTorrent klient pre KDE"
200
201 #: src/main.cpp:38
202 msgid "(C) 2009, George Kiagiadakis"
203 msgstr "(C) 2009, George Kiagiadakis"
204
205 #: src/main.cpp:40
206 msgctxt "@info:credit"
207 msgid "George Kiagiadakis"
208 msgstr "George Kiagiadakis"
209
210 #: rc.cpp:1
211 msgctxt "NAME OF TRANSLATORS"
212 msgid "Your names"
213 msgstr "Roman Paholík"
214
215 #: rc.cpp:2
216 msgctxt "EMAIL OF TRANSLATORS"
217 msgid "Your emails"
218 msgstr "wizzardsk@gmail.com"
219
220 #. i18n: file: src/callwindowui.rc:11
221 #. i18n: ectx: Menu (call)
222 #: rc.cpp:5
223 msgid "Call"
224 msgstr "Volanie"
225
226 #. i18n: file: src/callwindowui.rc:20
227 #. i18n: ectx: Menu (media)
228 #: rc.cpp:8
229 msgid "Media"
230 msgstr "Médiá"
231
232 #. i18n: file: src/callwindowui.rc:27
233 #. i18n: ectx: ToolBar (mainToolBar)
234 #: rc.cpp:11
235 msgid "Main Toolbar"
236 msgstr "Hlavný panel nástrojov"
237
238 #. i18n: file: src/dtmf-widget.ui:17
239 #. i18n: ectx: property (text), widget (QPushButton, button1)
240 #: rc.cpp:14
241 msgid "1"
242 msgstr "1"
243
244 #. i18n: file: src/dtmf-widget.ui:24
245 #. i18n: ectx: property (text), widget (QPushButton, button2)
246 #: rc.cpp:17
247 msgid "2"
248 msgstr "2"
249
250 #. i18n: file: src/dtmf-widget.ui:31
251 #. i18n: ectx: property (text), widget (QPushButton, button3)
252 #: rc.cpp:20
253 msgid "3"
254 msgstr "3"
255
256 #. i18n: file: src/dtmf-widget.ui:38
257 #. i18n: ectx: property (text), widget (QPushButton, button4)
258 #: rc.cpp:23
259 msgid "4"
260 msgstr "4"
261
262 #. i18n: file: src/dtmf-widget.ui:45
263 #. i18n: ectx: property (text), widget (QPushButton, button5)
264 #: rc.cpp:26
265 msgid "5"
266 msgstr "5"
267
268 #. i18n: file: src/dtmf-widget.ui:52
269 #. i18n: ectx: property (text), widget (QPushButton, button6)
270 #: rc.cpp:29
271 msgid "6"
272 msgstr "6"
273
274 #. i18n: file: src/dtmf-widget.ui:59
275 #. i18n: ectx: property (text), widget (QPushButton, button7)
276 #: rc.cpp:32
277 msgid "7"
278 msgstr "7"
279
280 #. i18n: file: src/dtmf-widget.ui:66
281 #. i18n: ectx: property (text), widget (QPushButton, button8)
282 #: rc.cpp:35
283 msgid "8"
284 msgstr "8"
285
286 #. i18n: file: src/dtmf-widget.ui:73
287 #. i18n: ectx: property (text), widget (QPushButton, button9)
288 #: rc.cpp:38
289 msgid "9"
290 msgstr "9"
291
292 #. i18n: file: src/dtmf-widget.ui:80
293 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
294 #: rc.cpp:41
295 msgid "*"
296 msgstr "*"
297
298 #. i18n: file: src/dtmf-widget.ui:87
299 #. i18n: ectx: property (text), widget (QPushButton, button0)
300 #: rc.cpp:44
301 msgid "0"
302 msgstr "0"
303
304 #. i18n: file: src/dtmf-widget.ui:94
305 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
306 #: rc.cpp:47
307 msgid "#"
308 msgstr "#"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( sv ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # translation of ktp-call-ui.po to Swedish
1 # Copyright (C) 2012 This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Stefan Asserhäll <stefan.asserhall@comhem.se>, 2009.
5 # Stefan Asserhall <stefan.asserhall@comhem.se>, 2010, 2011, 2012.
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: ktp\n"
9 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
10 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
11 "PO-Revision-Date: 2012-05-22 19:55+0200\n"
12 "Last-Translator: Stefan Asserhäll <stefan.asserhall@comhem.se>\n"
13 "Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
14 "Language: sv\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "X-Generator: Lokalize 1.4\n"
19 "Plural-Forms: nplurals=2; plural=n != 1;\n"
20
21 #: src/approver.cpp:38
22 msgid "Incoming video call"
23 msgstr "Inkommande videosamtal"
24
25 #: src/approver.cpp:39
26 #, kde-format
27 msgid "<p>%1 is asking you for a video call</p>"
28 msgstr "<p>%1 ber om ett videosamtal</p>"
29
30 #: src/approver.cpp:41
31 msgid "Incoming call"
32 msgstr "Inkommande samtal"
33
34 #: src/approver.cpp:42
35 #, kde-format
36 msgid "<p>%1 is calling you</p>"
37 msgstr "<p>%1 ringer till dig</p>"
38
39 #: src/approver.cpp:58 src/approver.cpp:80
40 msgctxt "action, answers the incoming call"
41 msgid "Answer"
42 msgstr "Svara"
43
44 #: src/approver.cpp:59 src/approver.cpp:82
45 msgctxt "action, rejects the incoming call"
46 msgid "Reject"
47 msgstr "Avslå"
48
49 #: src/call-window.cpp:95
50 #, kde-format
51 msgid "Call with %1"
52 msgstr "Samtal med %1"
53
54 #: src/call-window.cpp:109
55 msgctxt "@info:status"
56 msgid "Connecting..."
57 msgstr "Ansluter..."
58
59 #: src/call-window.cpp:113
60 msgctxt "@info:status the remote user's phone is ringing"
61 msgid "Ringing..."
62 msgstr "Ringer upp..."
63
64 #: src/call-window.cpp:117
65 msgctxt "@info:status"
66 msgid "Remote user accepted the call, waiting for connection..."
67 msgstr "Samtalspartnern accepterade samtalet, väntar på anslutning..."
68
69 #: src/call-window.cpp:120
70 msgctxt "@info:status"
71 msgid "Talking..."
72 msgstr "Pratar..."
73
74 #: src/call-window.cpp:136
75 msgctxt "@info:status"
76 msgid "Remote contact ended the call."
77 msgstr "Samtalspartnern avslutade samtalet."
78
79 #: src/call-window.cpp:143
80 msgctxt "@info:status"
81 msgid "Remote contact rejected the call."
82 msgstr "Samtalspartnern avslog samtalet."
83
84 #: src/call-window.cpp:148
85 msgctxt "@info:status"
86 msgid "Remote contact didn't answer."
87 msgstr "Samtalspartnern svarade inte."
88
89 #: src/call-window.cpp:152
90 msgctxt "@info:status"
91 msgid "Invalid number or contact."
92 msgstr "Felaktigt nummer eller kontakt."
93
94 #: src/call-window.cpp:156
95 msgctxt "@info:status"
96 msgid "You don't have enough balance to make this call."
97 msgstr "Du har inte tillräcklig behållning för att ringa samtalet."
98
99 #: src/call-window.cpp:158
100 msgctxt "@info:status"
101 msgid "You don't have permission to make this call."
102 msgstr "Du har inte rättighet att ringa samtalet."
103
104 #: src/call-window.cpp:163
105 msgctxt "@info:status"
106 msgid "Remote contact is currently busy."
107 msgstr "Samtalspartnern är för närvarande upptagen."
108
109 #: src/call-window.cpp:167
110 msgctxt "@info:status"
111 msgid "Internal component error."
112 msgstr "Internt komponentfel."
113
114 #: src/call-window.cpp:170
115 msgctxt "@info:status"
116 msgid "Remote service error."
117 msgstr "Fjärrtjänstfel."
118
119 #: src/call-window.cpp:173
120 msgctxt "@info:status"
121 msgid "Network error."
122 msgstr "Nätverksfel."
123
124 #: src/call-window.cpp:177
125 msgctxt "@info:status"
126 msgid "Failed to negotiate codecs."
127 msgstr "Misslyckades förhandla kodning."
128
129 #: src/call-window.cpp:179
130 msgctxt "@info:status"
131 msgid "Unsupported media type."
132 msgstr "Mediatypen stöds inte."
133
134 #: src/call-window.cpp:183
135 msgctxt "@info:status"
136 msgid "Connectivity error."
137 msgstr "Anslutningsfel."
138
139 #: src/call-window.cpp:187
140 msgctxt "@info:status"
141 msgid "Unknown error."
142 msgstr "Okänt fel."
143
144 #: src/call-window.cpp:192
145 msgctxt "@info:status"
146 msgid "Disconnected."
147 msgstr "Nerkopplad."
148
149 #: src/call-window.cpp:196
150 #, kde-format
151 msgctxt "@info:status the call was disconnected because..."
152 msgid "Disconnected: %1"
153 msgstr "Nerkopplad: %1"
154
155 #: src/call-window.cpp:339
156 msgctxt "@action"
157 msgid "Show my video"
158 msgstr "Visa min video"
159
160 #: src/call-window.cpp:344
161 msgctxt "@action"
162 msgid "Show dialpad"
163 msgstr "Visa knappsats"
164
165 #: src/call-window.cpp:351
166 msgctxt "@action"
167 msgid "Send video"
168 msgstr "Skicka video"
169
170 #: src/call-window.cpp:356 src/call-window.cpp:357
171 msgctxt "@action"
172 msgid "Mute"
173 msgstr "Tyst"
174
175 #: src/call-window.cpp:363
176 msgctxt "@action"
177 msgid "Hold"
178 msgstr "Håll"
179
180 #: src/call-window.cpp:368
181 msgctxt "@action"
182 msgid "Hangup"
183 msgstr "Lägg på"
184
185 #: src/main.cpp:36
186 msgid "KDE Telepathy Call Ui"
187 msgstr "KDE Telepathy samtalsgränssnitt"
188
189 #: src/main.cpp:37
190 msgid "VoIP client for KDE"
191 msgstr "IP-telefonprogram för KDE"
192
193 #: src/main.cpp:38
194 msgid "(C) 2009, George Kiagiadakis"
195 msgstr "© 2009, George Kiagiadakis"
196
197 #: src/main.cpp:40
198 msgctxt "@info:credit"
199 msgid "George Kiagiadakis"
200 msgstr "George Kiagiadakis"
201
202 #: rc.cpp:1
203 msgctxt "NAME OF TRANSLATORS"
204 msgid "Your names"
205 msgstr "Stefan Asserhäll"
206
207 #: rc.cpp:2
208 msgctxt "EMAIL OF TRANSLATORS"
209 msgid "Your emails"
210 msgstr "stefan.asserhall@comhem.se"
211
212 #. i18n: file: src/callwindowui.rc:11
213 #. i18n: ectx: Menu (call)
214 #: rc.cpp:5
215 msgid "Call"
216 msgstr "Samtal"
217
218 #. i18n: file: src/callwindowui.rc:20
219 #. i18n: ectx: Menu (media)
220 #: rc.cpp:8
221 msgid "Media"
222 msgstr "Medier"
223
224 #. i18n: file: src/callwindowui.rc:27
225 #. i18n: ectx: ToolBar (mainToolBar)
226 #: rc.cpp:11
227 msgid "Main Toolbar"
228 msgstr "Huvudverktygsrad"
229
230 #. i18n: file: src/dtmf-widget.ui:17
231 #. i18n: ectx: property (text), widget (QPushButton, button1)
232 #: rc.cpp:14
233 msgid "1"
234 msgstr "1"
235
236 #. i18n: file: src/dtmf-widget.ui:24
237 #. i18n: ectx: property (text), widget (QPushButton, button2)
238 #: rc.cpp:17
239 msgid "2"
240 msgstr "2"
241
242 #. i18n: file: src/dtmf-widget.ui:31
243 #. i18n: ectx: property (text), widget (QPushButton, button3)
244 #: rc.cpp:20
245 msgid "3"
246 msgstr "3"
247
248 #. i18n: file: src/dtmf-widget.ui:38
249 #. i18n: ectx: property (text), widget (QPushButton, button4)
250 #: rc.cpp:23
251 msgid "4"
252 msgstr "4"
253
254 #. i18n: file: src/dtmf-widget.ui:45
255 #. i18n: ectx: property (text), widget (QPushButton, button5)
256 #: rc.cpp:26
257 msgid "5"
258 msgstr "5"
259
260 #. i18n: file: src/dtmf-widget.ui:52
261 #. i18n: ectx: property (text), widget (QPushButton, button6)
262 #: rc.cpp:29
263 msgid "6"
264 msgstr "6"
265
266 #. i18n: file: src/dtmf-widget.ui:59
267 #. i18n: ectx: property (text), widget (QPushButton, button7)
268 #: rc.cpp:32
269 msgid "7"
270 msgstr "7"
271
272 #. i18n: file: src/dtmf-widget.ui:66
273 #. i18n: ectx: property (text), widget (QPushButton, button8)
274 #: rc.cpp:35
275 msgid "8"
276 msgstr "8"
277
278 #. i18n: file: src/dtmf-widget.ui:73
279 #. i18n: ectx: property (text), widget (QPushButton, button9)
280 #: rc.cpp:38
281 msgid "9"
282 msgstr "9"
283
284 #. i18n: file: src/dtmf-widget.ui:80
285 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
286 #: rc.cpp:41
287 msgid "*"
288 msgstr "*"
289
290 #. i18n: file: src/dtmf-widget.ui:87
291 #. i18n: ectx: property (text), widget (QPushButton, button0)
292 #: rc.cpp:44
293 msgid "0"
294 msgstr "0"
295
296 #. i18n: file: src/dtmf-widget.ui:94
297 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
298 #: rc.cpp:47
299 msgid "#"
300 msgstr "#"
301
302 #~ msgid "Warning: %1"
303 #~ msgstr "Varning: %1"
304
305 #~ msgid "Error: %1"
306 #~ msgstr "Fel: %1"
307
308 #~ msgid "KCall"
309 #~ msgstr "Kcall"
310
311 #~ msgid "Brightness"
312 #~ msgstr "Ljusstyrka"
313
314 #~ msgid "Contrast"
315 #~ msgstr "Kontrast"
316
317 #~ msgid "Hue"
318 #~ msgstr "Färgton"
319
320 #~ msgid "Saturation"
321 #~ msgstr "Färgmättnad"
322
323 #~ msgid "Dialpad"
324 #~ msgstr "Knappsats"
325
326 #~ msgid ""
327 #~ "Defines whether the window should close automatically after a timeout "
328 #~ "when the call is over."
329 #~ msgstr ""
330 #~ "Definierar om fönstret ska stängas automatiskt när en tidsgräns går ut "
331 #~ "efter samtalet är klart."
332
333 #~ msgid ""
334 #~ "Defines how many seconds the call window should remain visible after the "
335 #~ "call is over. This option depends on \"CloseOnDisconnect\"."
336 #~ msgstr ""
337 #~ "Definierar hur många sekunder samtalsfönstret ska förbli synligt efter "
338 #~ "samtalet är klart. Alternativet beror på \"stäng vid nerkoppling\"."
339
340 #~ msgid "The audio input device could not be initialized"
341 #~ msgstr "Ljudinenheten kunde inte initieras"
342
343 #~ msgid "The video input device could not be initialized"
344 #~ msgstr "Videoinenheten kunde inte initieras"
345
346 #~ msgid ""
347 #~ "Could not create some of the required elements. Please check your "
348 #~ "GStreamer installation."
349 #~ msgstr ""
350 #~ "Vissa nödvändiga element kunde inte skapas. Kontrollera installationen av "
351 #~ "Gstreamer."
352
353 #~ msgid "The audio output device could not be initialized"
354 #~ msgstr "Ljudutenheten kunde inte initieras"
355
356 #~ msgctxt "@action:inmenu"
357 #~ msgid "Show participants"
358 #~ msgstr "Visa deltagare"
359
360 #~ msgctxt "@action:inmenu"
361 #~ msgid "Show log"
362 #~ msgstr "Visa logg"
363
364 #~ msgctxt "@action"
365 #~ msgid "Stop sending video"
366 #~ msgstr "Stoppa skicka video"
367
368 #~ msgctxt "@action:inmenu"
369 #~ msgid "Status"
370 #~ msgstr "Status"
371
372 #~ msgctxt "@action:inmenu"
373 #~ msgid "Available"
374 #~ msgstr "Tillgänglig"
375
376 #~ msgctxt "@action:inmenu"
377 #~ msgid "Away"
378 #~ msgstr "Borta"
379
380 #~ msgctxt "@action:inmenu"
381 #~ msgid "Be right back"
382 #~ msgstr "Snart tillbaka"
383
384 #~ msgctxt "@action:inmenu"
385 #~ msgid "Busy"
386 #~ msgstr "Upptagen"
387
388 #~ msgctxt "@action:inmenu"
389 #~ msgid "Do not disturb"
390 #~ msgstr "Stör inte"
391
392 #~ msgctxt "@action:inmenu"
393 #~ msgid "Extended Away"
394 #~ msgstr "Borta en längre tid"
395
396 #~ msgctxt "@action:inmenu"
397 #~ msgid "Invisible"
398 #~ msgstr "Osynlig"
399
400 #~ msgctxt "@action:inmenu"
401 #~ msgid "Offline"
402 #~ msgstr "Nerkopplad"
403
404 #~ msgctxt "@info:status"
405 #~ msgid "Waiting for account information..."
406 #~ msgstr "Väntar på kontoinformation..."
407
408 #~ msgctxt "protocol - display name (Connecting)"
409 #~ msgid "%1 - %2 (Connecting)"
410 #~ msgstr "%1 - %2 (ansluter)"
411
412 #~ msgctxt "protocol - display name"
413 #~ msgid "%1 - %2"
414 #~ msgstr "%1 - %2"
415
416 #~ msgctxt "@title:window"
417 #~ msgid "KCall"
418 #~ msgstr "Kcall"
419
420 #~ msgctxt "@info:status"
421 #~ msgid "Connected"
422 #~ msgstr "Ansluten"
423
424 #~ msgctxt "@action"
425 #~ msgid "Disconnect"
426 #~ msgstr "Koppla ner"
427
428 #~ msgctxt "@action"
429 #~ msgid "Cancel connection attempt"
430 #~ msgstr "Avbryt anslutningsförsök"
431
432 #~ msgctxt "@action"
433 #~ msgid "Connect"
434 #~ msgstr "Anslut"
435
436 #~ msgid ""
437 #~ "You have requested to close KCall. Note that KCall will not actually "
438 #~ "quit, but it will stay active in the system tray waiting for incoming "
439 #~ "calls."
440 #~ msgstr ""
441 #~ "Du har begärt att avsluta Kcall. Observera att Kcall inte verkligen "
442 #~ "avslutas, utan förblir aktivt i systembrickan och väntar på inkommande "
443 #~ "samtal."
444
445 #~ msgid "Volume"
446 #~ msgstr "Volym"
447
448 #~ msgid "Speakers"
449 #~ msgstr "Högtalare"
450
451 #~ msgid "Microphone"
452 #~ msgstr "Mikrofon"
453
454 #~ msgid "Video controls"
455 #~ msgstr "Videokontroller"
456
457 #~ msgid "Video input"
458 #~ msgstr "Videoinmatning"
459
460 #~ msgid "Call log"
461 #~ msgstr "Samtalslogg"
462
463 #~ msgid "Participants"
464 #~ msgstr "Deltagare"
465
466 #~ msgctxt "@title:tab"
467 #~ msgid "&Contact list"
468 #~ msgstr "&Kontaktlista"
469
470 #~ msgid "Dial directly"
471 #~ msgstr "Ring direkt"
472
473 #~ msgid "Account"
474 #~ msgstr "Konto"
475
476 #~ msgid "Contact handle"
477 #~ msgstr "Kontaktgrepp"
478
479 #~ msgid "Dial (Audio only)"
480 #~ msgstr "Ring (bara ljud)"
481
482 #~ msgid "Dial (Audio/Video)"
483 #~ msgstr "Ring (ljud och video)"
484
485 #~ msgctxt "@info:status"
486 #~ msgid "Hanging up..."
487 #~ msgstr "Lägger på..."
488
489 #~ msgid "Channel closed"
490 #~ msgstr "Kanal stängd"
491
492 #~ msgid "Channel closed with error: %1"
493 #~ msgstr "Kanal stängd med fel: %1"
494
495 #~ msgid "Audio stream created. Stream id: %1."
496 #~ msgstr "Ljudström skapad. Strömidentifierare: %1."
497
498 #~ msgid "Video stream created. Stream id: %1."
499 #~ msgstr "Videoström skapad. Strömidentifierare: %1."
500
501 #~ msgctxt "1 is the stream's id"
502 #~ msgid "Stream %1 direction is: %2."
503 #~ msgstr "Riktning för ström %1 är: %2"
504
505 #~ msgctxt "1 is the stream's id"
506 #~ msgid "Stream %1 removed."
507 #~ msgstr "Ström %1 borttagen."
508
509 #~ msgctxt "1 is the stream's id"
510 #~ msgid "Stream %1 direction changed to: %2."
511 #~ msgstr "Riktning för ström %1 ändrad till: %2"
512
513 #~ msgctxt "1 is the stream's id"
514 #~ msgid "Stream %1 state changed to: %2."
515 #~ msgstr "Tillstånd för ström %1 ändrad till: %2"
516
517 #~ msgid "User %1 joined the conference."
518 #~ msgstr "Användaren %1 gick med i konferensen."
519
520 #~ msgid "Awaiting answer from user %1."
521 #~ msgstr "Väntar på svar från användaren %1."
522
523 #~ msgid "User %1 left the conference."
524 #~ msgstr "Användaren %1 lämnade konferensen."
525
526 #~ msgid "Audio input device"
527 #~ msgstr "Ljudinenhet"
528
529 #~ msgid "Audio output device"
530 #~ msgstr "Ljudutenhet"
531
532 #~ msgid "Video input device"
533 #~ msgstr "Videoinenhet"
534
535 #~ msgid "Video output driver"
536 #~ msgstr "Drivrutin för videoutmatning"
537
538 #~ msgid "Xv video renderer"
539 #~ msgstr "Xv-videoåtergivning"
540
541 #~ msgid "X11 video renderer"
542 #~ msgstr "X11-videoåtergivning"
543
544 #~ msgid "Autodetect"
545 #~ msgstr "Detektera automatiskt"
546
547 #~ msgid "Test input device"
548 #~ msgstr "Prova inenhet"
549
550 #~ msgctxt "autodetected audio or video system"
551 #~ msgid "Autodetected"
552 #~ msgstr "Automatiskt detekterat"
553
554 #~ msgid "ALSA"
555 #~ msgstr "ALSA"
556
557 #~ msgid "OSS"
558 #~ msgstr "OSS"
559
560 #~ msgid "JACK"
561 #~ msgstr "JACK"
562
563 #~ msgid "PULSE"
564 #~ msgstr "PULSE"
565
566 #~ msgid "Video4Linux"
567 #~ msgstr "Video4Linux"
568
569 #~ msgid "Device name"
570 #~ msgstr "Enhetsnamn"
571
572 #~ msgid "Sound system"
573 #~ msgstr "Ljudsystem"
574
575 #~ msgid "Video system"
576 #~ msgstr "Videosystem"
577
578 #~ msgid "Gstreamer element"
579 #~ msgstr "Gstreamer-element"
580
581 #~ msgid "Driver-specific handle"
582 #~ msgstr "Drivrutinspecifik hantering"
583
584 #~ msgctxt "test the device"
585 #~ msgid "Test"
586 #~ msgstr "Prova"
587
588 #~ msgid "Add custom device..."
589 #~ msgstr "Lägg till egen enhet..."
590
591 #~ msgid ""
592 #~ "The gstreamer element for the selected device could not be created. "
593 #~ "Please check your gstreamer installation."
594 #~ msgstr ""
595 #~ "Gstreamer-elementet för vald enhet kunde inte skapas. Kontrollera "
596 #~ "installationen av Gstreamer."
597
598 #~ msgid ""
599 #~ "The selected device could not be initialized. Please select another "
600 #~ "device."
601 #~ msgstr "Den valda enheten kunde inte initieras. Välj en annan enhet."
602
603 #~ msgid ""
604 #~ "The gstreamer element for the audio output device could not be created. "
605 #~ "Please check your gstreamer installation"
606 #~ msgstr ""
607 #~ "Gstreamer-elementet för ljudutenheten kunde inte skapas. Kontrollera "
608 #~ "installationen av Gstreamer."
609
610 #~ msgid "The audio output device could not be initialized."
611 #~ msgstr "Ljudutenheten kunde inte initieras."
612
613 #~ msgid "The video output driver could not be initialized."
614 #~ msgstr "Drivrutinen för videoutmatning kunde inte initieras."
615
616 #~ msgid ""
617 #~ "The selected video output driver could not be initialized. Please select "
618 #~ "another driver."
619 #~ msgstr ""
620 #~ "Den valda drivrutinen för videoutmatning kunde inte initieras. Välj en "
621 #~ "annan enhet."
622
623 #~ msgctxt "stop audio/video test"
624 #~ msgid "Stop test"
625 #~ msgstr "Stoppa prov"
626
627 #~ msgid "Hide details"
628 #~ msgstr "Dölj detaljinformation"
629
630 #~ msgid "Automatically close the call window after a timeout"
631 #~ msgstr "Stäng automatiskt samtalsfönstret efter tidsgräns gått ut"
632
633 #~ msgid "Timeout in seconds:"
634 #~ msgstr "Tidsgräns i sekunder:"
635
636 #~ msgid ""
637 #~ "The gstreamer element for the audio input device could not be created. "
638 #~ "Please check your gstreamer installation"
639 #~ msgstr ""
640 #~ "Gstreamer-elementet för ljudinenheten kunde inte skapas. Kontrollera "
641 #~ "installationen av Gstreamer."
642
643 #~ msgid ""
644 #~ "The gstreamer element for the video input device could not be created. "
645 #~ "Please check your gstreamer installation."
646 #~ msgstr ""
647 #~ "Gstreamer-elementet för videoinenheten kunde inte skapas. Kontrollera "
648 #~ "installationen av Gstreamer."
649
650 #~ msgid "Could not initialize the channel"
651 #~ msgstr "Kunde inte initiera kanalen"
652
653 #~ msgid "Ignore"
654 #~ msgstr "Ignorera"
655
656 #~ msgid "Form"
657 #~ msgstr "Formulär"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( th ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Phuwanat Sakornsakolpat <narachai@gmail.com>, 2010.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2010-12-06 14:47+0700\n"
10 "Last-Translator: Phuwanat Sakornsakolpat <narachai@gmail.com>\n"
11 "Language-Team: Thai <thai-l10n@googlegroups.com>\n"
12 "Language: th\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 1.0\n"
17 "Plural-Forms: nplurals=1; plural=0;\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr ""
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr ""
27
28 #: src/approver.cpp:41
29 #, fuzzy
30 #| msgctxt "@action:inmenu"
31 #| msgid "Voice call"
32 msgid "Incoming call"
33 msgstr "โทรศัพท์"
34
35 #: src/approver.cpp:42
36 #, kde-format
37 msgid "<p>%1 is calling you</p>"
38 msgstr ""
39
40 #: src/approver.cpp:58 src/approver.cpp:80
41 msgctxt "action, answers the incoming call"
42 msgid "Answer"
43 msgstr ""
44
45 #: src/approver.cpp:59 src/approver.cpp:82
46 msgctxt "action, rejects the incoming call"
47 msgid "Reject"
48 msgstr ""
49
50 #: src/call-window.cpp:95
51 #, kde-format
52 msgid "Call with %1"
53 msgstr ""
54
55 #: src/call-window.cpp:109
56 msgctxt "@info:status"
57 msgid "Connecting..."
58 msgstr "กำลังเชื่อมต่อ..."
59
60 #: src/call-window.cpp:113
61 #, fuzzy
62 #| msgctxt "@info:status"
63 #| msgid "Ringing..."
64 msgctxt "@info:status the remote user's phone is ringing"
65 msgid "Ringing..."
66 msgstr "มีสายเข้า..."
67
68 #: src/call-window.cpp:117
69 msgctxt "@info:status"
70 msgid "Remote user accepted the call, waiting for connection..."
71 msgstr ""
72
73 #: src/call-window.cpp:120
74 msgctxt "@info:status"
75 msgid "Talking..."
76 msgstr "กำลังพูด..."
77
78 #: src/call-window.cpp:136
79 msgctxt "@info:status"
80 msgid "Remote contact ended the call."
81 msgstr ""
82
83 #: src/call-window.cpp:143
84 msgctxt "@info:status"
85 msgid "Remote contact rejected the call."
86 msgstr ""
87
88 #: src/call-window.cpp:148
89 msgctxt "@info:status"
90 msgid "Remote contact didn't answer."
91 msgstr ""
92
93 #: src/call-window.cpp:152
94 msgctxt "@info:status"
95 msgid "Invalid number or contact."
96 msgstr ""
97
98 #: src/call-window.cpp:156
99 msgctxt "@info:status"
100 msgid "You don't have enough balance to make this call."
101 msgstr ""
102
103 #: src/call-window.cpp:158
104 msgctxt "@info:status"
105 msgid "You don't have permission to make this call."
106 msgstr ""
107
108 #: src/call-window.cpp:163
109 msgctxt "@info:status"
110 msgid "Remote contact is currently busy."
111 msgstr ""
112
113 #: src/call-window.cpp:167
114 msgctxt "@info:status"
115 msgid "Internal component error."
116 msgstr ""
117
118 #: src/call-window.cpp:170
119 msgctxt "@info:status"
120 msgid "Remote service error."
121 msgstr ""
122
123 #: src/call-window.cpp:173
124 msgctxt "@info:status"
125 msgid "Network error."
126 msgstr ""
127
128 #: src/call-window.cpp:177
129 msgctxt "@info:status"
130 msgid "Failed to negotiate codecs."
131 msgstr ""
132
133 #: src/call-window.cpp:179
134 msgctxt "@info:status"
135 msgid "Unsupported media type."
136 msgstr ""
137
138 #: src/call-window.cpp:183
139 #, fuzzy
140 #| msgctxt "@info:status"
141 #| msgid "Disconnected with error."
142 msgctxt "@info:status"
143 msgid "Connectivity error."
144 msgstr "ยุติการเชื่อมต่อเพราะมีข้อผิดพลาด"
145
146 #: src/call-window.cpp:187
147 #, fuzzy
148 #| msgctxt "Unknown audio or video system"
149 #| msgid "Unknown"
150 msgctxt "@info:status"
151 msgid "Unknown error."
152 msgstr "ไม่ทราบ"
153
154 #: src/call-window.cpp:192
155 msgctxt "@info:status"
156 msgid "Disconnected."
157 msgstr "ถูกตัดการเชื่อมต่อ"
158
159 #: src/call-window.cpp:196
160 #, fuzzy, kde-format
161 #| msgctxt "@info:status"
162 #| msgid "Disconnected"
163 msgctxt "@info:status the call was disconnected because..."
164 msgid "Disconnected: %1"
165 msgstr "ถูกตัดการเชื่อมต่อ"
166
167 #: src/call-window.cpp:339
168 #, fuzzy
169 #| msgctxt "@action"
170 #| msgid "Send video"
171 msgctxt "@action"
172 msgid "Show my video"
173 msgstr "ส่งวิดีโอ"
174
175 #: src/call-window.cpp:344
176 #, fuzzy
177 #| msgid "Show details"
178 msgctxt "@action"
179 msgid "Show dialpad"
180 msgstr "แสดงรายละเอียด"
181
182 #: src/call-window.cpp:351
183 msgctxt "@action"
184 msgid "Send video"
185 msgstr "ส่งวิดีโอ"
186
187 #: src/call-window.cpp:356 src/call-window.cpp:357
188 msgctxt "@action"
189 msgid "Mute"
190 msgstr ""
191
192 #: src/call-window.cpp:363
193 msgctxt "@action"
194 msgid "Hold"
195 msgstr ""
196
197 #: src/call-window.cpp:368
198 msgctxt "@action"
199 msgid "Hangup"
200 msgstr ""
201
202 #: src/main.cpp:36
203 msgid "KDE Telepathy Call Ui"
204 msgstr ""
205
206 #: src/main.cpp:37
207 msgid "VoIP client for KDE"
208 msgstr "ลูกข่าย VoIP สำหรับ KDE"
209
210 #: src/main.cpp:38
211 msgid "(C) 2009, George Kiagiadakis"
212 msgstr "สงวนลิขสิทธิ์ 2552 โดย George Kiagiadakis"
213
214 #: src/main.cpp:40
215 msgctxt "@info:credit"
216 msgid "George Kiagiadakis"
217 msgstr "George Kiagiadakis"
218
219 #: rc.cpp:1
220 msgctxt "NAME OF TRANSLATORS"
221 msgid "Your names"
222 msgstr ""
223
224 #: rc.cpp:2
225 msgctxt "EMAIL OF TRANSLATORS"
226 msgid "Your emails"
227 msgstr ""
228
229 #. i18n: file: src/callwindowui.rc:11
230 #. i18n: ectx: Menu (call)
231 #: rc.cpp:5
232 msgid "Call"
233 msgstr "โทร"
234
235 #. i18n: file: src/callwindowui.rc:20
236 #. i18n: ectx: Menu (media)
237 #: rc.cpp:8
238 msgid "Media"
239 msgstr ""
240
241 #. i18n: file: src/callwindowui.rc:27
242 #. i18n: ectx: ToolBar (mainToolBar)
243 #: rc.cpp:11
244 msgid "Main Toolbar"
245 msgstr "แถบเครื่องมือหลัก"
246
247 #. i18n: file: src/dtmf-widget.ui:17
248 #. i18n: ectx: property (text), widget (QPushButton, button1)
249 #: rc.cpp:14
250 msgid "1"
251 msgstr ""
252
253 #. i18n: file: src/dtmf-widget.ui:24
254 #. i18n: ectx: property (text), widget (QPushButton, button2)
255 #: rc.cpp:17
256 msgid "2"
257 msgstr ""
258
259 #. i18n: file: src/dtmf-widget.ui:31
260 #. i18n: ectx: property (text), widget (QPushButton, button3)
261 #: rc.cpp:20
262 msgid "3"
263 msgstr ""
264
265 #. i18n: file: src/dtmf-widget.ui:38
266 #. i18n: ectx: property (text), widget (QPushButton, button4)
267 #: rc.cpp:23
268 msgid "4"
269 msgstr ""
270
271 #. i18n: file: src/dtmf-widget.ui:45
272 #. i18n: ectx: property (text), widget (QPushButton, button5)
273 #: rc.cpp:26
274 msgid "5"
275 msgstr ""
276
277 #. i18n: file: src/dtmf-widget.ui:52
278 #. i18n: ectx: property (text), widget (QPushButton, button6)
279 #: rc.cpp:29
280 msgid "6"
281 msgstr ""
282
283 #. i18n: file: src/dtmf-widget.ui:59
284 #. i18n: ectx: property (text), widget (QPushButton, button7)
285 #: rc.cpp:32
286 msgid "7"
287 msgstr ""
288
289 #. i18n: file: src/dtmf-widget.ui:66
290 #. i18n: ectx: property (text), widget (QPushButton, button8)
291 #: rc.cpp:35
292 msgid "8"
293 msgstr ""
294
295 #. i18n: file: src/dtmf-widget.ui:73
296 #. i18n: ectx: property (text), widget (QPushButton, button9)
297 #: rc.cpp:38
298 msgid "9"
299 msgstr ""
300
301 #. i18n: file: src/dtmf-widget.ui:80
302 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
303 #: rc.cpp:41
304 msgid "*"
305 msgstr ""
306
307 #. i18n: file: src/dtmf-widget.ui:87
308 #. i18n: ectx: property (text), widget (QPushButton, button0)
309 #: rc.cpp:44
310 msgid "0"
311 msgstr ""
312
313 #. i18n: file: src/dtmf-widget.ui:94
314 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
315 #: rc.cpp:47
316 msgid "#"
317 msgstr ""
318
319 #~ msgid "Warning: %1"
320 #~ msgstr "คำเตือน: %1"
321
322 #~ msgid "Error: %1"
323 #~ msgstr "ข้อผิดพลาด: %1"
324
325 #~ msgid "KCall"
326 #~ msgstr "KCall"
327
328 #~ msgid "Brightness"
329 #~ msgstr "ความสว่าง"
330
331 #~ msgid "Contrast"
332 #~ msgstr "ความเปรียบต่าง"
333
334 #~ msgid "Hue"
335 #~ msgstr "ความเข้มสี"
336
337 #~ msgid "Saturation"
338 #~ msgstr "ความอิ่มสี"
339
340 #~ msgid "Dialpad"
341 #~ msgstr "แป้นหมุน"
342
343 #~ msgid "The audio input device could not be initialized"
344 #~ msgstr "ไม่สามารถเริ่มอุปกรณ์นำเข้าเสียงได้"
345
346 #, fuzzy
347 #~| msgid "The video input device could not be initialized."
348 #~ msgid "The video input device could not be initialized"
349 #~ msgstr "ไม่สามารถเริ่มอุปกรณ์นำเข้าวิดีโอได้"
350
351 #~ msgid "The audio output device could not be initialized"
352 #~ msgstr "ไม่สามารถเริ่มอุปกรณ์ส่งออกเสียงได้"
353
354 #~ msgctxt "@action:inmenu"
355 #~ msgid "Show participants"
356 #~ msgstr "แสดงผู้เข้าร่วม"
357
358 #~ msgctxt "@action:inmenu"
359 #~ msgid "Show log"
360 #~ msgstr "แสดงบันทึก"
361
362 #~ msgctxt "@action"
363 #~ msgid "Stop sending video"
364 #~ msgstr "หยุดการส่งวิดีโอ"
365
366 #~ msgctxt "@action:inmenu"
367 #~ msgid "Status"
368 #~ msgstr "สถานะ"
369
370 #~ msgctxt "@action:inmenu"
371 #~ msgid "Available"
372 #~ msgstr "ว่าง"
373
374 #~ msgctxt "@action:inmenu"
375 #~ msgid "Away"
376 #~ msgstr "ไม่อยู่"
377
378 #~ msgctxt "@action:inmenu"
379 #~ msgid "Be right back"
380 #~ msgstr "เดี๋ยวกลับมา"
381
382 #~ msgctxt "@action:inmenu"
383 #~ msgid "Busy"
384 #~ msgstr "ยังไม่ว่าง"
385
386 #~ msgctxt "@action:inmenu"
387 #~ msgid "Do not disturb"
388 #~ msgstr "ห้ามรบกวน"
389
390 #~ msgctxt "@action:inmenu"
391 #~ msgid "Invisible"
392 #~ msgstr "ไม่ปรากฎตัว"
393
394 #~ msgctxt "@action:inmenu"
395 #~ msgid "Offline"
396 #~ msgstr "ออฟไลน์"
397
398 #~ msgctxt "@info:status"
399 #~ msgid "Waiting for account information..."
400 #~ msgstr "กำลังรอข้อมูลบัญชี..."
401
402 #~ msgctxt "protocol - display name (Connecting)"
403 #~ msgid "%1 - %2 (Connecting)"
404 #~ msgstr "%1 - %2 (กำลังเชื่อมต่อ)"
405
406 #~ msgctxt "protocol - display name"
407 #~ msgid "%1 - %2"
408 #~ msgstr "%1 - %2"
409
410 #~ msgctxt "@title:window"
411 #~ msgid "KCall"
412 #~ msgstr "KCall"
413
414 #~ msgctxt "@info:status"
415 #~ msgid "Connected"
416 #~ msgstr "เชื่อมต่อแล้ว"
417
418 #~ msgctxt "@action"
419 #~ msgid "Disconnect"
420 #~ msgstr "ยุติการเชื่อมต่อ"
421
422 #~ msgctxt "@action"
423 #~ msgid "Cancel connection attempt"
424 #~ msgstr "ยกเลิกการพยายามเชื่อมต่อ"
425
426 #~ msgctxt "@action"
427 #~ msgid "Connect"
428 #~ msgstr "ติดต่อ"
429
430 #~ msgid "Volume"
431 #~ msgstr "ระดับเสียง"
432
433 #~ msgid "Video controls"
434 #~ msgstr "ควบคุมวิดีโอ"
435
436 #~ msgid "Video input"
437 #~ msgstr "รับวิดีโอ"
438
439 #~ msgid "Call log"
440 #~ msgstr "บันทึกการสนทนา"
441
442 #~ msgid "Participants"
443 #~ msgstr "ผู้เข้าร่วม"
444
445 #~ msgctxt "@title:tab"
446 #~ msgid "&Contact list"
447 #~ msgstr "&รายชื่อผู้ติดต่อ"
448
449 #~ msgid "Account"
450 #~ msgstr "บัญชี"
451
452 #~ msgid "Channel closed"
453 #~ msgstr "ช่องถูกปิด"
454
455 #~ msgid "Channel closed with error: %1"
456 #~ msgstr "ช่องถูกปิดด้วยข้อผิดพลาด: %1"
457
458 #~ msgid "User %1 joined the conference."
459 #~ msgstr "ผู้ใช้ %1 เข้าร่วมการสนทนา"
460
461 #~ msgid "Awaiting answer from user %1."
462 #~ msgstr "รอคำตอบจากผู้ใช้ %1"
463
464 #~ msgid "User %1 left the conference."
465 #~ msgstr "ผู้ใช้ %1 ออกจากการสนทนา"
466
467 #~ msgid "Audio input device"
468 #~ msgstr "อุปกรณ์นำเข้าเสียง"
469
470 #~ msgid "Audio output device"
471 #~ msgstr "อุปกรณ์ส่งออกเสียง"
472
473 #~ msgid "Video input device"
474 #~ msgstr "อุปกรณ์นำเข้าวิดีโอ"
475
476 #~ msgid "Video output driver"
477 #~ msgstr "ไดรเวอร์การแสดงผลวิดีโอ"
478
479 #~ msgid "Autodetect"
480 #~ msgstr "ตรวจหาอัตโนมัติ"
481
482 #~ msgid "Test input device"
483 #~ msgstr "ทดสอบอุปกรณ์นำเข้า"
484
485 #~ msgctxt "autodetected audio or video system"
486 #~ msgid "Autodetected"
487 #~ msgstr "ตรวจหาอัตโนมัติ"
488
489 #~ msgid "Device name"
490 #~ msgstr "ชื่ออุปกรณ์"
491
492 #~ msgid "Sound system"
493 #~ msgstr "ระบบเสียง"
494
495 #~ msgid "Video system"
496 #~ msgstr "ระบบวิดีโอ"
497
498 #~ msgctxt "test the device"
499 #~ msgid "Test"
500 #~ msgstr "ทดสอบ"
501
502 #~ msgid "Add custom device..."
503 #~ msgstr "เพิ่มอุปกรณ์เอง..."
504
505 #~ msgid "The audio output device could not be initialized."
506 #~ msgstr "ไม่สามารถเริ่มอุปกรณ์ส่งออกเสียงได้"
507
508 #~ msgid "The video output driver could not be initialized."
509 #~ msgstr "ไม่สามารถเริ่มไดรเวอร์การแสดงผลวิดีโอได้"
510
511 #~ msgid ""
512 #~ "The selected video output driver could not be initialized. Please select "
513 #~ "another driver."
514 #~ msgstr "ไม่สามารถเริ่มไดรเวอร์การแสดงผลวิดีโอที่เลือก กรุณาเลือกอุปกรณ์อื่น"
515
516 #~ msgctxt "stop audio/video test"
517 #~ msgid "Stop test"
518 #~ msgstr "ยุติการทดสอบ"
519
520 #~ msgid "Hide details"
521 #~ msgstr "ซ่อนรายละเอียด"
522
523 #~ msgid "Timeout in seconds:"
524 #~ msgstr "หมดเวลาอีก (วินาที):"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( tr ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Serdar Soytetir <tulliana@gmail.com>, 2009.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: kcall\n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2009-08-30 14:35+0300\n"
10 "Last-Translator: Serdar Soytetir <tulliana@gmail.com>\n"
11 "Language-Team: Turkish <yerellestirme@kde.org.tr>\n"
12 "Language: tr\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Lokalize 0.3\n"
17 "Plural-Forms: nplurals=1; plural=0;\n"
18
19 #: src/approver.cpp:38
20 #, fuzzy
21 #| msgctxt "@action:inmenu"
22 #| msgid "Video call"
23 msgid "Incoming video call"
24 msgstr "Görüntülü arama"
25
26 #: src/approver.cpp:39
27 #, kde-format
28 msgid "<p>%1 is asking you for a video call</p>"
29 msgstr ""
30
31 #: src/approver.cpp:41
32 #, fuzzy
33 #| msgctxt "@action:inmenu"
34 #| msgid "Voice call"
35 msgid "Incoming call"
36 msgstr "Sesli arama"
37
38 #: src/approver.cpp:42
39 #, fuzzy, kde-format
40 #| msgid "%1 is calling you"
41 msgid "<p>%1 is calling you</p>"
42 msgstr "%1 sizi arıyor"
43
44 #: src/approver.cpp:58 src/approver.cpp:80
45 #, fuzzy
46 #| msgid "Answer"
47 msgctxt "action, answers the incoming call"
48 msgid "Answer"
49 msgstr "Yanıtla"
50
51 #: src/approver.cpp:59 src/approver.cpp:82
52 msgctxt "action, rejects the incoming call"
53 msgid "Reject"
54 msgstr ""
55
56 #: src/call-window.cpp:95
57 #, kde-format
58 msgid "Call with %1"
59 msgstr ""
60
61 #: src/call-window.cpp:109
62 msgctxt "@info:status"
63 msgid "Connecting..."
64 msgstr "Bağlanılıyor..."
65
66 #: src/call-window.cpp:113
67 #, fuzzy
68 #| msgctxt "@info:status"
69 #| msgid "Ringing..."
70 msgctxt "@info:status the remote user's phone is ringing"
71 msgid "Ringing..."
72 msgstr "Çalıyor..."
73
74 #: src/call-window.cpp:117
75 msgctxt "@info:status"
76 msgid "Remote user accepted the call, waiting for connection..."
77 msgstr ""
78
79 #: src/call-window.cpp:120
80 msgctxt "@info:status"
81 msgid "Talking..."
82 msgstr "Konuşuyor..."
83
84 #: src/call-window.cpp:136
85 msgctxt "@info:status"
86 msgid "Remote contact ended the call."
87 msgstr ""
88
89 #: src/call-window.cpp:143
90 msgctxt "@info:status"
91 msgid "Remote contact rejected the call."
92 msgstr ""
93
94 #: src/call-window.cpp:148
95 msgctxt "@info:status"
96 msgid "Remote contact didn't answer."
97 msgstr ""
98
99 #: src/call-window.cpp:152
100 msgctxt "@info:status"
101 msgid "Invalid number or contact."
102 msgstr ""
103
104 #: src/call-window.cpp:156
105 msgctxt "@info:status"
106 msgid "You don't have enough balance to make this call."
107 msgstr ""
108
109 #: src/call-window.cpp:158
110 msgctxt "@info:status"
111 msgid "You don't have permission to make this call."
112 msgstr ""
113
114 #: src/call-window.cpp:163
115 msgctxt "@info:status"
116 msgid "Remote contact is currently busy."
117 msgstr ""
118
119 #: src/call-window.cpp:167
120 msgctxt "@info:status"
121 msgid "Internal component error."
122 msgstr ""
123
124 #: src/call-window.cpp:170
125 msgctxt "@info:status"
126 msgid "Remote service error."
127 msgstr ""
128
129 #: src/call-window.cpp:173
130 msgctxt "@info:status"
131 msgid "Network error."
132 msgstr ""
133
134 #: src/call-window.cpp:177
135 msgctxt "@info:status"
136 msgid "Failed to negotiate codecs."
137 msgstr ""
138
139 #: src/call-window.cpp:179
140 msgctxt "@info:status"
141 msgid "Unsupported media type."
142 msgstr ""
143
144 #: src/call-window.cpp:183
145 #, fuzzy
146 #| msgctxt "@info:status"
147 #| msgid "Disconnected with error."
148 msgctxt "@info:status"
149 msgid "Connectivity error."
150 msgstr "Hata nedeni ile bağlantı kesildi."
151
152 #: src/call-window.cpp:187
153 #, fuzzy
154 #| msgctxt "Unknown audio or video system"
155 #| msgid "Unknown"
156 msgctxt "@info:status"
157 msgid "Unknown error."
158 msgstr "Bilinmeyen"
159
160 #: src/call-window.cpp:192
161 msgctxt "@info:status"
162 msgid "Disconnected."
163 msgstr "Bağlantı kesildi."
164
165 #: src/call-window.cpp:196
166 #, fuzzy, kde-format
167 #| msgctxt "@info:status"
168 #| msgid "Disconnected"
169 msgctxt "@info:status the call was disconnected because..."
170 msgid "Disconnected: %1"
171 msgstr "Bağlantı kesildi"
172
173 #: src/call-window.cpp:339
174 #, fuzzy
175 #| msgctxt "@action"
176 #| msgid "Send video"
177 msgctxt "@action"
178 msgid "Show my video"
179 msgstr "Video gönder"
180
181 #: src/call-window.cpp:344
182 #, fuzzy
183 #| msgid "Show details"
184 msgctxt "@action"
185 msgid "Show dialpad"
186 msgstr "Ayrıntıları göster"
187
188 #: src/call-window.cpp:351
189 msgctxt "@action"
190 msgid "Send video"
191 msgstr "Video gönder"
192
193 #: src/call-window.cpp:356 src/call-window.cpp:357
194 msgctxt "@action"
195 msgid "Mute"
196 msgstr ""
197
198 #: src/call-window.cpp:363
199 msgctxt "@action"
200 msgid "Hold"
201 msgstr ""
202
203 #: src/call-window.cpp:368
204 msgctxt "@action"
205 msgid "Hangup"
206 msgstr "Kapat"
207
208 #: src/main.cpp:36
209 msgid "KDE Telepathy Call Ui"
210 msgstr ""
211
212 #: src/main.cpp:37
213 msgid "VoIP client for KDE"
214 msgstr "KDE için VoIP istemcisi"
215
216 #: src/main.cpp:38
217 msgid "(C) 2009, George Kiagiadakis"
218 msgstr "(C) 2009, George Kiagiadakis"
219
220 #: src/main.cpp:40
221 msgctxt "@info:credit"
222 msgid "George Kiagiadakis"
223 msgstr "George Kiagiadakis"
224
225 #: rc.cpp:1
226 msgctxt "NAME OF TRANSLATORS"
227 msgid "Your names"
228 msgstr "Serdar Soytetir"
229
230 #: rc.cpp:2
231 msgctxt "EMAIL OF TRANSLATORS"
232 msgid "Your emails"
233 msgstr "tulliana@gmail.com"
234
235 #. i18n: file: src/callwindowui.rc:11
236 #. i18n: ectx: Menu (call)
237 #: rc.cpp:5
238 msgid "Call"
239 msgstr "Ara"
240
241 #. i18n: file: src/callwindowui.rc:20
242 #. i18n: ectx: Menu (media)
243 #: rc.cpp:8
244 msgid "Media"
245 msgstr ""
246
247 #. i18n: file: src/callwindowui.rc:27
248 #. i18n: ectx: ToolBar (mainToolBar)
249 #: rc.cpp:11
250 msgid "Main Toolbar"
251 msgstr "Ana Araç Çubuğu"
252
253 #. i18n: file: src/dtmf-widget.ui:17
254 #. i18n: ectx: property (text), widget (QPushButton, button1)
255 #: rc.cpp:14
256 msgid "1"
257 msgstr "1"
258
259 #. i18n: file: src/dtmf-widget.ui:24
260 #. i18n: ectx: property (text), widget (QPushButton, button2)
261 #: rc.cpp:17
262 msgid "2"
263 msgstr "2"
264
265 #. i18n: file: src/dtmf-widget.ui:31
266 #. i18n: ectx: property (text), widget (QPushButton, button3)
267 #: rc.cpp:20
268 msgid "3"
269 msgstr "3"
270
271 #. i18n: file: src/dtmf-widget.ui:38
272 #. i18n: ectx: property (text), widget (QPushButton, button4)
273 #: rc.cpp:23
274 msgid "4"
275 msgstr "4"
276
277 #. i18n: file: src/dtmf-widget.ui:45
278 #. i18n: ectx: property (text), widget (QPushButton, button5)
279 #: rc.cpp:26
280 msgid "5"
281 msgstr "5"
282
283 #. i18n: file: src/dtmf-widget.ui:52
284 #. i18n: ectx: property (text), widget (QPushButton, button6)
285 #: rc.cpp:29
286 msgid "6"
287 msgstr "6"
288
289 #. i18n: file: src/dtmf-widget.ui:59
290 #. i18n: ectx: property (text), widget (QPushButton, button7)
291 #: rc.cpp:32
292 msgid "7"
293 msgstr "7"
294
295 #. i18n: file: src/dtmf-widget.ui:66
296 #. i18n: ectx: property (text), widget (QPushButton, button8)
297 #: rc.cpp:35
298 msgid "8"
299 msgstr "8"
300
301 #. i18n: file: src/dtmf-widget.ui:73
302 #. i18n: ectx: property (text), widget (QPushButton, button9)
303 #: rc.cpp:38
304 msgid "9"
305 msgstr "9"
306
307 #. i18n: file: src/dtmf-widget.ui:80
308 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
309 #: rc.cpp:41
310 msgid "*"
311 msgstr "*"
312
313 #. i18n: file: src/dtmf-widget.ui:87
314 #. i18n: ectx: property (text), widget (QPushButton, button0)
315 #: rc.cpp:44
316 msgid "0"
317 msgstr "0"
318
319 #. i18n: file: src/dtmf-widget.ui:94
320 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
321 #: rc.cpp:47
322 msgid "#"
323 msgstr "#"
324
325 #~ msgid "Warning: %1"
326 #~ msgstr "Uyarı: %1"
327
328 #~ msgid "Error: %1"
329 #~ msgstr "Hata: %1"
330
331 #~ msgid "KCall"
332 #~ msgstr "KCall"
333
334 #~ msgid "Brightness"
335 #~ msgstr "Parlaklık"
336
337 #~ msgid "Contrast"
338 #~ msgstr "Karşıtlık"
339
340 #~ msgid "Hue"
341 #~ msgstr "Ton"
342
343 #~ msgid "Saturation"
344 #~ msgstr "Doygunluk"
345
346 #~ msgctxt "@action:inmenu"
347 #~ msgid "Show participants"
348 #~ msgstr "Katılımcıları göster"
349
350 #~ msgctxt "@action:inmenu"
351 #~ msgid "Show log"
352 #~ msgstr "Günlük kaydını göster"
353
354 #~ msgctxt "@action"
355 #~ msgid "Stop sending video"
356 #~ msgstr "Video göndermeyi durdur"
357
358 #~ msgctxt "@action:inmenu"
359 #~ msgid "Status"
360 #~ msgstr "Durum"
361
362 #~ msgctxt "@action:inmenu"
363 #~ msgid "Available"
364 #~ msgstr "Kullanılabilir"
365
366 #~ msgctxt "@action:inmenu"
367 #~ msgid "Away"
368 #~ msgstr "Uzakta"
369
370 #~ msgctxt "@action:inmenu"
371 #~ msgid "Be right back"
372 #~ msgstr "Geri döneceğim"
373
374 #~ msgctxt "@action:inmenu"
375 #~ msgid "Busy"
376 #~ msgstr "Meşgul"
377
378 #, fuzzy
379 #~| msgctxt "@action:inmenu"
380 #~| msgid "Do not distrurb"
381 #~ msgctxt "@action:inmenu"
382 #~ msgid "Do not disturb"
383 #~ msgstr "Rahatsız etmeyin"
384
385 #~ msgctxt "@action:inmenu"
386 #~ msgid "Extended Away"
387 #~ msgstr "Uzatılmış Uzakta"
388
389 #~ msgctxt "@action:inmenu"
390 #~ msgid "Invisible"
391 #~ msgstr "Görünmez"
392
393 #~ msgctxt "@action:inmenu"
394 #~ msgid "Offline"
395 #~ msgstr "Çevrimdışı"
396
397 #~ msgctxt "@info:status"
398 #~ msgid "Waiting for account information..."
399 #~ msgstr "Hesap bilgileri bekleniyor..."
400
401 #~ msgctxt "protocol - display name (Connecting)"
402 #~ msgid "%1 - %2 (Connecting)"
403 #~ msgstr "%1 - %2 (Bağlanılıyor)"
404
405 #~ msgctxt "protocol - display name"
406 #~ msgid "%1 - %2"
407 #~ msgstr "%1 - %2"
408
409 #~ msgctxt "@title:window"
410 #~ msgid "KCall"
411 #~ msgstr "KCall"
412
413 #~ msgctxt "@info:status"
414 #~ msgid "Connected"
415 #~ msgstr "Bağlandı"
416
417 #~ msgctxt "@action"
418 #~ msgid "Disconnect"
419 #~ msgstr "Bağlantıyı kes"
420
421 #~ msgctxt "@action"
422 #~ msgid "Cancel connection attempt"
423 #~ msgstr "Bağlanma denemesini iptal et"
424
425 #~ msgctxt "@action"
426 #~ msgid "Connect"
427 #~ msgstr "Bağlan"
428
429 #~ msgid "Volume"
430 #~ msgstr "Ses Düzeyi"
431
432 #~ msgid "Speakers"
433 #~ msgstr "Hoparlörler"
434
435 #~ msgid "Microphone"
436 #~ msgstr "Mikrofon"
437
438 #~ msgid "Video controls"
439 #~ msgstr "Video denetimleri"
440
441 #~ msgid "Video input"
442 #~ msgstr "Video girişi"
443
444 #~ msgid "Call log"
445 #~ msgstr "Arama günlük kaydı"
446
447 #~ msgid "Participants"
448 #~ msgstr "Katılımcılar"
449
450 #~ msgctxt "@title:tab"
451 #~ msgid "&Contact list"
452 #~ msgstr "&Kişi listesi"
453
454 #~ msgid "Dial directly"
455 #~ msgstr "Doğrudan çevir"
456
457 #~ msgid "Account"
458 #~ msgstr "Hesap"
459
460 #~ msgid "Dial (Audio only)"
461 #~ msgstr "Ara (Sadece ses)"
462
463 #~ msgid "Dial (Audio/Video)"
464 #~ msgstr "Ara (Ses/Görüntü)"
465
466 #~ msgctxt "@info:status"
467 #~ msgid "Hanging up..."
468 #~ msgstr "Kapatılıyor..."
469
470 #~ msgid "Channel closed"
471 #~ msgstr "Kanal kapatıldı"
472
473 #~ msgid "Channel closed with error: %1"
474 #~ msgstr "Kanal bir hata nedeniyle kapatıldı: %1"
475
476 #~ msgid "Audio input device"
477 #~ msgstr "Ses giriş aygıtı"
478
479 #~ msgid "Audio output device"
480 #~ msgstr "Ses çıktı aygıtı"
481
482 #~ msgid "Video input device"
483 #~ msgstr "Video giriş aygıtı"
484
485 #~ msgid "Video output driver"
486 #~ msgstr "Video çıkış aygıtı"
487
488 #~ msgid "Xv video renderer"
489 #~ msgstr "Xv video hazırlayıcı"
490
491 #~ msgid "X11 video renderer"
492 #~ msgstr "X11 video hazırlayıcı"
493
494 #~ msgid "Autodetect"
495 #~ msgstr "Otomatik bul"
496
497 #~ msgid "Test input device"
498 #~ msgstr "Giriş aygıtını dene"
499
500 #~ msgctxt "autodetected audio or video system"
501 #~ msgid "Autodetected"
502 #~ msgstr "Otomatik bulunan"
503
504 #~ msgid "ALSA"
505 #~ msgstr "ALSA"
506
507 #~ msgid "OSS"
508 #~ msgstr "OSS"
509
510 #~ msgid "JACK"
511 #~ msgstr "JACK"
512
513 #~ msgid "PULSE"
514 #~ msgstr "PULSE"
515
516 #~ msgid "Video4Linux"
517 #~ msgstr "Video4Linux"
518
519 #~ msgid "Device name"
520 #~ msgstr "Aygıt adı"
521
522 #~ msgid "Sound system"
523 #~ msgstr "Ses sistemi"
524
525 #~ msgid "Video system"
526 #~ msgstr "Video sistemi"
527
528 #~ msgid "Gstreamer element"
529 #~ msgstr "Gstreamer ögesi"
530
531 #~ msgctxt "test the device"
532 #~ msgid "Test"
533 #~ msgstr "Dene"
534
535 #~ msgid "Add custom device..."
536 #~ msgstr "Özel aygıt ekle..."
537
538 #~ msgctxt "stop audio/video test"
539 #~ msgid "Stop test"
540 #~ msgstr "Denemeyi durdur"
541
542 #~ msgid "Hide details"
543 #~ msgstr "Ayrıntıları gizle"
544
545 #~ msgid "Ignore"
546 #~ msgstr "Yoksay"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( ug ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Uyghur translation for kcall.
1 # Copyright (C) YEAR This_file_is_part_of_KDE
2 # This file is distributed under the same license as the PACKAGE package.
3 # Sahran <sahran.ug@gmail.com>, 2011.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: kcall\n"
8 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
9 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
10 "PO-Revision-Date: 2011-05-09 19:00+0900\n"
11 "Last-Translator: Sahran <sahran@live.com>\n"
12 "Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "Plural-Forms: nplurals=1; plural=0;\n"
18
19 #: src/approver.cpp:38
20 msgid "Incoming video call"
21 msgstr ""
22
23 #: src/approver.cpp:39
24 #, kde-format
25 msgid "<p>%1 is asking you for a video call</p>"
26 msgstr ""
27
28 #: src/approver.cpp:41
29 msgid "Incoming call"
30 msgstr ""
31
32 #: src/approver.cpp:42
33 #, kde-format
34 msgid "<p>%1 is calling you</p>"
35 msgstr ""
36
37 #: src/approver.cpp:58 src/approver.cpp:80
38 msgctxt "action, answers the incoming call"
39 msgid "Answer"
40 msgstr ""
41
42 #: src/approver.cpp:59 src/approver.cpp:82
43 msgctxt "action, rejects the incoming call"
44 msgid "Reject"
45 msgstr ""
46
47 #: src/call-window.cpp:95
48 #, kde-format
49 msgid "Call with %1"
50 msgstr ""
51
52 #: src/call-window.cpp:109
53 msgctxt "@info:status"
54 msgid "Connecting..."
55 msgstr "باغلىنىۋاتىدۇ…"
56
57 #: src/call-window.cpp:113
58 #, fuzzy
59 #| msgctxt "@info:status"
60 #| msgid "Connecting..."
61 msgctxt "@info:status the remote user's phone is ringing"
62 msgid "Ringing..."
63 msgstr "باغلىنىۋاتىدۇ…"
64
65 #: src/call-window.cpp:117
66 msgctxt "@info:status"
67 msgid "Remote user accepted the call, waiting for connection..."
68 msgstr ""
69
70 #: src/call-window.cpp:120
71 msgctxt "@info:status"
72 msgid "Talking..."
73 msgstr ""
74
75 #: src/call-window.cpp:136
76 msgctxt "@info:status"
77 msgid "Remote contact ended the call."
78 msgstr ""
79
80 #: src/call-window.cpp:143
81 msgctxt "@info:status"
82 msgid "Remote contact rejected the call."
83 msgstr ""
84
85 #: src/call-window.cpp:148
86 msgctxt "@info:status"
87 msgid "Remote contact didn't answer."
88 msgstr ""
89
90 #: src/call-window.cpp:152
91 msgctxt "@info:status"
92 msgid "Invalid number or contact."
93 msgstr ""
94
95 #: src/call-window.cpp:156
96 msgctxt "@info:status"
97 msgid "You don't have enough balance to make this call."
98 msgstr ""
99
100 #: src/call-window.cpp:158
101 msgctxt "@info:status"
102 msgid "You don't have permission to make this call."
103 msgstr ""
104
105 #: src/call-window.cpp:163
106 msgctxt "@info:status"
107 msgid "Remote contact is currently busy."
108 msgstr ""
109
110 #: src/call-window.cpp:167
111 msgctxt "@info:status"
112 msgid "Internal component error."
113 msgstr ""
114
115 #: src/call-window.cpp:170
116 msgctxt "@info:status"
117 msgid "Remote service error."
118 msgstr ""
119
120 #: src/call-window.cpp:173
121 msgctxt "@info:status"
122 msgid "Network error."
123 msgstr ""
124
125 #: src/call-window.cpp:177
126 msgctxt "@info:status"
127 msgid "Failed to negotiate codecs."
128 msgstr ""
129
130 #: src/call-window.cpp:179
131 msgctxt "@info:status"
132 msgid "Unsupported media type."
133 msgstr ""
134
135 #: src/call-window.cpp:183
136 msgctxt "@info:status"
137 msgid "Connectivity error."
138 msgstr ""
139
140 #: src/call-window.cpp:187
141 msgctxt "@info:status"
142 msgid "Unknown error."
143 msgstr ""
144
145 #: src/call-window.cpp:192
146 msgctxt "@info:status"
147 msgid "Disconnected."
148 msgstr "ئۈزۈلدى."
149
150 #: src/call-window.cpp:196
151 #, fuzzy, kde-format
152 #| msgctxt "@info:status"
153 #| msgid "Disconnected"
154 msgctxt "@info:status the call was disconnected because..."
155 msgid "Disconnected: %1"
156 msgstr "ئۈزۈلدى"
157
158 #: src/call-window.cpp:339
159 msgctxt "@action"
160 msgid "Show my video"
161 msgstr ""
162
163 #: src/call-window.cpp:344
164 msgctxt "@action"
165 msgid "Show dialpad"
166 msgstr "نومۇر تاختا كۆرسەت"
167
168 #: src/call-window.cpp:351
169 msgctxt "@action"
170 msgid "Send video"
171 msgstr ""
172
173 #: src/call-window.cpp:356 src/call-window.cpp:357
174 msgctxt "@action"
175 msgid "Mute"
176 msgstr "ئۈنسىز"
177
178 #: src/call-window.cpp:363
179 msgctxt "@action"
180 msgid "Hold"
181 msgstr "كۈتۈش"
182
183 #: src/call-window.cpp:368
184 msgctxt "@action"
185 msgid "Hangup"
186 msgstr "ئېسىپ قوي"
187
188 #: src/main.cpp:36
189 msgid "KDE Telepathy Call Ui"
190 msgstr ""
191
192 #: src/main.cpp:37
193 msgid "VoIP client for KDE"
194 msgstr ""
195
196 #: src/main.cpp:38
197 msgid "(C) 2009, George Kiagiadakis"
198 msgstr ""
199
200 #: src/main.cpp:40
201 msgctxt "@info:credit"
202 msgid "George Kiagiadakis"
203 msgstr "George Kiagiadakis"
204
205 #: rc.cpp:1
206 msgctxt "NAME OF TRANSLATORS"
207 msgid "Your names"
208 msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى"
209
210 #: rc.cpp:2
211 msgctxt "EMAIL OF TRANSLATORS"
212 msgid "Your emails"
213 msgstr "sahran.ug@gmail.com, gheyret@gmail.com"
214
215 #. i18n: file: src/callwindowui.rc:11
216 #. i18n: ectx: Menu (call)
217 #: rc.cpp:5
218 msgid "Call"
219 msgstr "چاقىر"
220
221 #. i18n: file: src/callwindowui.rc:20
222 #. i18n: ectx: Menu (media)
223 #: rc.cpp:8
224 msgid "Media"
225 msgstr "ۋاسىتە"
226
227 #. i18n: file: src/callwindowui.rc:27
228 #. i18n: ectx: ToolBar (mainToolBar)
229 #: rc.cpp:11
230 msgid "Main Toolbar"
231 msgstr "ئاساسىي قورال بالداق"
232
233 #. i18n: file: src/dtmf-widget.ui:17
234 #. i18n: ectx: property (text), widget (QPushButton, button1)
235 #: rc.cpp:14
236 msgid "1"
237 msgstr "1"
238
239 #. i18n: file: src/dtmf-widget.ui:24
240 #. i18n: ectx: property (text), widget (QPushButton, button2)
241 #: rc.cpp:17
242 msgid "2"
243 msgstr "2"
244
245 #. i18n: file: src/dtmf-widget.ui:31
246 #. i18n: ectx: property (text), widget (QPushButton, button3)
247 #: rc.cpp:20
248 msgid "3"
249 msgstr "3"
250
251 #. i18n: file: src/dtmf-widget.ui:38
252 #. i18n: ectx: property (text), widget (QPushButton, button4)
253 #: rc.cpp:23
254 msgid "4"
255 msgstr "4"
256
257 #. i18n: file: src/dtmf-widget.ui:45
258 #. i18n: ectx: property (text), widget (QPushButton, button5)
259 #: rc.cpp:26
260 msgid "5"
261 msgstr "5"
262
263 #. i18n: file: src/dtmf-widget.ui:52
264 #. i18n: ectx: property (text), widget (QPushButton, button6)
265 #: rc.cpp:29
266 msgid "6"
267 msgstr "6"
268
269 #. i18n: file: src/dtmf-widget.ui:59
270 #. i18n: ectx: property (text), widget (QPushButton, button7)
271 #: rc.cpp:32
272 msgid "7"
273 msgstr "7"
274
275 #. i18n: file: src/dtmf-widget.ui:66
276 #. i18n: ectx: property (text), widget (QPushButton, button8)
277 #: rc.cpp:35
278 msgid "8"
279 msgstr "8"
280
281 #. i18n: file: src/dtmf-widget.ui:73
282 #. i18n: ectx: property (text), widget (QPushButton, button9)
283 #: rc.cpp:38
284 msgid "9"
285 msgstr "9"
286
287 #. i18n: file: src/dtmf-widget.ui:80
288 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
289 #: rc.cpp:41
290 msgid "*"
291 msgstr "*"
292
293 #. i18n: file: src/dtmf-widget.ui:87
294 #. i18n: ectx: property (text), widget (QPushButton, button0)
295 #: rc.cpp:44
296 msgid "0"
297 msgstr "0"
298
299 #. i18n: file: src/dtmf-widget.ui:94
300 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
301 #: rc.cpp:47
302 msgid "#"
303 msgstr "#"
304
305 #~ msgid "Warning: %1"
306 #~ msgstr "ئاگاھلاندۇرۇش: %1"
307
308 #~ msgid "Error: %1"
309 #~ msgstr "خاتالىق: %1"
310
311 #~ msgid "Brightness"
312 #~ msgstr "يورۇقلۇق"
313
314 #~ msgid "Contrast"
315 #~ msgstr "ئاق-قارىلىقى"
316
317 #~ msgid "Hue"
318 #~ msgstr "رەڭگى"
319
320 #~ msgid "Saturation"
321 #~ msgstr "تويۇنۇش"
322
323 #~ msgid "Dialpad"
324 #~ msgstr "نومۇر تاختىسى"
325
326 #~ msgctxt "@action:inmenu"
327 #~ msgid "Status"
328 #~ msgstr "ھالەت"
329
330 #~ msgctxt "@action:inmenu"
331 #~ msgid "Available"
332 #~ msgstr "ئىشلىتىلىشچان"
333
334 #~ msgctxt "@action:inmenu"
335 #~ msgid "Away"
336 #~ msgstr "يوق"
337
338 #~ msgctxt "@action:inmenu"
339 #~ msgid "Busy"
340 #~ msgstr "ئالدىراش"
341
342 #~ msgctxt "@action:inmenu"
343 #~ msgid "Invisible"
344 #~ msgstr "يوشۇرۇن"
345
346 #~ msgctxt "@action:inmenu"
347 #~ msgid "Offline"
348 #~ msgstr "توردا يوق"
349
350 #~ msgctxt "protocol - display name"
351 #~ msgid "%1 - %2"
352 #~ msgstr "%1 - %2"
353
354 #~ msgctxt "@info:status"
355 #~ msgid "Connected"
356 #~ msgstr "باغلاندى"
357
358 #~ msgctxt "@action"
359 #~ msgid "Disconnect"
360 #~ msgstr "ئۈز"
361
362 #~ msgctxt "@action"
363 #~ msgid "Connect"
364 #~ msgstr "باغلان"
365
366 #~ msgid "Volume"
367 #~ msgstr "دىسكا"
368
369 #~ msgid "Speakers"
370 #~ msgstr "ئاۋاز ياڭراتقۇ"
371
372 #~ msgid "Microphone"
373 #~ msgstr "مىكروفون"
374
375 #~ msgid "Video input"
376 #~ msgstr "سىن كىرگۈزۈش"
377
378 #~ msgid "Account"
379 #~ msgstr "ھېسابات"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( uk ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 # Copyright (C) YEAR This_file_is_part_of_KDE
1 # This file is distributed under the same license as the PACKAGE package.
2 #
3 # Yuri Chornoivan <yurchor@ukr.net>, 2012.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: \n"
7 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
9 "PO-Revision-Date: 2012-05-01 10:35+0300\n"
10 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
11 "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
12 "Language: uk\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
17 "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18 "X-Generator: Lokalize 1.5\n"
19
20 #: src/approver.cpp:38
21 msgid "Incoming video call"
22 msgstr "Вхідний відеодзвінок"
23
24 #: src/approver.cpp:39
25 #, kde-format
26 msgid "<p>%1 is asking you for a video call</p>"
27 msgstr "<p>%1 запрошує вас до відеоспілкування</p>"
28
29 #: src/approver.cpp:41
30 msgid "Incoming call"
31 msgstr "Вхідний дзвінок"
32
33 #: src/approver.cpp:42
34 #, kde-format
35 msgid "<p>%1 is calling you</p>"
36 msgstr "<p>Вам дзвонить %1</p>"
37
38 #: src/approver.cpp:58 src/approver.cpp:80
39 msgctxt "action, answers the incoming call"
40 msgid "Answer"
41 msgstr "Відповісти"
42
43 #: src/approver.cpp:59 src/approver.cpp:82
44 msgctxt "action, rejects the incoming call"
45 msgid "Reject"
46 msgstr "Відмовити"
47
48 #: src/call-window.cpp:95
49 #, kde-format
50 msgid "Call with %1"
51 msgstr "Спілкування з %1"
52
53 #: src/call-window.cpp:109
54 msgctxt "@info:status"
55 msgid "Connecting..."
56 msgstr "З'єднання..."
57
58 #: src/call-window.cpp:113
59 msgctxt "@info:status the remote user's phone is ringing"
60 msgid "Ringing..."
61 msgstr "Дзвінок…"
62
63 #: src/call-window.cpp:117
64 msgctxt "@info:status"
65 msgid "Remote user accepted the call, waiting for connection..."
66 msgstr ""
67 "Вхідний дзвінок підтверджено віддаленим користувачем, очікування на "
68 "з’єднання…"
69
70 #: src/call-window.cpp:120
71 msgctxt "@info:status"
72 msgid "Talking..."
73 msgstr "Розмова..."
74
75 #: src/call-window.cpp:136
76 msgctxt "@info:status"
77 msgid "Remote contact ended the call."
78 msgstr "Дзвінок завершено віддаленим контактом."
79
80 #: src/call-window.cpp:143
81 msgctxt "@info:status"
82 msgid "Remote contact rejected the call."
83 msgstr "Віддаленим контактом відмовлено у вхідному дзвінку."
84
85 #: src/call-window.cpp:148
86 msgctxt "@info:status"
87 msgid "Remote contact didn't answer."
88 msgstr "Не отримано відповіді від віддаленого контакту."
89
90 #: src/call-window.cpp:152
91 msgctxt "@info:status"
92 msgid "Invalid number or contact."
93 msgstr "Некоректний номер або контакт."
94
95 #: src/call-window.cpp:156
96 msgctxt "@info:status"
97 msgid "You don't have enough balance to make this call."
98 msgstr "На вашому балансі недостатньо коштів для здійснення цього дзвінка."
99
100 #: src/call-window.cpp:158
101 msgctxt "@info:status"
102 msgid "You don't have permission to make this call."
103 msgstr "У вас немає прав на здійснення цього дзвінка."
104
105 #: src/call-window.cpp:163
106 msgctxt "@info:status"
107 msgid "Remote contact is currently busy."
108 msgstr "Віддалений контакт зараз не може відповісти."
109
110 #: src/call-window.cpp:167
111 msgctxt "@info:status"
112 msgid "Internal component error."
113 msgstr "Помилка внутрішнього компонента."
114
115 #: src/call-window.cpp:170
116 msgctxt "@info:status"
117 msgid "Remote service error."
118 msgstr "Помилка віддаленої служби."
119
120 #: src/call-window.cpp:173
121 msgctxt "@info:status"
122 msgid "Network error."
123 msgstr "Помилка мережі."
124
125 #: src/call-window.cpp:177
126 msgctxt "@info:status"
127 msgid "Failed to negotiate codecs."
128 msgstr "Не вдалося узгодити кодеки."
129
130 #: src/call-window.cpp:179
131 msgctxt "@info:status"
132 msgid "Unsupported media type."
133 msgstr "Непідтримуваний тип носія даних."
134
135 #: src/call-window.cpp:183
136 msgctxt "@info:status"
137 msgid "Connectivity error."
138 msgstr "Помилка під час спроби з’єднання."
139
140 #: src/call-window.cpp:187
141 msgctxt "@info:status"
142 msgid "Unknown error."
143 msgstr "Невідома помилка."
144
145 #: src/call-window.cpp:192
146 msgctxt "@info:status"
147 msgid "Disconnected."
148 msgstr "Роз'єднано."
149
150 #: src/call-window.cpp:196
151 #, kde-format
152 msgctxt "@info:status the call was disconnected because..."
153 msgid "Disconnected: %1"
154 msgstr "Від’єднано: %1"
155
156 #: src/call-window.cpp:339
157 msgctxt "@action"
158 msgid "Show my video"
159 msgstr "Показати моє відео"
160
161 #: src/call-window.cpp:344
162 msgctxt "@action"
163 msgid "Show dialpad"
164 msgstr "Показати панель набору номера"
165
166 #: src/call-window.cpp:351
167 msgctxt "@action"
168 msgid "Send video"
169 msgstr "Надіслати відео"
170
171 #: src/call-window.cpp:356 src/call-window.cpp:357
172 msgctxt "@action"
173 msgid "Mute"
174 msgstr "Вимкнути звук"
175
176 #: src/call-window.cpp:363
177 msgctxt "@action"
178 msgid "Hold"
179 msgstr "Утримувати зв’язок"
180
181 #: src/call-window.cpp:368
182 msgctxt "@action"
183 msgid "Hangup"
184 msgstr "Повісити слухавку"
185
186 #: src/main.cpp:36
187 msgid "KDE Telepathy Call Ui"
188 msgstr "Інтерфейс здійснення дзвінків KDE Telepathy"
189
190 #: src/main.cpp:37
191 msgid "VoIP client for KDE"
192 msgstr "Клієнт VoIP для KDE"
193
194 #: src/main.cpp:38
195 msgid "(C) 2009, George Kiagiadakis"
196 msgstr "© George Kiagiadakis, 2009"
197
198 #: src/main.cpp:40
199 msgctxt "@info:credit"
200 msgid "George Kiagiadakis"
201 msgstr "George Kiagiadakis"
202
203 #: rc.cpp:1
204 msgctxt "NAME OF TRANSLATORS"
205 msgid "Your names"
206 msgstr "Юрій Чорноіван"
207
208 #: rc.cpp:2
209 msgctxt "EMAIL OF TRANSLATORS"
210 msgid "Your emails"
211 msgstr "yurchor@ukr.net"
212
213 #. i18n: file: src/callwindowui.rc:11
214 #. i18n: ectx: Menu (call)
215 #: rc.cpp:5
216 msgid "Call"
217 msgstr "Дзвінок"
218
219 #. i18n: file: src/callwindowui.rc:20
220 #. i18n: ectx: Menu (media)
221 #: rc.cpp:8
222 msgid "Media"
223 msgstr "Мультимедіа"
224
225 #. i18n: file: src/callwindowui.rc:27
226 #. i18n: ectx: ToolBar (mainToolBar)
227 #: rc.cpp:11
228 msgid "Main Toolbar"
229 msgstr "Головна панель"
230
231 #. i18n: file: src/dtmf-widget.ui:17
232 #. i18n: ectx: property (text), widget (QPushButton, button1)
233 #: rc.cpp:14
234 msgid "1"
235 msgstr "1"
236
237 #. i18n: file: src/dtmf-widget.ui:24
238 #. i18n: ectx: property (text), widget (QPushButton, button2)
239 #: rc.cpp:17
240 msgid "2"
241 msgstr "2"
242
243 #. i18n: file: src/dtmf-widget.ui:31
244 #. i18n: ectx: property (text), widget (QPushButton, button3)
245 #: rc.cpp:20
246 msgid "3"
247 msgstr "3"
248
249 #. i18n: file: src/dtmf-widget.ui:38
250 #. i18n: ectx: property (text), widget (QPushButton, button4)
251 #: rc.cpp:23
252 msgid "4"
253 msgstr "4"
254
255 #. i18n: file: src/dtmf-widget.ui:45
256 #. i18n: ectx: property (text), widget (QPushButton, button5)
257 #: rc.cpp:26
258 msgid "5"
259 msgstr "5"
260
261 #. i18n: file: src/dtmf-widget.ui:52
262 #. i18n: ectx: property (text), widget (QPushButton, button6)
263 #: rc.cpp:29
264 msgid "6"
265 msgstr "6"
266
267 #. i18n: file: src/dtmf-widget.ui:59
268 #. i18n: ectx: property (text), widget (QPushButton, button7)
269 #: rc.cpp:32
270 msgid "7"
271 msgstr "7"
272
273 #. i18n: file: src/dtmf-widget.ui:66
274 #. i18n: ectx: property (text), widget (QPushButton, button8)
275 #: rc.cpp:35
276 msgid "8"
277 msgstr "8"
278
279 #. i18n: file: src/dtmf-widget.ui:73
280 #. i18n: ectx: property (text), widget (QPushButton, button9)
281 #: rc.cpp:38
282 msgid "9"
283 msgstr "9"
284
285 #. i18n: file: src/dtmf-widget.ui:80
286 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
287 #: rc.cpp:41
288 msgid "*"
289 msgstr "*"
290
291 #. i18n: file: src/dtmf-widget.ui:87
292 #. i18n: ectx: property (text), widget (QPushButton, button0)
293 #: rc.cpp:44
294 msgid "0"
295 msgstr "0"
296
297 #. i18n: file: src/dtmf-widget.ui:94
298 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
299 #: rc.cpp:47
300 msgid "#"
301 msgstr "#"
0 file(GLOB _po_files *.po)
1 GETTEXT_PROCESS_PO_FILES( zh_TW ALL INSTALL_DESTINATION ${LOCALE_INSTALL_DIR} ${_po_files} )
0 #
1 # Franklin Weng <franklin@goodhorse.idv.tw>, 2012.
2 msgid ""
3 msgstr ""
4 "Project-Id-Version: kcall\n"
5 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
6 "POT-Creation-Date: 2012-05-27 04:45+0200\n"
7 "PO-Revision-Date: 2012-05-02 12:43+0800\n"
8 "Last-Translator: Franklin Weng <franklin@goodhorse.idv.tw>\n"
9 "Language-Team: Chinese Traditional <kde-i18n-doc@kde.org>\n"
10 "Language: \n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "Plural-Forms: nplurals=1; plural=0;\n"
15 "X-Generator: Lokalize 1.1\n"
16
17 #: src/approver.cpp:38
18 msgid "Incoming video call"
19 msgstr "視訊呼叫"
20
21 #: src/approver.cpp:39
22 #, kde-format
23 msgid "<p>%1 is asking you for a video call</p>"
24 msgstr "<p>%1 正在請求跟您視訊</p>"
25
26 #: src/approver.cpp:41
27 msgid "Incoming call"
28 msgstr "來電呼叫"
29
30 #: src/approver.cpp:42
31 #, kde-format
32 msgid "<p>%1 is calling you</p>"
33 msgstr "<p>%1 正在呼叫您</p>"
34
35 #: src/approver.cpp:58 src/approver.cpp:80
36 msgctxt "action, answers the incoming call"
37 msgid "Answer"
38 msgstr "答案"
39
40 #: src/approver.cpp:59 src/approver.cpp:82
41 msgctxt "action, rejects the incoming call"
42 msgid "Reject"
43 msgstr "拒絕"
44
45 #: src/call-window.cpp:95
46 #, kde-format
47 msgid "Call with %1"
48 msgstr "呼叫 %1"
49
50 #: src/call-window.cpp:109
51 msgctxt "@info:status"
52 msgid "Connecting..."
53 msgstr "連接中..."
54
55 #: src/call-window.cpp:113
56 msgctxt "@info:status the remote user's phone is ringing"
57 msgid "Ringing..."
58 msgstr "響鈴中..."
59
60 #: src/call-window.cpp:117
61 msgctxt "@info:status"
62 msgid "Remote user accepted the call, waiting for connection..."
63 msgstr "遠端使用者接受了呼叫。等待連線中..."
64
65 #: src/call-window.cpp:120
66 msgctxt "@info:status"
67 msgid "Talking..."
68 msgstr "談話中..."
69
70 #: src/call-window.cpp:136
71 msgctxt "@info:status"
72 msgid "Remote contact ended the call."
73 msgstr "遠端聯絡人結束了通話。"
74
75 #: src/call-window.cpp:143
76 msgctxt "@info:status"
77 msgid "Remote contact rejected the call."
78 msgstr "遠端聯絡人拒絕了通話。"
79
80 #: src/call-window.cpp:148
81 msgctxt "@info:status"
82 msgid "Remote contact didn't answer."
83 msgstr "遠端聯絡人未回覆。"
84
85 #: src/call-window.cpp:152
86 msgctxt "@info:status"
87 msgid "Invalid number or contact."
88 msgstr "不合法的編號或聯絡人。"
89
90 #: src/call-window.cpp:156
91 msgctxt "@info:status"
92 msgid "You don't have enough balance to make this call."
93 msgstr "您沒有足夠的餘額進行呼叫。"
94
95 #: src/call-window.cpp:158
96 msgctxt "@info:status"
97 msgid "You don't have permission to make this call."
98 msgstr "您沒有足夠的權限進行呼叫。"
99
100 #: src/call-window.cpp:163
101 msgctxt "@info:status"
102 msgid "Remote contact is currently busy."
103 msgstr "遠端聯絡人忙線中。"
104
105 #: src/call-window.cpp:167
106 msgctxt "@info:status"
107 msgid "Internal component error."
108 msgstr "內部組件錯誤。"
109
110 #: src/call-window.cpp:170
111 msgctxt "@info:status"
112 msgid "Remote service error."
113 msgstr "遠端服務錯誤。"
114
115 #: src/call-window.cpp:173
116 msgctxt "@info:status"
117 msgid "Network error."
118 msgstr "網路錯誤。"
119
120 #: src/call-window.cpp:177
121 msgctxt "@info:status"
122 msgid "Failed to negotiate codecs."
123 msgstr "與編解碼器協商失敗。"
124
125 #: src/call-window.cpp:179
126 msgctxt "@info:status"
127 msgid "Unsupported media type."
128 msgstr "不支援的媒體類型。"
129
130 #: src/call-window.cpp:183
131 msgctxt "@info:status"
132 msgid "Connectivity error."
133 msgstr "連線錯誤。"
134
135 #: src/call-window.cpp:187
136 msgctxt "@info:status"
137 msgid "Unknown error."
138 msgstr "未知的錯誤。"
139
140 #: src/call-window.cpp:192
141 msgctxt "@info:status"
142 msgid "Disconnected."
143 msgstr "已斷線。"
144
145 #: src/call-window.cpp:196
146 #, kde-format
147 msgctxt "@info:status the call was disconnected because..."
148 msgid "Disconnected: %1"
149 msgstr "已斷線:%1"
150
151 #: src/call-window.cpp:339
152 msgctxt "@action"
153 msgid "Show my video"
154 msgstr "顯示我自己的影像"
155
156 #: src/call-window.cpp:344
157 msgctxt "@action"
158 msgid "Show dialpad"
159 msgstr "顯示撥號盤"
160
161 #: src/call-window.cpp:351
162 msgctxt "@action"
163 msgid "Send video"
164 msgstr "傳送影像"
165
166 #: src/call-window.cpp:356 src/call-window.cpp:357
167 msgctxt "@action"
168 msgid "Mute"
169 msgstr "靜音"
170
171 #: src/call-window.cpp:363
172 msgctxt "@action"
173 msgid "Hold"
174 msgstr "保留"
175
176 #: src/call-window.cpp:368
177 msgctxt "@action"
178 msgid "Hangup"
179 msgstr "掛斷"
180
181 #: src/main.cpp:36
182 msgid "KDE Telepathy Call Ui"
183 msgstr "KDE Telepathy 呼叫介面"
184
185 #: src/main.cpp:37
186 msgid "VoIP client for KDE"
187 msgstr "KDE 的 VoIP 客戶端程式"
188
189 #: src/main.cpp:38
190 msgid "(C) 2009, George Kiagiadakis"
191 msgstr "(C) 2009, George Kiagiadakis"
192
193 #: src/main.cpp:40
194 msgctxt "@info:credit"
195 msgid "George Kiagiadakis"
196 msgstr "George Kiagiadakis"
197
198 #: rc.cpp:1
199 msgctxt "NAME OF TRANSLATORS"
200 msgid "Your names"
201 msgstr "Frank Weng (a.k.a. Franklin)"
202
203 #: rc.cpp:2
204 msgctxt "EMAIL OF TRANSLATORS"
205 msgid "Your emails"
206 msgstr "franklin at goodhorse dot idv dot tw"
207
208 #. i18n: file: src/callwindowui.rc:11
209 #. i18n: ectx: Menu (call)
210 #: rc.cpp:5
211 msgid "Call"
212 msgstr "呼叫"
213
214 #. i18n: file: src/callwindowui.rc:20
215 #. i18n: ectx: Menu (media)
216 #: rc.cpp:8
217 msgid "Media"
218 msgstr "媒體"
219
220 #. i18n: file: src/callwindowui.rc:27
221 #. i18n: ectx: ToolBar (mainToolBar)
222 #: rc.cpp:11
223 msgid "Main Toolbar"
224 msgstr "主工具列"
225
226 #. i18n: file: src/dtmf-widget.ui:17
227 #. i18n: ectx: property (text), widget (QPushButton, button1)
228 #: rc.cpp:14
229 msgid "1"
230 msgstr "1"
231
232 #. i18n: file: src/dtmf-widget.ui:24
233 #. i18n: ectx: property (text), widget (QPushButton, button2)
234 #: rc.cpp:17
235 msgid "2"
236 msgstr "2"
237
238 #. i18n: file: src/dtmf-widget.ui:31
239 #. i18n: ectx: property (text), widget (QPushButton, button3)
240 #: rc.cpp:20
241 msgid "3"
242 msgstr "3"
243
244 #. i18n: file: src/dtmf-widget.ui:38
245 #. i18n: ectx: property (text), widget (QPushButton, button4)
246 #: rc.cpp:23
247 msgid "4"
248 msgstr "4"
249
250 #. i18n: file: src/dtmf-widget.ui:45
251 #. i18n: ectx: property (text), widget (QPushButton, button5)
252 #: rc.cpp:26
253 msgid "5"
254 msgstr "5"
255
256 #. i18n: file: src/dtmf-widget.ui:52
257 #. i18n: ectx: property (text), widget (QPushButton, button6)
258 #: rc.cpp:29
259 msgid "6"
260 msgstr "6"
261
262 #. i18n: file: src/dtmf-widget.ui:59
263 #. i18n: ectx: property (text), widget (QPushButton, button7)
264 #: rc.cpp:32
265 msgid "7"
266 msgstr "7"
267
268 #. i18n: file: src/dtmf-widget.ui:66
269 #. i18n: ectx: property (text), widget (QPushButton, button8)
270 #: rc.cpp:35
271 msgid "8"
272 msgstr "8"
273
274 #. i18n: file: src/dtmf-widget.ui:73
275 #. i18n: ectx: property (text), widget (QPushButton, button9)
276 #: rc.cpp:38
277 msgid "9"
278 msgstr "9"
279
280 #. i18n: file: src/dtmf-widget.ui:80
281 #. i18n: ectx: property (text), widget (QPushButton, buttonAsterisk)
282 #: rc.cpp:41
283 msgid "*"
284 msgstr "*"
285
286 #. i18n: file: src/dtmf-widget.ui:87
287 #. i18n: ectx: property (text), widget (QPushButton, button0)
288 #: rc.cpp:44
289 msgid "0"
290 msgstr "0"
291
292 #. i18n: file: src/dtmf-widget.ui:94
293 #. i18n: ectx: property (text), widget (QPushButton, buttonHash)
294 #: rc.cpp:47
295 msgid "#"
296 msgstr "#"
297
298 #~ msgid "KCall"
299 #~ msgstr "KCall"
300
301 #, fuzzy
302 #~| msgctxt "@title:tab"
303 #~| msgid "&Contact list"
304 #~ msgid "Contrast"
305 #~ msgstr "聯絡人清單(&C)"
306
307 #~ msgid "Dialpad"
308 #~ msgstr "撥號盤"
309
310 #, fuzzy
311 #~| msgid "Participants"
312 #~ msgctxt "@action:inmenu"
313 #~ msgid "Show participants"
314 #~ msgstr "參與者"
315
316 #~ msgctxt "@action:inmenu"
317 #~ msgid "Status"
318 #~ msgstr "狀態"
319
320 #~ msgctxt "@action:inmenu"
321 #~ msgid "Available"
322 #~ msgstr "可呼叫"
323
324 #~ msgctxt "@action:inmenu"
325 #~ msgid "Away"
326 #~ msgstr "離開"
327
328 #~ msgctxt "@action:inmenu"
329 #~ msgid "Be right back"
330 #~ msgstr "馬上回來"
331
332 #~ msgctxt "@action:inmenu"
333 #~ msgid "Busy"
334 #~ msgstr "忙碌中"
335
336 #, fuzzy
337 #~| msgctxt "@action:inmenu"
338 #~| msgid "Do not distrurb"
339 #~ msgctxt "@action:inmenu"
340 #~ msgid "Do not disturb"
341 #~ msgstr "請勿打擾"
342
343 #~ msgctxt "@action:inmenu"
344 #~ msgid "Extended Away"
345 #~ msgstr "延伸離開"
346
347 #~ msgctxt "@action:inmenu"
348 #~ msgid "Invisible"
349 #~ msgstr "隱身"
350
351 #~ msgctxt "@action:inmenu"
352 #~ msgid "Offline"
353 #~ msgstr "離線"
354
355 #~ msgctxt "@info:status"
356 #~ msgid "Waiting for account information..."
357 #~ msgstr "等待帳號資訊中..."
358
359 #, fuzzy
360 #~| msgctxt "@info:status"
361 #~| msgid "Connecting..."
362 #~ msgctxt "protocol - display name (Connecting)"
363 #~ msgid "%1 - %2 (Connecting)"
364 #~ msgstr "連接中..."
365
366 #~ msgctxt "@title:window"
367 #~ msgid "KCall"
368 #~ msgstr "KCall"
369
370 #, fuzzy
371 #~| msgctxt "@info:status"
372 #~| msgid "Disconnected."
373 #~ msgctxt "@info:status"
374 #~ msgid "Connected"
375 #~ msgstr "已斷線。"
376
377 #, fuzzy
378 #~| msgctxt "@info:status"
379 #~| msgid "Disconnected."
380 #~ msgctxt "@action"
381 #~ msgid "Disconnect"
382 #~ msgstr "已斷線。"
383
384 #, fuzzy
385 #~| msgctxt "@info:status"
386 #~| msgid "Connecting..."
387 #~ msgctxt "@action"
388 #~ msgid "Connect"
389 #~ msgstr "連接中..."
390
391 #~ msgid "Volume"
392 #~ msgstr "音量"
393
394 #~ msgid "Speakers"
395 #~ msgstr "揚聲器"
396
397 #~ msgid "Microphone"
398 #~ msgstr "麥克風"
399
400 #, fuzzy
401 #~| msgctxt "@action:inmenu"
402 #~| msgid "Call"
403 #~ msgid "Call log"
404 #~ msgstr "呼叫"
405
406 #~ msgid "Participants"
407 #~ msgstr "參與者"
408
409 #~ msgctxt "@title:tab"
410 #~ msgid "&Contact list"
411 #~ msgstr "聯絡人清單(&C)"
412
413 #, fuzzy
414 #~| msgctxt "@title:tab"
415 #~| msgid "&Contact list"
416 #~ msgid "Contact handle"
417 #~ msgstr "聯絡人清單(&C)"
418
419 #~ msgctxt "@info:status"
420 #~ msgid "Hanging up..."
421 #~ msgstr "掛斷中..."
422
423 #, fuzzy
424 #~| msgctxt "@info:status"
425 #~| msgid "Disconnected with error."
426 #~ msgid "Channel closed with error: %1"
427 #~ msgstr "發生錯誤而斷線。"
428
429 #~ msgid "Ignore"
430 #~ msgstr "忽略"
431
432 #, fuzzy
433 #~| msgid "Dialpad"
434 #~ msgid "Dial"
435 #~ msgstr "撥號盤"
0 include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
1
2 set(ktp-call-ui_SRCS
3 main.cpp
4 call-window.cpp
5 call-handler.cpp
6 dtmf-handler.cpp
7 dtmf-widget.cpp
8 status-area.cpp
9 call-manager.cpp
10 approver.cpp
11 )
12
13 kde4_add_ui_files(ktp-call-ui_SRCS call-window.ui dtmf-widget.ui)
14 kde4_add_executable(ktp-call-ui ${ktp-call-ui_SRCS})
15 target_link_libraries(ktp-call-ui
16 ${KDE4_KDEUI_LIBS}
17 ${TELEPATHY_QT4_LIBRARIES}
18 ${KTP_LIBRARIES}
19 ${QTGSTREAMER_UI_LIBRARIES}
20 ktpcall
21 )
22
23 install(TARGETS ktp-call-ui DESTINATION ${LIBEXEC_INSTALL_DIR})
24 install(FILES callwindowui.rc DESTINATION ${DATA_INSTALL_DIR}/ktp-call-ui)
25
26 configure_file(org.freedesktop.Telepathy.Client.KTp.CallUi.service.in
27 org.freedesktop.Telepathy.Client.KTp.CallUi.service)
28 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.freedesktop.Telepathy.Client.KTp.CallUi.service
29 DESTINATION ${DBUS_SERVICES_INSTALL_DIR})
30
31 install(FILES KTp.CallUi.client DESTINATION ${SHARE_INSTALL_PREFIX}/telepathy/clients/)
0 [org.freedesktop.Telepathy.Client]
1 Interfaces=org.freedesktop.Telepathy.Client.Handler
2
3 [org.freedesktop.Telepathy.Client.Handler.HandlerChannelFilter 0]
4 org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call1
5 org.freedesktop.Telepathy.Channel.TargetHandleType u=1
6
7 [org.freedesktop.Telepathy.Client.Handler.HandlerChannelFilter 1]
8 org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call1
9 org.freedesktop.Telepathy.Channel.TargetHandleType u=1
10 org.freedesktop.Telepathy.Channel.Type.Call1.InitialAudio b=true
11
12 [org.freedesktop.Telepathy.Client.Handler.HandlerChannelFilter 2]
13 org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call1
14 org.freedesktop.Telepathy.Channel.TargetHandleType u=1
15 org.freedesktop.Telepathy.Channel.Type.Call1.InitialVideo b=true
16
17 [org.freedesktop.Telepathy.Client.Handler.Capabilities]
18 org.freedesktop.Telepathy.Channel.Type.Call1/audio=true
19 org.freedesktop.Telepathy.Channel.Type.Call1/video=true
20 org.freedesktop.Telepathy.Channel.Type.Call1/ice=true
21 org.freedesktop.Telepathy.Channel.Type.Call1/gtalk-p2p=true
22 org.freedesktop.Telepathy.Channel.Type.Call1/video/h264=true
0 /*
1 Copyright (C) 2010-2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "approver.h"
18 #include <KNotification>
19 #include <KStatusNotifierItem>
20 #include <KLocale>
21 #include <KDebug>
22 #include <KAboutData>
23 #include <KActionCollection>
24 #include <KMenu>
25 #include <TelepathyQt/AvatarData>
26 #include <TelepathyQt/Contact>
27
28 Approver::Approver(const Tp::CallChannelPtr & channel, QObject *parent)
29 : QObject(parent)
30 {
31 kDebug();
32
33 Tp::ContactPtr sender = channel->initiatorContact();
34 QString message;
35 QString title;
36 if (channel->hasInitialVideo()) {
37 title = i18n("Incoming video call");
38 message = i18n("<p>%1 is asking you for a video call</p>", sender->alias());
39 } else {
40 title = i18n("Incoming call");
41 message = i18n("<p>%1 is calling you</p>", sender->alias());
42 }
43
44 //notification
45 m_notification = new KNotification("incoming_call");
46 KAboutData aboutData("ktelepathy",0,KLocalizedString(),0);
47 m_notification.data()->setComponentData(KComponentData(aboutData));
48 m_notification.data()->setTitle(title);
49 m_notification.data()->setText(message);
50
51 QPixmap pixmap;
52 if (pixmap.load(sender->avatarData().fileName)) {
53 m_notification.data()->setPixmap(pixmap);
54 }
55
56 m_notification.data()->setActions(QStringList()
57 << i18nc("action, answers the incoming call", "Answer")
58 << i18nc("action, rejects the incoming call", "Reject"));
59 connect(m_notification.data(), SIGNAL(action1Activated()), SIGNAL(channelAccepted()));
60 connect(m_notification.data(), SIGNAL(action2Activated()), SIGNAL(channelRejected()));
61
62 m_notification.data()->sendEvent();
63
64 //tray icon
65 m_notifierItem = new KStatusNotifierItem;
66 m_notifierItem->setCategory(KStatusNotifierItem::Communications);
67 m_notifierItem->setStatus(KStatusNotifierItem::NeedsAttention);
68 m_notifierItem->setIconByName(QLatin1String("internet-telephony"));
69
70 if (channel->hasInitialVideo()) {
71 m_notifierItem->setAttentionIconByName(QLatin1String("camera-web"));
72 } else {
73 m_notifierItem->setAttentionIconByName(QLatin1String("audio-headset"));
74 }
75
76 m_notifierItem->setStandardActionsEnabled(false);
77 m_notifierItem->setTitle(title);
78 m_notifierItem->setToolTip(QLatin1String("internet-telephony"), message, QString());
79 m_notifierItem->contextMenu()->addAction(i18nc("action, answers the incoming call", "Answer"),
80 this, SIGNAL(channelAccepted()));
81 m_notifierItem->contextMenu()->addAction(i18nc("action, rejects the incoming call", "Reject"),
82 this, SIGNAL(channelRejected()));
83 connect(m_notifierItem, SIGNAL(activateRequested(bool,QPoint)), SIGNAL(channelAccepted()));
84 }
85
86 Approver::~Approver()
87 {
88 kDebug();
89
90 //destroy the notification
91 if (m_notification) {
92 m_notification.data()->close();
93 }
94
95 //destroy the tray icon
96 delete m_notifierItem;
97 }
98
99 #include "moc_approver.cpp"
0 /*
1 Copyright (C) 2010-2011 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef APPROVER_H
18 #define APPROVER_H
19
20 #include <QtCore/QSharedPointer>
21 #include <TelepathyQt/CallChannel>
22
23 class KStatusNotifierItem;
24 class KNotification;
25
26 class Approver : public QObject
27 {
28 Q_OBJECT
29 public:
30 Approver(const Tp::CallChannelPtr & channel, QObject *parent);
31 virtual ~Approver();
32
33 Q_SIGNALS:
34 void channelAccepted();
35 void channelRejected();
36
37 private:
38 QWeakPointer<KNotification> m_notification;
39 KStatusNotifierItem *m_notifierItem;
40 };
41
42 #endif //APPROVER_H
0 /*
1 Copyright (C) 2009-2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This program is free software: you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation, either version 2 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #include "call-handler.h"
17 #include "call-manager.h"
18 #include <KDebug>
19 #include <TelepathyQt/CallChannel>
20 #include <TelepathyQt/ChannelClassSpec>
21
22 static inline Tp::ChannelClassSpecList channelClassSpecList()
23 {
24 return Tp::ChannelClassSpecList() << Tp::ChannelClassSpec::audioCall()
25 << Tp::ChannelClassSpec::videoCall()
26 << Tp::ChannelClassSpec::videoCallWithAudio();
27 }
28
29 CallHandler::CallHandler()
30 : Tp::AbstractClientHandler(channelClassSpecList())
31 {
32 kDebug();
33 }
34
35 CallHandler::~CallHandler()
36 {
37 }
38
39 bool CallHandler::bypassApproval() const
40 {
41 return false;
42 }
43
44 void CallHandler::handleChannels(const Tp::MethodInvocationContextPtr<> & context,
45 const Tp::AccountPtr & account,
46 const Tp::ConnectionPtr & connection,
47 const QList<Tp::ChannelPtr> & channels,
48 const QList<Tp::ChannelRequestPtr> & requestsSatisfied,
49 const QDateTime & userActionTime,
50 const Tp::AbstractClientHandler::HandlerInfo & handlerInfo)
51 {
52 kDebug();
53 Q_UNUSED(account);
54 Q_UNUSED(connection);
55 Q_UNUSED(requestsSatisfied);
56 Q_UNUSED(userActionTime);
57 Q_UNUSED(handlerInfo);
58
59 Q_FOREACH(const Tp::ChannelPtr & channel, channels) {
60 Tp::CallChannelPtr callChannel = Tp::CallChannelPtr::qObjectCast(channel);
61 if (!callChannel) {
62 kDebug() << "Channel is not a Call channel. Ignoring";
63 continue;
64 }
65
66 //TODO handle multiple calls - queue them if there is an active one
67 CallManager *manager = new CallManager(callChannel, this);
68 }
69
70 context->setFinished();
71 }
0 /*
1 Copyright (C) 2009 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This program is free software: you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation, either version 2 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #ifndef CALL_HANDLER_H
17 #define CALL_HANDLER_H
18
19 #include <TelepathyQt/AbstractClientHandler>
20
21 class CallHandler : public QObject, public Tp::AbstractClientHandler
22 {
23 Q_OBJECT
24 public:
25 CallHandler();
26 virtual ~CallHandler();
27
28 virtual bool bypassApproval() const;
29 virtual void handleChannels(const Tp::MethodInvocationContextPtr<> & context,
30 const Tp::AccountPtr & account,
31 const Tp::ConnectionPtr & connection,
32 const QList<Tp::ChannelPtr> & channels,
33 const QList<Tp::ChannelRequestPtr> & requestsSatisfied,
34 const QDateTime & userActionTime,
35 const Tp::AbstractClientHandler::HandlerInfo & handlerInfo);
36 };
37
38 #endif
0 /*
1 Copyright (C) 2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This library is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Lesser General Public
5 License as published by the Free Software Foundation; either
6 version 2.1 of the License, or (at your option) any later version.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Lesser General Public License for more details.
12
13 You should have received a copy of the GNU Lesser General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #include "call-manager.h"
17 #include "call-window.h"
18 #include "approver.h"
19 #include "../libktpcall/call-channel-handler.h"
20
21 #include <KDebug>
22 #include <KTp/telepathy-handler-application.h>
23
24 struct CallManager::Private
25 {
26 Tp::CallChannelPtr callChannel;
27 CallChannelHandler *channelHandler;
28 QWeakPointer<CallWindow> callWindow;
29 QWeakPointer<Approver> approver;
30 };
31
32 CallManager::CallManager(const Tp::CallChannelPtr & callChannel, QObject *parent)
33 : QObject(parent), d(new Private)
34 {
35 KTp::TelepathyHandlerApplication::newJob();
36
37 d->callChannel = callChannel;
38 connect(callChannel.data(), SIGNAL(callStateChanged(Tp::CallState)),
39 SLOT(onCallStateChanged(Tp::CallState)));
40
41 //create the channel handler
42 d->channelHandler = new CallChannelHandler(callChannel, this);
43
44 //delete the CallManager when the channel has closed
45 //and the farstream side has safely shut down.
46 //NOTE this MUST be used with Qt::QueuedConnection because of
47 // https://bugreports.qt-project.org/browse/QTBUG-24571
48 connect(d->channelHandler, SIGNAL(channelClosed()),
49 this, SLOT(deleteLater()), Qt::QueuedConnection);
50
51 //bring us up-to-date with the current call state
52 onCallStateChanged(d->callChannel->callState());
53 }
54
55 CallManager::~CallManager()
56 {
57 kDebug() << "Deleting CallManager";
58 delete d;
59
60 KTp::TelepathyHandlerApplication::jobFinished();
61 }
62
63 void CallManager::onCallStateChanged(Tp::CallState state)
64 {
65 kDebug() << "new call state:" << state;
66
67 switch (state) {
68 case Tp::CallStatePendingInitiator:
69 Q_ASSERT(d->callChannel->isRequested());
70 (void) d->callChannel->accept();
71 break;
72 case Tp::CallStateInitialising:
73 if (d->callChannel->isRequested()) {
74 //show status that the call is conneting
75 ensureCallWindow();
76 d->callWindow.data()->setStatus(CallWindow::StatusConnecting);
77 } else {
78 kDebug() << "Call is initialising";
79 }
80 break;
81 case Tp::CallStateInitialised:
82 if (d->callChannel->isRequested()) {
83 //show status that the remote end is ringing
84 ensureCallWindow();
85 d->callWindow.data()->setStatus(CallWindow::StatusRemoteRinging);
86 } else {
87 //show approver
88 d->approver = new Approver(d->callChannel, this);
89 connect(d->approver.data(), SIGNAL(channelAccepted()), SLOT(onCallAccepted()));
90 connect(d->approver.data(), SIGNAL(channelRejected()), SLOT(onCallRejected()));
91 (void) d->callChannel->setRinging();
92 }
93 break;
94 case Tp::CallStateAccepted:
95 if (d->callChannel->isRequested()) {
96 //show status that the remote end accepted the call
97 ensureCallWindow();
98 d->callWindow.data()->setStatus(CallWindow::StatusRemoteAccepted);
99 } else {
100 //hide approver & show call window
101 delete d->approver.data();
102 ensureCallWindow();
103 d->callWindow.data()->setStatus(CallWindow::StatusConnecting);
104 }
105 break;
106 case Tp::CallStateActive:
107 //normally the approver is already deleted and the call window
108 //already exists at this point, but we just want to be safe
109 //in case the CM decides to do a weird state jump
110 if (!d->callChannel->isRequested()) {
111 delete d->approver.data();
112 }
113 ensureCallWindow();
114 d->callWindow.data()->setStatus(CallWindow::StatusActive);
115 break;
116 case Tp::CallStateEnded:
117 //if we requested the call, make sure we have a window to show the error (if any)
118 if (d->callChannel->isRequested()) {
119 ensureCallWindow();
120 }
121
122 if (d->callWindow) {
123 Tp::CallStateReason reason = d->callChannel->callStateReason();
124 d->callWindow.data()->setStatus(CallWindow::StatusDisconnected, reason);
125
126 //kill the call manager when the call window is closed,
127 //after shutting down the channelHandler
128 connect(d->callWindow.data(), SIGNAL(destroyed()), d->channelHandler, SLOT(shutdown()));
129 } else {
130 //missed the call
131 kDebug() << "missed call";
132 delete d->approver.data();
133 d->channelHandler->shutdown();
134 }
135 break;
136 default:
137 Q_ASSERT(false);
138 }
139 }
140
141 void CallManager::onCallAccepted()
142 {
143 (void) d->callChannel->accept();
144 }
145
146 void CallManager::onCallRejected()
147 {
148 (void) d->callChannel->hangup(Tp::CallStateChangeReasonRejected, TP_QT_ERROR_REJECTED);
149 }
150
151 void CallManager::ensureCallWindow()
152 {
153 if (!d->callWindow) {
154 d->callWindow = new CallWindow(d->callChannel);
155 d->callWindow.data()->show();
156 d->callWindow.data()->setAttribute(Qt::WA_DeleteOnClose);
157
158 connect(d->channelHandler, SIGNAL(contentAdded(CallContentHandler*)),
159 d->callWindow.data(), SLOT(onContentAdded(CallContentHandler*)));
160 connect(d->channelHandler, SIGNAL(contentRemoved(CallContentHandler*)),
161 d->callWindow.data(), SLOT(onContentRemoved(CallContentHandler*)));
162
163 //inform the ui about already existing contents
164 Q_FOREACH(CallContentHandler *content, d->channelHandler->contents()) {
165 d->callWindow.data()->onContentAdded(content);
166 }
167 }
168 }
0 /*
1 Copyright (C) 2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This library is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Lesser General Public
5 License as published by the Free Software Foundation; either
6 version 2.1 of the License, or (at your option) any later version.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Lesser General Public License for more details.
12
13 You should have received a copy of the GNU Lesser General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #ifndef CALL_MANAGER_H
17 #define CALL_MANAGER_H
18
19 #include <QObject>
20 #include <TelepathyQt/CallChannel>
21
22 class CallManager : public QObject
23 {
24 Q_OBJECT
25 public:
26 explicit CallManager(const Tp::CallChannelPtr & callChannel, QObject *parent = 0);
27 virtual ~CallManager();
28
29 private Q_SLOTS:
30 void onCallStateChanged(Tp::CallState state);
31 void onCallAccepted();
32 void onCallRejected();
33
34 private:
35 void ensureCallWindow();
36
37 private:
38 struct Private;
39 Private *const d;
40 };
41
42 #endif // CALL_MANAGER_H
0 /*
1 Copyright (C) 2009-2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2 Copyright (C) 2010-2011 Collabora Ltd. <info@collabora.co.uk>
3 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #include "call-window.h"
19 #include "ui_call-window.h"
20
21 #include "status-area.h"
22 #include "dtmf-handler.h"
23 #include "../libktpcall/call-channel-handler.h"
24
25 #include <QtGui/QCloseEvent>
26
27 #include <TelepathyQt/ReferencedHandles>
28 #include <TelepathyQt/AvatarData>
29 #include <TelepathyQt/Contact>
30
31 #include <KDebug>
32 #include <KLocalizedString>
33 #include <KToggleAction>
34 #include <KActionCollection>
35 #include <KToolBar>
36
37 #include <QGst/ElementFactory>
38
39 struct CallWindow::Private
40 {
41 Private() :
42 callEnded(false),
43 currentVideoDisplayState(NoVideo),
44 videoContentHandler(NULL)
45 {}
46
47 Tp::CallChannelPtr callChannel;
48 CallChannelHandler *channelHandler;
49 StatusArea *statusArea;
50 Ui::CallWindow ui;
51 bool callEnded;
52
53 KToggleAction *showMyVideoAction;
54 KToggleAction *showDtmfAction;
55 KToggleAction *sendVideoAction;
56 KToggleAction *muteAction;
57 KToggleAction *holdAction;
58 KAction *hangupAction;
59
60 VideoDisplayFlags currentVideoDisplayState;
61 VideoContentHandler *videoContentHandler;
62 Tp::ContactPtr remoteVideoContact;
63 };
64
65 /*! This constructor is used to handle an incoming call, in which case
66 * the specified \a channel must be ready and the call must have been accepted.
67 */
68 CallWindow::CallWindow(const Tp::CallChannelPtr & callChannel)
69 : KXmlGuiWindow(), d(new Private)
70 {
71 d->callChannel = callChannel;
72
73 //create ui
74 d->ui.setupUi(this);
75 d->statusArea = new StatusArea(statusBar());
76 setupActions();
77 setupGUI(QSize(428, 395), ToolBar | Keys | StatusBar | Create, QLatin1String("callwindowui.rc"));
78 setAutoSaveSettings(QLatin1String("CallWindow"), false);
79 toolBar()->setToolButtonStyle(Qt::ToolButtonIconOnly);
80
81 DtmfHandler *handler = new DtmfHandler(d->callChannel, this);
82 handler->connectDtmfWidget(d->ui.dtmfWidget);
83
84 //TODO handle member joining later
85 if (!d->callChannel->remoteMembers().isEmpty()) {
86 Tp::ContactPtr remoteMember = *d->callChannel->remoteMembers().begin();
87 d->ui.remoteUserDisplayLabel->setText(QString::fromAscii(
88 "<html><body>"
89 "<p align=\"center\"><img src=\"%1\" /></p>"
90 "<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px;\">"
91 "<span style=\" font-weight:600;\">%2</span></p>"
92 "</body></html>")
93 .arg(remoteMember->avatarData().fileName, remoteMember->alias()));
94 setWindowTitle(i18n("Call with %1", remoteMember->alias()));
95 }
96 }
97
98 CallWindow::~CallWindow()
99 {
100 kDebug() << "Deleting CallWindow";
101 delete d;
102 }
103
104 void CallWindow::setStatus(Status status, const Tp::CallStateReason & reason)
105 {
106 switch (status) {
107 case StatusConnecting:
108 d->statusArea->setMessage(StatusArea::Status, i18nc("@info:status", "Connecting..."));
109 break;
110 case StatusRemoteRinging:
111 d->statusArea->setMessage(StatusArea::Status,
112 i18nc("@info:status the remote user's phone is ringing", "Ringing..."));
113 break;
114 case StatusRemoteAccepted:
115 d->statusArea->setMessage(StatusArea::Status,
116 i18nc("@info:status", "Remote user accepted the call, waiting for connection..."));
117 break;
118 case StatusActive:
119 d->statusArea->setMessage(StatusArea::Status, i18nc("@info:status", "Talking..."));
120 d->statusArea->startDurationTimer();
121 break;
122 case StatusDisconnected:
123 {
124 bool actorIsRemoteContact = false;
125 Q_FOREACH(const Tp::ContactPtr & contact, d->callChannel->remoteMembers()) {
126 if (contact->handle()[0] == reason.actor) {
127 actorIsRemoteContact = true;
128 }
129 }
130
131 QString message;
132 switch(reason.reason) {
133 case Tp::CallStateChangeReasonUserRequested:
134 if (actorIsRemoteContact) {
135 message = i18nc("@info:status", "Remote contact ended the call.");
136 }
137 //when disconnected normally, close the window after a while
138 QTimer::singleShot(5000, this, SLOT(close()));
139 break;
140 case Tp::CallStateChangeReasonRejected:
141 if (actorIsRemoteContact) {
142 message = i18nc("@info:status", "Remote contact rejected the call.");
143 }
144 break;
145 case Tp::CallStateChangeReasonNoAnswer:
146 if (actorIsRemoteContact) {
147 message = i18nc("@info:status", "Remote contact didn't answer.");
148 }
149 break;
150 case Tp::CallStateChangeReasonInvalidContact:
151 message = i18nc("@info:status", "Invalid number or contact.");
152 break;
153 case Tp::CallStateChangeReasonPermissionDenied:
154 if (reason.DBusReason == TP_QT_ERROR_INSUFFICIENT_BALANCE) {
155 message = i18nc("@info:status", "You don't have enough balance to make this call.");
156 } else {
157 message = i18nc("@info:status", "You don't have permission to make this call.");
158 }
159 break;
160 case Tp::CallStateChangeReasonBusy:
161 if (actorIsRemoteContact) {
162 message = i18nc("@info:status", "Remote contact is currently busy.");
163 }
164 break;
165 case Tp::CallStateChangeReasonInternalError:
166 message = i18nc("@info:status", "Internal component error.");
167 break;
168 case Tp::CallStateChangeReasonServiceError:
169 message = i18nc("@info:status", "Remote service error.");
170 break;
171 case Tp::CallStateChangeReasonNetworkError:
172 message = i18nc("@info:status", "Network error.");
173 break;
174 case Tp::CallStateChangeReasonMediaError:
175 if (reason.DBusReason == TP_QT_ERROR_MEDIA_CODECS_INCOMPATIBLE) {
176 message = i18nc("@info:status", "Failed to negotiate codecs.");
177 } else {
178 message = i18nc("@info:status", "Unsupported media type.");
179 }
180 break;
181 case Tp::CallStateChangeReasonConnectivityError:
182 message = i18nc("@info:status", "Connectivity error.");
183 break;
184 case Tp::CallStateChangeReasonUnknown:
185 default:
186 message = i18nc("@info:status", "Unknown error.");
187 break;
188 }
189
190 if (message.isEmpty()) {
191 d->statusArea->setMessage(StatusArea::Status, i18nc("@info:status", "Disconnected."));
192 } else {
193 d->statusArea->setMessage(StatusArea::Status,
194 i18nc("@info:status the call was disconnected because...",
195 "Disconnected: %1", message));
196 }
197
198 changeVideoDisplayState(NoVideo);
199 d->statusArea->stopDurationTimer();
200 d->callEnded = true;
201 break;
202 }
203 default:
204 Q_ASSERT(false);
205 }
206 }
207
208 void CallWindow::onContentAdded(CallContentHandler *contentHandler)
209 {
210 kDebug() << "Content added:" << contentHandler->callContent()->name();
211
212 if (contentHandler->callContent()->type() == Tp::MediaStreamTypeAudio) {
213 AudioContentHandler *audioContentHandler = qobject_cast<AudioContentHandler*>(contentHandler);
214 Q_ASSERT(audioContentHandler);
215
216 checkEnableDtmf();
217
218 VolumeController *vol = audioContentHandler->sourceVolumeControl();
219 d->muteAction->setEnabled(vol->volumeControlSupported());
220 connect(vol, SIGNAL(volumeControlSupportedChanged(bool)),
221 d->muteAction, SLOT(setEnabled(bool)));
222 d->muteAction->setChecked(vol->isMuted());
223 connect(vol, SIGNAL(mutedChanged(bool)), d->muteAction, SLOT(setChecked(bool)));
224 d->muteAction->setProperty("volumeController", QVariant::fromValue<QObject*>(vol));
225
226 d->statusArea->showAudioStatusIcon(true);
227 } else {
228 if (d->videoContentHandler) {
229 kError() << "Multiple video contents are not supported";
230 return;
231 }
232
233 d->videoContentHandler = qobject_cast<VideoContentHandler*>(contentHandler);
234 Q_ASSERT(d->videoContentHandler);
235
236 connect(d->videoContentHandler, SIGNAL(localSendingStateChanged(bool)),
237 SLOT(onLocalVideoSendingStateChanged(bool)));
238 connect(d->videoContentHandler, SIGNAL(remoteSendingStateChanged(Tp::ContactPtr,bool)),
239 SLOT(onRemoteVideoSendingStateChanged(Tp::ContactPtr,bool)));
240
241 d->statusArea->showVideoStatusIcon(true);
242 }
243 }
244
245 void CallWindow::onContentRemoved(CallContentHandler *contentHandler)
246 {
247 kDebug() << "Content removed:" << contentHandler->callContent()->name();
248
249 if (contentHandler->callContent()->type() == Tp::MediaStreamTypeAudio) {
250 AudioContentHandler *audioContentHandler = qobject_cast<AudioContentHandler*>(contentHandler);
251 Q_ASSERT(audioContentHandler);
252
253 VolumeController *vol = audioContentHandler->sourceVolumeControl();
254 disconnect(vol, NULL, d->muteAction, NULL);
255 d->muteAction->setEnabled(false);
256 d->muteAction->setProperty("volumeController", QVariant());
257
258 d->statusArea->showAudioStatusIcon(false);
259 } else {
260 if (d->videoContentHandler && d->videoContentHandler == contentHandler) {
261 changeVideoDisplayState(NoVideo);
262 d->videoContentHandler = NULL;
263 d->remoteVideoContact.reset();
264 }
265
266 d->statusArea->showVideoStatusIcon(false);
267 }
268 }
269
270 void CallWindow::onLocalVideoSendingStateChanged(bool sending)
271 {
272 kDebug();
273
274 if (sending) {
275 changeVideoDisplayState(d->currentVideoDisplayState | LocalVideoPreview);
276 } else {
277 changeVideoDisplayState(d->currentVideoDisplayState & ~LocalVideoPreview);
278 }
279 }
280
281 void CallWindow::onRemoteVideoSendingStateChanged(const Tp::ContactPtr & contact, bool sending)
282 {
283 kDebug();
284
285 if (d->remoteVideoContact && d->remoteVideoContact != contact) {
286 kError() << "Multiple participants are not supported";
287 return;
288 }
289
290 if (!d->remoteVideoContact) {
291 d->remoteVideoContact = contact;
292 }
293
294 if (sending) {
295 changeVideoDisplayState(d->currentVideoDisplayState | RemoteVideo);
296 } else {
297 changeVideoDisplayState(d->currentVideoDisplayState & ~RemoteVideo);
298 }
299 }
300
301 void CallWindow::changeVideoDisplayState(VideoDisplayFlags newState)
302 {
303 static const char * const preferredSinkFactory = "xvimagesink";
304 VideoDisplayFlags oldState = d->currentVideoDisplayState;
305
306 if (oldState.testFlag(LocalVideoPreview) && !newState.testFlag(LocalVideoPreview)) {
307 d->videoContentHandler->unlinkVideoPreviewSink();
308 d->ui.videoPreviewWidget->setVideoSink(QGst::ElementPtr());
309 d->ui.videoPreviewWidget->hide();
310 } else if (!oldState.testFlag(LocalVideoPreview) && newState.testFlag(LocalVideoPreview)) {
311 QGst::ElementPtr sink = QGst::ElementFactory::make(preferredSinkFactory);
312 d->ui.videoPreviewWidget->show();
313 d->ui.videoPreviewWidget->setVideoSink(sink);
314 d->videoContentHandler->linkVideoPreviewSink(sink);
315 }
316
317 if (oldState.testFlag(RemoteVideo) && !newState.testFlag(RemoteVideo)) {
318 d->videoContentHandler->unlinkRemoteMemberVideoSink(d->remoteVideoContact);
319 d->ui.videoWidget->setVideoSink(QGst::ElementPtr());
320 } else if (!oldState.testFlag(RemoteVideo) && newState.testFlag(RemoteVideo)) {
321 QGst::ElementPtr sink = QGst::ElementFactory::make(preferredSinkFactory);
322 d->ui.videoWidget->setVideoSink(sink);
323 d->videoContentHandler->linkRemoteMemberVideoSink(d->remoteVideoContact, sink);
324 }
325
326 if (newState == NoVideo) {
327 d->ui.callStackedWidget->setCurrentIndex(0);
328 } else {
329 d->ui.callStackedWidget->setCurrentIndex(1);
330 }
331
332 d->currentVideoDisplayState = newState;
333 }
334
335 void CallWindow::setupActions()
336 {
337 //TODO implement this feature
338 d->showMyVideoAction = new KToggleAction(i18nc("@action", "Show my video"), this);
339 d->showMyVideoAction->setIcon(KIcon("camera-web"));
340 d->showMyVideoAction->setEnabled(false);
341 actionCollection()->addAction("showMyVideo", d->showMyVideoAction);
342
343 d->showDtmfAction = new KToggleAction(i18nc("@action", "Show dialpad"), this);
344 d->showDtmfAction->setIcon(KIcon("phone"));
345 d->showDtmfAction->setEnabled(false);
346 connect(d->showDtmfAction, SIGNAL(toggled(bool)), SLOT(toggleDtmf(bool)));
347 actionCollection()->addAction("showDtmf", d->showDtmfAction);
348
349 //TODO implement this feature
350 d->sendVideoAction = new KToggleAction(i18nc("@action", "Send video"), this);
351 d->sendVideoAction->setIcon(KIcon("webcamsend"));
352 d->sendVideoAction->setEnabled(false);
353 actionCollection()->addAction("sendVideo", d->sendVideoAction);
354
355 d->muteAction = new KToggleAction(KIcon("audio-volume-medium"), i18nc("@action", "Mute"), this);
356 d->muteAction->setCheckedState(KGuiItem(i18nc("@action", "Mute"), KIcon("audio-volume-muted")));
357 d->muteAction->setEnabled(false); //will be enabled later
358 connect(d->muteAction, SIGNAL(toggled(bool)), SLOT(toggleMute(bool)));
359 actionCollection()->addAction("mute", d->muteAction);
360
361 //TODO implement this feature
362 d->holdAction = new KToggleAction(i18nc("@action", "Hold"), this);
363 d->holdAction->setIcon(KIcon("media-playback-pause"));
364 d->holdAction->setEnabled(false);
365 actionCollection()->addAction("hold", d->holdAction);
366
367 d->hangupAction = new KAction(KIcon("call-stop"), i18nc("@action", "Hangup"), this);
368 connect(d->hangupAction, SIGNAL(triggered()), SLOT(hangup()));
369 actionCollection()->addAction("hangup", d->hangupAction);
370 }
371
372 void CallWindow::checkEnableDtmf()
373 {
374 bool dtmfSupported = false;
375 Q_FOREACH(const Tp::CallContentPtr & content, d->callChannel->contentsForType(Tp::MediaStreamTypeAudio)) {
376 if (content->supportsDTMF()) {
377 dtmfSupported = true;
378 break;
379 }
380 }
381
382 kDebug() << "DTMF supported:" << dtmfSupported;
383 d->showDtmfAction->setEnabled(dtmfSupported);
384
385 if (!dtmfSupported) {
386 toggleDtmf(false);
387 }
388 }
389
390 void CallWindow::toggleDtmf(bool checked)
391 {
392 d->ui.dtmfStackedWidget->setCurrentIndex(checked ? 1 : 0);
393 }
394
395 void CallWindow::toggleMute(bool checked)
396 {
397 //this slot is here to avoid connecting the mute button directly to the VolumeController
398 //as there is a signal loop: toggled() -> setMuted() -> mutedChanged() -> setChecked()
399 QObject *volControl = qvariant_cast<QObject*>(sender()->property("volumeController"));
400 if (volControl) {
401 sender()->blockSignals(true);
402 volControl->setProperty("muted", checked);
403 sender()->blockSignals(false);
404 }
405 }
406
407 void CallWindow::hangup()
408 {
409 kDebug();
410 d->callChannel->hangup();
411 }
412
413 void CallWindow::closeEvent(QCloseEvent *event)
414 {
415 if (!d->callEnded) {
416 kDebug() << "Ignoring close event";
417 hangup();
418 event->ignore();
419 } else {
420 KXmlGuiWindow::closeEvent(event);
421 }
422 }
0 /*
1 Copyright (C) 2009-2012 George Kiagiadakis <kiagiadakis.george@gmail.com>
2 Copyright (C) 2010-2011 Collabora Ltd. <info@collabora.co.uk>
3 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef CALL_WINDOW_H
19 #define CALL_WINDOW_H
20
21 #include <TelepathyQt/CallChannel>
22 #include <KXmlGuiWindow>
23 class CallContentHandler;
24
25 class CallWindow : public KXmlGuiWindow
26 {
27 Q_OBJECT
28 public:
29 explicit CallWindow(const Tp::CallChannelPtr & channel);
30 virtual ~CallWindow();
31
32 enum Status {
33 StatusConnecting,
34 StatusRemoteRinging,
35 StatusRemoteAccepted,
36 StatusActive,
37 StatusDisconnected
38 };
39 void setStatus(Status status, const Tp::CallStateReason & reason = Tp::CallStateReason());
40
41 public Q_SLOTS:
42 void onContentAdded(CallContentHandler *contentHandler);
43 void onContentRemoved(CallContentHandler *contentHandler);
44 void onLocalVideoSendingStateChanged(bool sending);
45 void onRemoteVideoSendingStateChanged(const Tp::ContactPtr & contact, bool sending);
46
47 private:
48 enum VideoDisplayFlag {
49 NoVideo = 0,
50 LocalVideoPreview = 0x1,
51 RemoteVideo = 0x2
52 };
53 Q_DECLARE_FLAGS(VideoDisplayFlags, VideoDisplayFlag);
54
55 void changeVideoDisplayState(VideoDisplayFlags newState);
56
57 void setupActions();
58 void checkEnableDtmf();
59
60 private Q_SLOTS:
61 void toggleDtmf(bool checked);
62 void toggleMute(bool checked);
63 void hangup();
64
65 protected:
66 virtual void closeEvent(QCloseEvent *event);
67
68 private:
69 struct Private;
70 Private *const d;
71 };
72
73 #endif
0 <?xml version="1.0" encoding="UTF-8"?>
1 <ui version="4.0">
2 <class>CallWindow</class>
3 <widget class="QMainWindow" name="CallWindow">
4 <property name="geometry">
5 <rect>
6 <x>0</x>
7 <y>0</y>
8 <width>420</width>
9 <height>315</height>
10 </rect>
11 </property>
12 <widget class="QWidget" name="centralwidget">
13 <layout class="QHBoxLayout" name="horizontalLayout">
14 <item>
15 <widget class="QStackedWidget" name="dtmfStackedWidget">
16 <widget class="QWidget" name="callPage">
17 <layout class="QHBoxLayout" name="horizontalLayout_4">
18 <property name="margin">
19 <number>0</number>
20 </property>
21 <item>
22 <widget class="QStackedWidget" name="callStackedWidget">
23 <property name="currentIndex">
24 <number>0</number>
25 </property>
26 <widget class="QWidget" name="avatarLabelPage">
27 <layout class="QHBoxLayout" name="horizontalLayout_2">
28 <item>
29 <widget class="QFrame" name="frame">
30 <property name="frameShape">
31 <enum>QFrame::StyledPanel</enum>
32 </property>
33 <property name="frameShadow">
34 <enum>QFrame::Raised</enum>
35 </property>
36 <layout class="QVBoxLayout" name="verticalLayout_2">
37 <item>
38 <widget class="QLabel" name="remoteUserDisplayLabel">
39 <property name="text">
40 <string/>
41 </property>
42 <property name="alignment">
43 <set>Qt::AlignCenter</set>
44 </property>
45 </widget>
46 </item>
47 </layout>
48 </widget>
49 </item>
50 </layout>
51 </widget>
52 <widget class="QGst::Ui::VideoWidget" name="videoWidget">
53 <layout class="QGridLayout" name="gridLayout">
54 <item row="0" column="0">
55 <spacer name="verticalSpacer">
56 <property name="orientation">
57 <enum>Qt::Vertical</enum>
58 </property>
59 <property name="sizeHint" stdset="0">
60 <size>
61 <width>20</width>
62 <height>212</height>
63 </size>
64 </property>
65 </spacer>
66 </item>
67 <item row="1" column="0">
68 <widget class="QGst::Ui::VideoWidget" name="videoPreviewWidget" native="true">
69 <property name="sizePolicy">
70 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
71 <horstretch>0</horstretch>
72 <verstretch>0</verstretch>
73 </sizepolicy>
74 </property>
75 <property name="minimumSize">
76 <size>
77 <width>106</width>
78 <height>80</height>
79 </size>
80 </property>
81 </widget>
82 </item>
83 <item row="1" column="1">
84 <spacer name="horizontalSpacer_3">
85 <property name="orientation">
86 <enum>Qt::Horizontal</enum>
87 </property>
88 <property name="sizeHint" stdset="0">
89 <size>
90 <width>291</width>
91 <height>20</height>
92 </size>
93 </property>
94 </spacer>
95 </item>
96 </layout>
97 </widget>
98 </widget>
99 </item>
100 </layout>
101 <zorder>frame</zorder>
102 <zorder>callStackedWidget</zorder>
103 </widget>
104 <widget class="QWidget" name="dtmfPage">
105 <layout class="QHBoxLayout" name="horizontalLayout_3">
106 <item>
107 <spacer name="horizontalSpacer_2">
108 <property name="orientation">
109 <enum>Qt::Horizontal</enum>
110 </property>
111 <property name="sizeHint" stdset="0">
112 <size>
113 <width>190</width>
114 <height>20</height>
115 </size>
116 </property>
117 </spacer>
118 </item>
119 <item>
120 <widget class="DtmfWidget" name="dtmfWidget" native="true"/>
121 </item>
122 <item>
123 <spacer name="horizontalSpacer">
124 <property name="orientation">
125 <enum>Qt::Horizontal</enum>
126 </property>
127 <property name="sizeHint" stdset="0">
128 <size>
129 <width>190</width>
130 <height>20</height>
131 </size>
132 </property>
133 </spacer>
134 </item>
135 </layout>
136 </widget>
137 </widget>
138 </item>
139 </layout>
140 </widget>
141 </widget>
142 <customwidgets>
143 <customwidget>
144 <class>DtmfWidget</class>
145 <extends>QWidget</extends>
146 <header>dtmf-widget.h</header>
147 <container>1</container>
148 </customwidget>
149 <customwidget>
150 <class>QGst::Ui::VideoWidget</class>
151 <extends>QWidget</extends>
152 <header location="global">QGst/Ui/VideoWidget</header>
153 <container>1</container>
154 </customwidget>
155 </customwidgets>
156 <resources/>
157 <connections/>
158 </ui>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <gui name="callwindow"
2 version="1"
3 xmlns="http://www.kde.org/standards/kxmlgui/1.0"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0
6 http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd" >
7
8 <MenuBar>
9 <Menu name="call" >
10 <text>Call</text>
11 <Action name="hangup" />
12 <Action name="hold" />
13 </Menu>
14 <Menu name="view">
15 <Action name="showMyVideo" />
16 <Action name="showDtmf" />
17 </Menu>
18 <Menu name="media" >
19 <text>Media</text>
20 <Action name="sendVideo" />
21 <Action name="mute" />
22 </Menu>
23 </MenuBar>
24
25 <ToolBar name="mainToolBar" position="bottom" >
26 <text>Main Toolbar</text>
27 <Action name="hangup" />
28 <Action name="hold" />
29 <Separator />
30 <Action name="showDtmf" />
31 <Action name="showMyVideo" />
32 <Separator />
33 <Action name="mute" />
34 <Action name="sendVideo" />
35 </ToolBar>
36
37 </gui>
0 /*
1 Copyright (C) 2009 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This program is free software: you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation, either version 2 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #include "dtmf-handler.h"
17 #include "dtmf-widget.h"
18
19 struct DtmfHandler::Private
20 {
21 Tp::CallChannelPtr channel;
22 };
23
24 DtmfHandler::DtmfHandler(const Tp::CallChannelPtr & channel, QObject *parent)
25 : QObject(parent), d(new Private)
26 {
27 d->channel = channel;
28 }
29
30 DtmfHandler::~DtmfHandler()
31 {
32 delete d;
33 }
34
35 void DtmfHandler::connectDtmfWidget(DtmfWidget *dtmfWidget)
36 {
37 connect(dtmfWidget, SIGNAL(startSendDtmfEvent(Tp::DTMFEvent)),
38 SLOT(onStartSendDtmfEvent(Tp::DTMFEvent)));
39 connect(dtmfWidget, SIGNAL(stopSendDtmfEvent()),
40 SLOT(onStopSendDtmfEvent()));
41 }
42
43 void DtmfHandler::onStartSendDtmfEvent(Tp::DTMFEvent event)
44 {
45 Q_FOREACH(const Tp::CallContentPtr & content, d->channel->contentsForType(Tp::MediaStreamTypeAudio)) {
46 content->startDTMFTone(event);
47 }
48 }
49
50 void DtmfHandler::onStopSendDtmfEvent()
51 {
52 Q_FOREACH(const Tp::CallContentPtr & content, d->channel->contentsForType(Tp::MediaStreamTypeAudio)) {
53 content->stopDTMFTone();
54 }
55 }
0 /*
1 Copyright (C) 2009 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This program is free software: you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation, either version 2 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #ifndef DTMF_HANDLER_H
17 #define DTMF_HANDLER_H
18
19 #include <TelepathyQt/CallChannel>
20 class DtmfWidget;
21
22 class DtmfHandler : public QObject
23 {
24 Q_OBJECT
25 public:
26 explicit DtmfHandler(const Tp::CallChannelPtr & channel, QObject *parent = 0);
27 virtual ~DtmfHandler();
28
29 void connectDtmfWidget(DtmfWidget *dtmfWidget);
30
31 private Q_SLOTS:
32 void onStartSendDtmfEvent(Tp::DTMFEvent event);
33 void onStopSendDtmfEvent();
34
35 private:
36 struct Private;
37 Private *const d;
38 };
39
40 #endif
0 /*
1 Copyright (C) 2009 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This library is free software; you can redistribute it and/or modify
4 it under the terms of the GNU Lesser General Public License as published
5 by the Free Software Foundation; either version 2.1 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU Lesser General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #include "dtmf-widget.h"
17 #include "ui_dtmf-widget.h"
18 #include <QtCore/QSignalMapper>
19
20 struct DtmfWidget::Private
21 {
22 Ui::DtmfWidget ui;
23 QSignalMapper mapper;
24 };
25
26 DtmfWidget::DtmfWidget(QWidget *parent)
27 : QWidget(parent), d(new Private)
28 {
29 d->ui.setupUi(this);
30 connect(&d->mapper, SIGNAL(mapped(int)), SLOT(onButtonPressed(int)));
31
32 d->mapper.setMapping(d->ui.button0, Tp::DTMFEventDigit0);
33 d->mapper.setMapping(d->ui.button1, Tp::DTMFEventDigit1);
34 d->mapper.setMapping(d->ui.button2, Tp::DTMFEventDigit2);
35 d->mapper.setMapping(d->ui.button3, Tp::DTMFEventDigit3);
36 d->mapper.setMapping(d->ui.button4, Tp::DTMFEventDigit4);
37 d->mapper.setMapping(d->ui.button5, Tp::DTMFEventDigit5);
38 d->mapper.setMapping(d->ui.button6, Tp::DTMFEventDigit6);
39 d->mapper.setMapping(d->ui.button7, Tp::DTMFEventDigit7);
40 d->mapper.setMapping(d->ui.button8, Tp::DTMFEventDigit8);
41 d->mapper.setMapping(d->ui.button9, Tp::DTMFEventDigit9);
42 d->mapper.setMapping(d->ui.buttonAsterisk, Tp::DTMFEventAsterisk);
43 d->mapper.setMapping(d->ui.buttonHash, Tp::DTMFEventHash);
44
45 connect(d->ui.button0, SIGNAL(pressed()), &d->mapper, SLOT(map()));
46 connect(d->ui.button1, SIGNAL(pressed()), &d->mapper, SLOT(map()));
47 connect(d->ui.button2, SIGNAL(pressed()), &d->mapper, SLOT(map()));
48 connect(d->ui.button3, SIGNAL(pressed()), &d->mapper, SLOT(map()));
49 connect(d->ui.button4, SIGNAL(pressed()), &d->mapper, SLOT(map()));
50 connect(d->ui.button5, SIGNAL(pressed()), &d->mapper, SLOT(map()));
51 connect(d->ui.button6, SIGNAL(pressed()), &d->mapper, SLOT(map()));
52 connect(d->ui.button7, SIGNAL(pressed()), &d->mapper, SLOT(map()));
53 connect(d->ui.button8, SIGNAL(pressed()), &d->mapper, SLOT(map()));
54 connect(d->ui.button9, SIGNAL(pressed()), &d->mapper, SLOT(map()));
55 connect(d->ui.buttonAsterisk, SIGNAL(pressed()), &d->mapper, SLOT(map()));
56 connect(d->ui.buttonHash, SIGNAL(pressed()), &d->mapper, SLOT(map()));
57
58 connect(d->ui.button0, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
59 connect(d->ui.button1, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
60 connect(d->ui.button2, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
61 connect(d->ui.button3, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
62 connect(d->ui.button4, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
63 connect(d->ui.button5, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
64 connect(d->ui.button6, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
65 connect(d->ui.button7, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
66 connect(d->ui.button8, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
67 connect(d->ui.button9, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
68 connect(d->ui.buttonAsterisk, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
69 connect(d->ui.buttonHash, SIGNAL(released()), SIGNAL(stopSendDtmfEvent()));
70 }
71
72 DtmfWidget::~DtmfWidget()
73 {
74 delete d;
75 }
76
77 void DtmfWidget::onButtonPressed(int code)
78 {
79 Q_EMIT startSendDtmfEvent(static_cast<Tp::DTMFEvent>(code));
80 }
0 /*
1 Copyright (C) 2009 George Kiagiadakis <kiagiadakis.george@gmail.com>
2
3 This library is free software; you can redistribute it and/or modify
4 it under the terms of the GNU Lesser General Public License as published
5 by the Free Software Foundation; either version 2.1 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU Lesser General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 #ifndef DTMF_WIDGET_H
17 #define DTMF_WIDGET_H
18
19 #include <QtGui/QWidget>
20 #include <TelepathyQt/Constants>
21
22 class DtmfWidget : public QWidget
23 {
24 Q_OBJECT
25 public:
26 explicit DtmfWidget(QWidget *parent = 0);
27 virtual ~DtmfWidget();
28
29 Q_SIGNALS:
30 void startSendDtmfEvent(Tp::DTMFEvent event);
31 void stopSendDtmfEvent();
32
33 private Q_SLOTS:
34 void onButtonPressed(int code);
35
36 private:
37 struct Private;
38 Private *const d;
39 };
40
41 #endif
0 <?xml version="1.0" encoding="UTF-8"?>
1 <ui version="4.0">
2 <class>DtmfWidget</class>
3 <widget class="QWidget" name="DtmfWidget">
4 <property name="geometry">
5 <rect>
6 <x>0</x>
7 <y>0</y>
8 <width>168</width>
9 <height>161</height>
10 </rect>
11 </property>
12 <layout class="QGridLayout">
13 <item row="0" column="0">
14 <widget class="QPushButton" name="button1">
15 <property name="text">
16 <string>1</string>
17 </property>
18 </widget>
19 </item>
20 <item row="0" column="1">
21 <widget class="QPushButton" name="button2">
22 <property name="text">
23 <string>2</string>
24 </property>
25 </widget>
26 </item>
27 <item row="0" column="2">
28 <widget class="QPushButton" name="button3">
29 <property name="text">
30 <string>3</string>
31 </property>
32 </widget>
33 </item>
34 <item row="1" column="0">
35 <widget class="QPushButton" name="button4">
36 <property name="text">
37 <string>4</string>
38 </property>
39 </widget>
40 </item>
41 <item row="1" column="1">
42 <widget class="QPushButton" name="button5">
43 <property name="text">
44 <string>5</string>
45 </property>
46 </widget>
47 </item>
48 <item row="1" column="2">
49 <widget class="QPushButton" name="button6">
50 <property name="text">
51 <string>6</string>
52 </property>
53 </widget>
54 </item>
55 <item row="2" column="0">
56 <widget class="QPushButton" name="button7">
57 <property name="text">
58 <string>7</string>
59 </property>
60 </widget>
61 </item>
62 <item row="2" column="1">
63 <widget class="QPushButton" name="button8">
64 <property name="text">
65 <string>8</string>
66 </property>
67 </widget>
68 </item>
69 <item row="2" column="2">
70 <widget class="QPushButton" name="button9">
71 <property name="text">
72 <string>9</string>
73 </property>
74 </widget>
75 </item>
76 <item row="3" column="0">
77 <widget class="QPushButton" name="buttonAsterisk">
78 <property name="text">
79 <string>*</string>
80 </property>
81 </widget>
82 </item>
83 <item row="3" column="1">
84 <widget class="QPushButton" name="button0">
85 <property name="text">
86 <string>0</string>
87 </property>
88 </widget>
89 </item>
90 <item row="3" column="2">
91 <widget class="QPushButton" name="buttonHash">
92 <property name="text">
93 <string>#</string>
94 </property>
95 </widget>
96 </item>
97 </layout>
98 </widget>
99 <resources/>
100 <connections/>
101 </ui>
0 /*
1 Copyright (C) 2009 George Kiagiadakis <kiagiadakis.george@gmail.com>
2 Copyright (C) 2011 Collabora Ltd.
3 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #include "call-handler.h"
19
20 #include <KAboutData>
21 #include <KCmdLineArgs>
22 #include <KLocalizedString>
23
24 #include <TelepathyQt/Types>
25 #include <TelepathyQt/Debug>
26 #include <TelepathyQt/ClientRegistrar>
27 #include <TelepathyQt/CallChannel>
28 #include <TelepathyQt/ChannelClassSpec>
29 #include <TelepathyQt/ChannelFactory>
30
31 #include <KTp/telepathy-handler-application.h>
32
33 int main(int argc, char **argv)
34 {
35 KAboutData aboutData("ktp-call-ui", 0, ki18n("KDE Telepathy Call Ui"), "0.4",
36 ki18n("VoIP client for KDE"), KAboutData::License_GPL,
37 ki18n("(C) 2009, George Kiagiadakis"));
38 aboutData.setProgramIconName("internet-telephony");
39 aboutData.addAuthor(ki18nc("@info:credit", "George Kiagiadakis"), KLocalizedString(),
40 "kiagiadakis.george@gmail.com");
41
42 KCmdLineArgs::init(argc, argv, &aboutData);
43
44 KTp::TelepathyHandlerApplication app;
45
46 Tp::AccountFactoryPtr accountFactory = Tp::AccountFactory::create(
47 QDBusConnection::sessionBus(),
48 Tp::Features() << Tp::Account::FeatureCore
49 );
50
51 Tp::ConnectionFactoryPtr connectionFactory = Tp::ConnectionFactory::create(
52 QDBusConnection::sessionBus(),
53 Tp::Features() << Tp::Connection::FeatureCore
54 << Tp::Connection::FeatureSelfContact
55 );
56
57 Tp::ChannelFactoryPtr channelFactory = Tp::ChannelFactory::create(
58 QDBusConnection::sessionBus()
59 );
60 channelFactory->addCommonFeatures(Tp::Channel::FeatureCore);
61 channelFactory->addFeaturesForCalls(
62 Tp::Features() << Tp::CallChannel::FeatureContents
63 << Tp::CallChannel::FeatureCallState
64 << Tp::CallChannel::FeatureCallMembers
65 );
66
67 Tp::ContactFactoryPtr contactFactory = Tp::ContactFactory::create(
68 Tp::Features() << Tp::Contact::FeatureAlias
69 << Tp::Contact::FeatureAvatarData
70 );
71
72 KGlobal::ref(); //do not allow the KMainWindow destructor to shut us down
73
74 Tp::ClientRegistrarPtr registrar =
75 Tp::ClientRegistrar::create(accountFactory, connectionFactory,
76 channelFactory, contactFactory);
77
78 Tp::SharedPtr<CallHandler> callHandler = Tp::SharedPtr<CallHandler>(new CallHandler());
79 registrar->registerClient(Tp::AbstractClientPtr::dynamicCast(callHandler), "KTp.CallUi");
80
81 return app.exec();
82 }
0 [D-BUS Service]
1 Name=org.freedesktop.Telepathy.Client.KTp.CallUi
2 Exec=@LIBEXEC_INSTALL_DIR@/ktp-call-ui
0 /*
1 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "status-area.h"
18 #include <KIcon>
19 #include <KDebug>
20
21 StatusArea::StatusArea(KStatusBar *statusBar)
22 : QObject(statusBar), m_statusBar(statusBar)
23 {
24 connect(&m_callDurationTimer, SIGNAL(timeout()), SLOT(onCallDurationTimerTimeout()));
25
26 m_callDuration.setHMS(0, 0, 0);
27 m_statusBar->insertPermanentItem(m_callDuration.toString(), 1);
28
29 m_statusLabel = new QLabel;
30 m_statusBar->addWidget(m_statusLabel);
31 }
32
33 void StatusArea::startDurationTimer()
34 {
35 m_callDurationTimer.start(1000);
36 }
37
38 void StatusArea::stopDurationTimer()
39 {
40 m_callDurationTimer.stop();
41 }
42
43 void StatusArea::setMessage(MessageType type, const QString& message)
44 {
45 if (type == Status) {
46 m_statusLabel->setText(message);
47 } else {
48 kDebug() << "ERROR message:" << message;
49 //TODO handle error messages
50 }
51 }
52
53 void StatusArea::onCallDurationTimerTimeout()
54 {
55 m_callDuration = m_callDuration.addSecs(1);
56 m_statusBar->changeItem(m_callDuration.toString(), 1);
57 }
58
59 void StatusArea::showAudioStatusIcon(bool show)
60 {
61 if (show) {
62 if (!m_audioStatusIcon) {
63 QLabel *label = new QLabel;
64 label->setPixmap(KIcon("audio-headset").pixmap(16));
65 m_audioStatusIcon = label;
66 m_statusBar->insertPermanentWidget(1, m_audioStatusIcon.data());
67 } else {
68 m_statusBar->insertPermanentWidget(1, m_audioStatusIcon.data());
69 m_audioStatusIcon.data()->show();
70 }
71 } else {
72 if (m_audioStatusIcon) {
73 m_statusBar->removeWidget(m_audioStatusIcon.data());
74 }
75 }
76 }
77
78 void StatusArea::showVideoStatusIcon(bool show)
79 {
80 if (show) {
81 if (!m_videoStatusIcon) {
82 QLabel *label = new QLabel;
83 label->setPixmap(KIcon("camera-web").pixmap(16));
84 m_videoStatusIcon = label;
85 m_statusBar->insertPermanentWidget(1, m_videoStatusIcon.data());
86 } else {
87 m_statusBar->insertPermanentWidget(1, m_videoStatusIcon.data());
88 m_videoStatusIcon.data()->show();
89 }
90 } else {
91 if (m_videoStatusIcon) {
92 m_statusBar->removeWidget(m_videoStatusIcon.data());
93 }
94 }
95 }
0 /*
1 Copyright (C) 2010 Collabora Ltd. <info@collabora.co.uk>
2 @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published
6 by the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef STATUS_AREA_H
18 #define STATUS_AREA_H
19
20 #include <QtCore/QObject>
21 #include <QtCore/QTime>
22 #include <QtCore/QTimer>
23 #include <QtCore/QWeakPointer>
24 #include <QtGui/QLabel>
25 #include <KStatusBar>
26
27 class StatusArea : public QObject
28 {
29 Q_OBJECT
30 public:
31 enum MessageType { Status, Error };
32
33 StatusArea(KStatusBar *statusBar);
34
35 public Q_SLOTS:
36 void startDurationTimer();
37 void stopDurationTimer();
38 void setMessage(MessageType type, const QString & message);
39 void showAudioStatusIcon(bool show);
40 void showVideoStatusIcon(bool show);
41
42 private Q_SLOTS:
43 void onCallDurationTimerTimeout();
44
45 private:
46 KStatusBar *m_statusBar;
47 QTime m_callDuration;
48 QTimer m_callDurationTimer;
49 QLabel *m_statusLabel;
50 QWeakPointer<QWidget> m_audioStatusIcon;
51 QWeakPointer<QWidget> m_videoStatusIcon;
52 };
53
54 #endif // STATUS_AREA_H