pidgin/gtkdialogs.c

changeset 38668
0a70225da9da
parent 38579
5adc6901ac54
child 39138
99c0f6e30bb1
child 39146
af0a3b8c0354
equal deleted inserted replaced
38667:f8ae2ff1c19b 38668:0a70225da9da
53 struct _PidginGroupMergeObject { 53 struct _PidginGroupMergeObject {
54 PurpleGroup* parent; 54 PurpleGroup* parent;
55 char *new_name; 55 char *new_name;
56 }; 56 };
57 57
58 struct developer {
59 char *name;
60 char *role;
61 char *email;
62 };
63
64 struct translator {
65 char *language;
66 char *abbr;
67 char *name;
68 char *email;
69 };
70
71 struct artist {
72 char *name;
73 char *email;
74 };
75
76 /* Order: Alphabetical by Last Name */
77 static const struct developer developers[] = {
78 {"Daniel 'datallah' Atallah", NULL, NULL},
79 {"Paul 'darkrain42' Aurich", NULL, NULL},
80 {"Ethan 'Paco-Paco' Blanton", NULL, NULL},
81 {"Hylke Bons", N_("artist"), "hylkebons@gmail.com"},
82 {"Sadrul Habib Chowdhury", NULL, NULL},
83 {"Gary 'grim' Kramlich", NULL, "grim@pidgin.im"},
84 {"Richard 'rlaager' Laager", NULL, "rlaager@pidgin.im"},
85 {"Marcus 'malu' Lundblad", NULL, NULL},
86 {"Sulabh 'sulabh_m' Mahajan", NULL, NULL},
87 {"Richard 'wabz' Nelson", NULL, NULL},
88 {"Etan 'deryni' Reisner", NULL, NULL},
89 {"Michael 'Maiku' Ruprecht", N_("voice and video"), NULL},
90 {"Elliott 'QuLogic' Sales de Andrade", NULL, NULL},
91 {"Luke 'LSchiere' Schierer", N_("support"), "lschiere@users.sf.net"},
92 {"Evan Schoenberg", NULL, NULL},
93 {"Kevin 'SimGuy' Stange", N_("webmaster"), NULL},
94 {"Will 'resiak' Thompson", NULL, NULL},
95 {"Stu 'nosnilmot' Tomlinson", NULL, NULL},
96 {"Jorge 'Masca' Villaseñor", NULL, NULL},
97 {"Tomasz Wasilczyk", NULL, "https://www.wasilczyk.pl"},
98 {NULL, NULL, NULL}
99 };
100
101 /* Order: Alphabetical by Last Name */
102 static const struct developer patch_writers[] = {
103 {"Jakub 'haakon' Adam", NULL, NULL},
104 {"Krzysztof Klinikowski", NULL, NULL},
105 {"Eion Robb", NULL, NULL},
106 {"Ankit Vani", NULL, NULL},
107 {NULL, NULL, NULL}
108 };
109
110 /* Order: Alphabetical by Last Name */
111 static const struct developer retired_developers[] = {
112 {"John 'rekkanoryo' Bailey", NULL, NULL},
113 {"Herman Bloggs", N_("win32 port"), "herman@bluedigits.com"},
114 {"Thomas Butter", NULL, NULL},
115 /* Translators: This is a person's name. For most languages we recommend
116 not translating it. */
117 {N_("Ka-Hing Cheung"), NULL, NULL},
118 {"Mark 'KingAnt' Doliner", NULL, "mark@kingant.net"},
119 {"Jim Duchek", N_("maintainer"), "jim@linuxpimps.com"},
120 {"Sean Egan", NULL, "sean.egan@gmail.com"},
121 {"Rob Flynn", N_("maintainer"), NULL},
122 {"Adam Fritzler", N_("libfaim maintainer"), NULL},
123 {"Christian 'ChipX86' Hammond", N_("webmaster"), NULL},
124 {"Casey Harkins", NULL, NULL},
125 {"Ivan Komarov", NULL, "ivan.komarov@pidgin.im"},
126 /* If "lazy bum" translates literally into a serious insult, use something else or omit it. */
127 {"Syd Logan", N_("hacker and designated driver [lazy bum]"), NULL},
128 {"Christopher 'siege' O'Brien", NULL, "taliesein@users.sf.net"},
129 {"Bartosz Oler", NULL, NULL},
130 {"Tim 'marv' Ringenbach", NULL, NULL},
131 {"Megan 'Cae' Schneider", N_("support/QA"), NULL},
132 {"Jim Seymour", N_("XMPP"), NULL},
133 {"Mark Spencer", N_("original author"), "markster@marko.net"},
134 {"Nathan 'faceprint' Walp", NULL, NULL},
135 {"Eric Warmenhoven", N_("lead developer"), "warmenhoven@yahoo.com"},
136 {NULL, NULL, NULL}
137 };
138
139 /* Order: Alphabetical by Last Name */
140 static const struct developer retired_patch_writers[] = {
141 {"Felipe 'shx' Contreras", NULL, NULL},
142 {"Decklin Foster", NULL, NULL},
143 {"Peter 'Bleeter' Lawler", NULL, NULL},
144 {"Robert 'Robot101' McQueen", NULL, NULL},
145 {"Benjamin Miller", NULL, NULL},
146 {"Dennis 'EvilDennisR' Ristuccia", N_("Senior Contributor/QA"), NULL},
147 {"Peter 'Fmoo' Ruibal", NULL, NULL},
148 {"Gabriel 'Nix' Schulhof", NULL, NULL},
149 {NULL, NULL, NULL}
150 };
151
152 /* Order: Code, then Alphabetical by Last Name
153 Use NULL language and code for secondary translators. */
154 static const struct translator translators[] = {
155 {N_("Afrikaans"), "af", "Samuel Murray", "afrikaans@gmail.com"},
156 {NULL, NULL, "Friedel Wolff", "friedel@translate.org.za"},
157 {N_("Arabic"), "ar", "Khaled Hosny", "khaledhosny@eglug.org"},
158 {N_("Assamese"), "as", "Amitakhya Phukan", "aphukan@fedoraproject.org"},
159 {N_("Asturian"), "ast", "Llumex03", "l.lumex03.tornes@gmail.com"},
160 {N_("Belarusian Latin"), "be@latin", "Ihar Hrachyshka", "ihar.hrachyshka@gmail.com"},
161 {N_("Bulgarian"), "bg", "Vladimira Girginova", "missing@here.is"},
162 {NULL, NULL, "Vladimir (Kaladan) Petkov", "kaladan@gmail.com"},
163 {N_("Bengali"), "bn", "Jamil Ahmed", "jamil@bengalinux.org"},
164 {NULL, NULL, "Israt Jahan", "israt@ankur.org.bd"},
165 {NULL, NULL, "Samia Nimatullah", "mailsamia2001@yahoo.com"},
166 {N_("Bengali-India"), "bn_IN", "Runa Bhattacharjee", "runab@fedoraproject.org"},
167 {N_("Breton"), "br", "Gwenn Meynier", "tornoz@laposte.net"},
168 {N_("Bodo"), "brx", "Chandrakant Dhutadmal", "cpdhutadmal@yahoo.com"},
169 {N_("Bosnian"), "bs", "Lejla Hadzialic", "lejlah@gmail.com"},
170 {N_("Catalan"), "ca", "Josep Puigdemont", "josep.puigdemont@gmail.com"},
171 {N_("Valencian-Catalan"), "ca@valencia", "Toni Hermoso", "toniher@softcatala.org"},
172 {NULL, NULL, "Josep Puigdemont", "tradgnome@softcatala.org"},
173 {N_("Czech"), "cs", "David Vachulka", "david@konstrukce-cad.com"},
174 {N_("Danish"), "da", "Nicky Thomassen", "nicky@aptget.dk"},
175 {N_("German"), "de", "Björn Voigt", "bjoernv@arcor.de"},
176 {N_("Dzongkha"), "dz", "Norbu", "nor_den@hotmail.com"},
177 {NULL, NULL, "Jurmey Rabgay", "jur_gay@yahoo.com"},
178 {NULL, NULL, "Wangmo Sherpa", "rinwanshe@yahoo.com"},
179 {N_("Greek"), "el", "Katsaloulis Panayotis", "panayotis@panayotis.com"},
180 {NULL, NULL, "Panos Bouklis", "panos@echidna-band.com"},
181 {N_("Australian English"), "en_AU", "Michael Findlay", "keltoiboy@gmail.com"},
182 {N_("British English"), "en_GB", "Phil Hannent", "phil@hannent.co.uk"},
183 {N_("Canadian English"), "en_CA", "Adam Weinberger", "adamw@gnome.org"},
184 {N_("Esperanto"), "eo", "Stéphane Fillod", "fillods@users.sourceforge.net"},
185 {N_("Spanish"), "es", "Javier Fernández-Sanguino Peña", "jfs@debian.org"},
186 {N_("Argentine Spanish"), "es_AR", "KNTRO", "kntro@msn.com"},
187 {N_("Estonian"), "et", "Ivar Smolin", "okul@linux.ee"},
188 {N_("Basque"), "eu", "Mikel Pascual Aldabaldetreku", "mikel.paskual@gmail.com"},
189 {N_("Persian"), "fa", "Elnaz Sarbar", "elnaz@farsiweb.info"},
190 {NULL, NULL, "Roozbeh Pournader", "roozbeh@farsiweb.info"},
191 {NULL, NULL, "Meelad Zakaria", "meelad@farsiweb.info"},
192 {N_("Finnish"), "fi", "Timo Jyrinki", "timo.jyrinki@iki.fi"},
193 {N_("Irish"), "ga", "Aaron Kearns", "ajkearns6@gmail.com"},
194 {N_("Irish"), "ga", "Kevin Scannell", NULL},
195 {N_("Galician"), "gl", "Mar Castro", "mariamarcp@gmail.com"},
196 {NULL, NULL, "Frco. Javier Rial", "fjrial@cesga.es"},
197 {N_("Gujarati"), "gu", "Ankit Patel", "ankit_patel@users.sf.net"},
198 {NULL, NULL, N_("Gujarati Language Team"), "indianoss-gujarati@lists.sourceforge.net"},
199 {N_("Hebrew"), "he", "Shalom Craimer", "scraimer@gmail.com"},
200 {N_("Hindi"), "hi", "Sangeeta Kumari", "sangeeta_0975@yahoo.com"},
201 {NULL, NULL, "Rajesh Ranjan", "rajeshkajha@yahoo.com"},
202 {N_("Croatian"), "hr", "Sabina Drempetić", "bina91991@googlemail.com"},
203 {N_("Hungarian"), "hu", "Kelemen Gábor", "kelemeng@gnome.hu"},
204 {N_("Indonesian"), "id", "Rai S. Regawa", "raireg@yahoo.com"},
205 {N_("Italian"), "it", "Claudio Satriano", "satriano@gmail.com"},
206 {N_("Japanese"), "ja", "Takayuki Kusano", "AE5T-KSN@asahi-net.or.jp"},
207 {N_("Georgian"), "ka", N_("Ubuntu Georgian Translators"), "alexander.didebulidze@stusta.mhn.de"},
208 {N_("Kazakh"), "kk", "Baurzhan Muftakhidinov", "baurthefirst@gmail.com"},
209 {N_("Khmer"), "km", "Khoem Sokhem", "khoemsokhem@khmeros.info"},
210 {N_("Kannada"), "kn", N_("Kannada Translation team"), "translation@sampada.info"},
211 {N_("Korean"), "ko", "Sushizang", "sushizang@empal.com"},
212 {N_("Kashmiri"), "kas", "Chandrakant Dhutadmal", "cpdhutadmal@yahoo.com"},
213 {N_("Kurdish"), "ku", "Amed Ç. Jiyan", "amedcj@hotmail.com"},
214 {NULL, NULL, "Erdal Ronahi", "erdal.ronahi@gmail.com"},
215 {NULL, NULL, "Rizoyê Xerzî", "rizoxerzi@hotmail.com"},
216 {N_("Kurdish (Sorani)"), "ku_IQ", "Haval A. Ahmed", "haval.abdulkarim@gmail.com"},
217 {N_("Lithuanian"), "lt", "Algimantas Margevičius", "margevicius.algimantas@gmail.com"},
218 {N_("Latvian"), "lv", "Rudolfs Mazurs", "rudolfs.mazurs@gmail.com"},
219 {N_("Latvian"), "lv", "Ingmārs Dīriņš", "melhiors14@gmail.com"},
220 {N_("Maithili"), "mai", "Sangeeta Kumari", "sangeeta_0975@yahoo.com"},
221 {NULL, NULL, "Rajesh Ranjan", "rajeshkajha@yahoo.com"},
222 {N_("Meadow Mari"), "mhr", "David Preece", "davidpreece1@gmail.com"},
223 {N_("Macedonian"), "mk", "Arangel Angov ", "arangel@linux.net.mk"},
224 {NULL, NULL, "Ivana Kirkovska", "ivana.kirkovska@gmail.com"},
225 {NULL, NULL, "Jovan Naumovski", "jovan@lugola.net"},
226 {N_("Malayalam"), "ml", "Ani Peter", "apeter@redhat.com"},
227 {N_("Mongolian"), "mn", "gooyo", NULL},
228 {N_("Marathi"), "mr", "Sandeep Shedmake", "sandeep.shedmake@gmail.com"},
229 {N_("Malay"), "ms_MY", "abuyop", "abuyop@gmail.com"},
230 {N_("Burmese"), "my_MM", "Thura Hlaing", "trhura@gmail.com"},
231 {N_("Bokmål Norwegian"), "nb", "Allan Nordhøy", "epost@anotheragency.no"},
232 {N_("Nepali"), "ne", "Saroj Dhakal", "lotusnagarkot@gmail.com"},
233 {N_("Dutch, Flemish"), "nl", "Gideon van Melle", "translations@gvmelle.com"},
234 {N_("Norwegian Nynorsk"), "nn", "Yngve Spjeld Landro", "l10n@landro.net"},
235 {N_("Occitan"), "oc", "Cédric Valmary", "cvalmary@yahoo.fr"},
236 {N_("Oriya"), "or", "Manoj Kumar Giri", "giri.manojkr@gmail.com"},
237 {N_("Punjabi"), "pa", "Amanpreet Singh Alam", "aalam@users.sf.net"},
238 {N_("Polish"), "pl", "Piotr Drąg", "piotrdrag@gmail.com"},
239 {N_("Portuguese"), "pt", "Paulo Ribeiro", "paulo@diffraction.pt"},
240 {N_("Portuguese-Brazil"), "pt_BR", "Renato Silva", "br.renatosilva@gmail.com"},
241 {N_("Pashto"), "ps", "Kashif Masood", "masudmails@yahoo.com"},
242 {N_("Romanian"), "ro", "Mișu Moldovan", "dumol@gnome.org"},
243 {NULL, NULL, "Andrei Popescu", "andreimpopescu@gmail.com"},
244 {N_("Russian"), "ru", "Антон Самохвалов", "samant.ua@mail.ru"},
245 {N_("Sindhi"), "sd", "Chandrakant Dhutadmal", "cpdhutadmal@yahoo.com"},
246 {N_("Slovak"), "sk", "Jozef Káčer", "quickparser@gmail.com"},
247 {NULL, NULL, "loptosko", "loptosko@gmail.com"},
248 {N_("Slovenian"), "sl", "Martin Srebotnjak", "miles@filmsi.net"},
249 {N_("Albanian"), "sq", "Besnik Bleta", "besnik@programeshqip.org"},
250 {N_("Serbian"), "sr", "Miloš Popović", "gpopac@gmail.com"},
251 {N_("Serbian Latin"), "sr@latin", "Miloš Popović", "gpopac@gmail.com"},
252 {N_("Sinhala"), "si", "Yajith Ajantha Dayarathna", "yajith@gmail.com"},
253 {NULL, NULL, "Danishka Navin", "snavin@redhat.com"},
254 {N_("Swedish"), "sv", "Josef Andersson", "josef.andersson@gmail.com"},
255 {N_("Swahili"), "sw", "Paul Msegeya", "msegeya@gmail.com"},
256 {N_("Tamil"), "ta", "I. Felix", "ifelix25@gmail.com"},
257 {NULL, NULL, "Viveka Nathan K", "vivekanathan@users.sourceforge.net"},
258 {N_("Telugu"), "te", "Krishnababu Krottapalli", "krottapalli@ymail.com"},
259 {N_("Thai"), "th", "Isriya Paireepairit", "markpeak@gmail.com"},
260 {N_("Tatar"), "tt", "ILDAR Valeev", "v_ildar@bk.ru"},
261 {N_("Ukranian"), "uk", "Oleksandr Kovalenko", "alx.kovalenko@gmail.com"},
262 {N_("Urdu"), "ur", "RKVS Raman", "rkvsraman@gmail.com"},
263 {N_("Uzbek"), "uz",
264 /* Translators: This is a person's name. For most languages we recommend
265 not translating it. */
266 N_("Akmal Khushvakov"), "uzbadmin@gmail.com"},
267 {N_("Vietnamese"), "vi", "Nguyễn Vũ Hưng", "vuhung16plus@gmail.com"},
268 {N_("Simplified Chinese"), "zh_CN", "Aron Xu", "happyaron.xu@gmail.com"},
269 {N_("Hong Kong Chinese"), "zh_HK", "Abel Cheung", "abelindsay@gmail.com"},
270 {NULL, NULL, "Ambrose C. Li", "acli@ada.dhs.org"},
271 {NULL, NULL, "Paladin R. Liu", "paladin@ms1.hinet.net"},
272 {N_("Traditional Chinese"), "zh_TW", "Ambrose C. Li", "acli@ada.dhs.org"},
273 {NULL, NULL, "Paladin R. Liu", "paladin@ms1.hinet.net"},
274 {NULL, NULL, NULL, NULL}
275 };
276
277
278 static const struct translator past_translators[] = {
279 {N_("Amharic"), "am", "Daniel Yacob", NULL},
280 {N_("Arabic"), "ar", "Mohamed Magdy", NULL},
281 {N_("Bulgarian"), "bg", "Hristo Todorov", NULL},
282 {N_("Bengali"), "bn", "Indranil Das Gupta", NULL},
283 {NULL, NULL, "Tisa Nafisa", NULL},
284 {N_("Catalan"), "ca", "JM Pérez Cáncer", NULL},
285 {NULL, NULL, "Robert Millan", NULL},
286 {N_("Czech"), "cs", "Honza Král", NULL},
287 {NULL, NULL, "Miloslav Trmac", NULL},
288 {N_("Danish"), "da", "Peter Bach", NULL},
289 {NULL, NULL, "Morten Brix Pedersen", NULL},
290 {N_("German"), "de", "Daniel Seifert", NULL},
291 {NULL, NULL, "Karsten Weiss", NULL},
292 {NULL, NULL, "Jochen Kemnade", NULL},
293 {N_("Australian English"), "en_AU", "Peter Lawler", NULL},
294 {N_("British English"), "en_GB", "Luke Ross", NULL},
295 {N_("Spanish"), "es", "JM Pérez Cáncer", NULL},
296 {NULL, NULL, "Nicolás Lichtmaier", NULL},
297 {NULL, NULL, "Amaya Rodrigo", NULL},
298 {NULL, NULL, "Alejandro G Villar", NULL},
299 {N_("Basque"), "eu", "Iñaki Larrañaga Murgoitio", NULL},
300 {NULL, NULL, "Hizkuntza Politikarako Sailburuordetza", NULL},
301 {N_("Finnish"), "fi", "Arto Alakulju", NULL},
302 {NULL, NULL, "Tero Kuusela", NULL},
303 {N_("French"), "fr", "Sébastien François", NULL},
304 {NULL, NULL, "Loïc Jeannin", NULL},
305 {NULL, NULL, "Stéphane Pontier", NULL},
306 {NULL, NULL, "Stéphane Wirtel", NULL},
307 {NULL, NULL, "Éric Boumaour", NULL},
308 {N_("Galician"), "gl", "Ignacio Casal Quinteiro", NULL},
309 {N_("Hebrew"), "he", "Pavel Bibergal", NULL},
310 {N_("Hindi"), "hi", "Ravishankar Shrivastava", NULL},
311 {N_("Hungarian"), "hu", "Zoltan Sutto", NULL},
312 {N_("Armenian"), "hy", "David Avsharyan", NULL},
313 {N_("Italian"), "it", "Salvatore di Maggio", NULL},
314 {N_("Japanese"), "ja", "Takashi Aihana", NULL},
315 {NULL, NULL, "Ryosuke Kutsuna", NULL},
316 {NULL, NULL, "Junichi Uekawa", NULL},
317 {NULL, NULL, "Taku Yasui", NULL},
318 {N_("Georgian"), "ka", "Temuri Doghonadze", NULL},
319 {N_("Korean"), "ko", "Sang-hyun S", NULL},
320 {NULL, NULL, "A Ho-seok Lee", NULL},
321 {NULL, NULL, "Kyeong-uk Son", NULL},
322 {N_("Lao"), "lo", "Anousak Souphavah", NULL},
323 {N_("Lithuanian"), "lt", "Laurynas Biveinis", NULL},
324 {NULL, NULL, "Gediminas Čičinskas", NULL},
325 {NULL, NULL, "Andrius Štikonas", NULL},
326 {N_("Macedonian"), "mk", "Tomislav Markovski", NULL},
327 {N_("Malay"), "ms_MY", "Muhammad Najmi bin Ahmad Zabidi", NULL},
328 {N_("Bokmål Norwegian"), "nb", "Hans Fredrik Nordhaug", NULL},
329 {NULL, NULL, "Hallvard Glad", NULL},
330 {NULL, NULL, "Petter Johan Olsen", NULL},
331 {NULL, NULL, "Espen Stefansen", NULL},
332 {N_("Nepali"), "ne", "Shyam Krishna Bal", NULL},
333 {N_("Dutch, Flemish"), "nl", "Vincent van Adrighem", NULL},
334 {N_("Occitan"), "oc", "Yannig Marchegay", NULL},
335 {N_("Polish"), "pl", "Krzysztof Foltman", NULL},
336 {NULL, NULL, "Paweł Godlewski", NULL},
337 {NULL, NULL, "Piotr Makowski", NULL},
338 {NULL, NULL, "Emil Nowak", NULL},
339 {NULL, NULL, "Przemysław Sułek", NULL},
340 {N_("Portuguese"), "pt", "Duarte Henriques", NULL},
341 {N_("Portuguese-Brazil"), "pt_BR", "Maurício de Lemos Rodrigues Collares Neto", NULL},
342 {N_("Portuguese-Brazil"), "pt_BR", "Rodrigo Luiz Marques Flores", NULL},
343 {N_("Russian"), "ru", "Dmitry Beloglazov", NULL},
344 {NULL, NULL, "Alexandre Prokoudine", NULL},
345 {NULL, NULL, "Sergey Volozhanin", NULL},
346 {N_("Slovak"), "sk", "Daniel Režný", NULL},
347 {NULL, NULL, "Richard Golier", NULL},
348 {NULL, NULL, "helix84", NULL},
349 {N_("Slovenian"), "sl", "Matjaz Horvat", NULL},
350 {N_("Serbian"), "sr", "Danilo Šegan", NULL},
351 {NULL, NULL, "Aleksandar Urosevic", NULL},
352 {N_("Swedish"), "sv", "Peter Hjalmarsson", NULL},
353 {N_("Swedish"), NULL, "Tore Lundqvist", NULL},
354 {NULL, NULL, "Christian Rose", NULL},
355 {N_("Telugu"), "te", "Mr. Subbaramaih", NULL},
356 {N_("Turkish"), "tr", "Serdar Soytetir", NULL},
357 {NULL, "tr", "Ahmet Alp Balkan", NULL},
358 {N_("Vietnamese"), "vi", N_("T.M.Thanh and the Gnome-Vi Team"), NULL},
359 {N_("Simplified Chinese"), "zh_CN", "Hashao", NULL},
360 {NULL, NULL, "Rocky S. Lee", NULL},
361 {NULL, NULL, "Funda Wang", NULL},
362 {N_("Traditional Chinese"), "zh_TW", "Hashao", NULL},
363 {NULL, NULL, "Rocky S. Lee", NULL},
364 {NULL, NULL, NULL, NULL}
365 };
366
367 static void
368 add_developers(GString *str, const struct developer *list)
369 {
370 for (; list->name != NULL; list++) {
371 if (list->email != NULL) {
372 const gchar *proto = "mailto:";
373 if (strchr(list->email, ':') != NULL)
374 proto = "";
375 g_string_append_printf(str,
376 "<li><a href=\"%s%s\" title=\"%s\">%s</a>%s%s%s</li>",
377 proto,
378 list->email, list->email, _(list->name),
379 list->role ? " (" : "",
380 list->role ? _(list->role) : "",
381 list->role ? ")" : "");
382 } else {
383 g_string_append_printf(str, "<li>%s%s%s%s</li>",
384 _(list->name),
385 list->role ? " (" : "",
386 list->role ? _(list->role) : "",
387 list->role ? ")" : "");
388 }
389 }
390 }
391
392 static void
393 add_translators(GString *str, const struct translator *list)
394 {
395 for (; list->name != NULL; list++) {
396 if (list->language && list->abbr) {
397 g_string_append_printf(str, "<dt>%s (%s)</dt>",
398 _(list->language), list->abbr);
399 }
400 if (list->email != NULL) {
401 g_string_append_printf(str,
402 "<dd><a href=\"mailto:%s\" title=\"%s\">%s</a></dd>",
403 list->email, list->email,
404 _(list->name));
405 } else {
406 g_string_append_printf(str, "<dd>%s</dd>", _(list->name));
407 }
408 }
409 }
410
411 void 58 void
412 pidgin_dialogs_destroy_all() 59 pidgin_dialogs_destroy_all()
413 { 60 {
414 while (dialogwindows) { 61 while (dialogwindows) {
415 gtk_widget_destroy(dialogwindows->data); 62 gtk_widget_destroy(dialogwindows->data);
511 gtk_window_present(GTK_WINDOW(win)); 158 gtk_window_present(GTK_WINDOW(win));
512 159
513 g_string_free(string, TRUE); 160 g_string_free(string, TRUE);
514 161
515 return win; 162 return win;
516 }
517
518 void pidgin_dialogs_about(void)
519 {
520 GString *str;
521 char *tmp;
522 static GtkWidget *about = NULL;
523
524 if (about != NULL) {
525 gtk_window_present(GTK_WINDOW(about));
526 return;
527 }
528
529 str = g_string_sized_new(4096);
530
531 g_string_append_printf(str,
532 "<h2>%s %s</h2>"
533 "<strong>(libpurple %s)<br/>%s</strong>",
534 PIDGIN_NAME, DISPLAY_VERSION,
535 purple_core_get_version(), REVISION);
536
537 g_string_append_printf(str,
538 _("<p>%s is a messaging client based on libpurple which is capable of "
539 "connecting to multiple messaging services at once. %s is written "
540 "in C using GTK+. %s is released, and may be modified and "
541 "redistributed, under the terms of the GPL version 2 (or later). "
542 "A copy of the GPL is distributed with %s. %s is copyrighted by "
543 "its contributors, a list of whom is also distributed with %s. "
544 "There is no warranty for %s.</p>"), PIDGIN_NAME, PIDGIN_NAME,
545 PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME);
546
547 g_string_append_printf(str,
548 _("<h3>Helpful Resources</h3>"
549 "<ul>"
550 "<li><a href=\"%s\" title=\"%s\">Website</a></li>"
551 "<li><a href=\"%s\" title=\"%s\">Frequently Asked Questions</a></li>"
552 "<li>IRC Channel: #pidgin on irc.freenode.net</li>"
553 "<li>XMPP MUC: devel@conference.pidgin.im</li>"
554 "</ul>"),
555 PURPLE_WEBSITE, PURPLE_WEBSITE,
556 "https://developer.pidgin.im/wiki/FAQ",
557 "https://developer.pidgin.im/wiki/FAQ");
558
559 g_string_append(str,
560 "<p><strong>Help for Oracle Employees</strong> is "
561 "available from your normal internal helpdesk or IT department. "
562 "The Pidgin developer and user communities cannot assist you in "
563 "the configuration or use of Pidgin within Oracle, as we know "
564 "nothing of Oracle's infrastructure.</p>");
565
566 g_string_append_printf(str,
567 _("<p><strong>Help from other Pidgin users</strong> is available "
568 "by e-mailing <a href=\"mailto:%s\">%s</a>.<br/>"
569 "This is a <strong>public</strong> mailing list! "
570 "(<a href=\"%s\" title=\"%s\">archive</a>)<br/>"
571 "We can't help with third-party protocols or plugins!<br/>"
572 "This list's primary language is English. You "
573 "are welcome to post in another language, but the responses may "
574 "be less helpful.</p>"),
575 "support@pidgin.im", "support@pidgin.im",
576 "https://pidgin.im/pipermail/support/",
577 "https://pidgin.im/pipermail/support/");
578
579 tmp = g_strdup_printf(_("About %s"), PIDGIN_NAME);
580 about = pidgin_build_help_dialog(tmp, "about", str);
581 g_signal_connect(G_OBJECT(about), "destroy", G_CALLBACK(gtk_widget_destroyed), &about);
582 g_free(tmp);
583 }
584
585 void pidgin_dialogs_buildinfo(void)
586 {
587 GString *str;
588 char *tmp;
589 static GtkWidget *buildinfo = NULL;
590
591 if (buildinfo != NULL) {
592 gtk_window_present(GTK_WINDOW(buildinfo));
593 return;
594 }
595
596 str = g_string_sized_new(4096);
597
598 g_string_append_printf(str,
599 "<h2>%s %s</h2>"
600 "<strong>(libpurple %s)<br/>%s</strong>",
601 PIDGIN_NAME, DISPLAY_VERSION, purple_core_get_version(), REVISION);
602
603 g_string_append_printf(str, "<h3>%s</h3><dl>", _("Build Information"));
604
605 /* The following is primarily intended for user/developer interaction and
606 thus ought not be translated */
607
608 #ifdef CONFIG_ARGS /* win32 build doesn't use configure */
609 g_string_append(str, "<dt>Arguments to <em>./configure</em>:</dt><dd>" CONFIG_ARGS "</dd>");
610 #endif
611 #ifdef MESON_ARGS
612 g_string_append(str, "<dt>Arguments to <em>meson</em>:</dt><dd>" MESON_ARGS "</dd>");
613 #endif
614
615 #ifndef _WIN32
616 #ifdef DEBUG
617 g_string_append(str, "<dt>Print debugging messages:</dt><dd>Yes</dd>");
618 #else
619 g_string_append(str, "<dt>Print debugging messages:</dt><dd>No</dd>");
620 #endif
621 #endif
622
623 #ifdef PURPLE_PLUGINS
624 g_string_append(str, "<dt>Plugins:</dt><dd>Enabled</dd>");
625 #else
626 g_string_append(str, "<dt>Plugins:</dt><dd>Disabled</dd>");
627 #endif
628
629 g_string_append(str, "<dt>SSL:</dt><dd>SSL support is present.</dd>");
630
631 g_string_append_printf(str, "<dt>GTK+ Runtime:</dt><dd>%u.%u.%u</dd>"
632 "<dt>GLib Runtime:</dt><dd>%u.%u.%u</dd>",
633 gtk_major_version, gtk_minor_version, gtk_micro_version,
634 glib_major_version, glib_minor_version, glib_micro_version);
635
636 g_string_append(str, "</dl><h3>Library Support</h3><dl>");
637
638 #ifdef HAVE_CYRUS_SASL
639 g_string_append_printf(str, "<dt>Cyrus SASL:</dt><dd>Enabled</dd>");
640 #else
641 g_string_append_printf(str, "<dt>Cyrus SASL:</dt><dd>Disabled</dd>");
642 #endif
643
644 #ifndef _WIN32
645 #ifdef HAVE_DBUS
646 g_string_append_printf(str, "<dt>D-Bus:</dt><dd>Enabled</dd>");
647 #else
648 g_string_append_printf(str, "<dt>D-Bus:</dt><dd>Disabled</dd>");
649 #endif
650
651 #ifdef HAVE_EVOLUTION_ADDRESSBOOK
652 g_string_append_printf(str, "<dt>Evolution Addressbook:</dt><dd>Enabled</dd>");
653 #else
654 g_string_append_printf(str, "<dt>Evolution Addressbook:</dt><dd>Disabled</dd>");
655 #endif
656 #endif
657
658 #ifdef HAVE_LIBGADU
659 g_string_append(str, "<dt>Gadu-Gadu library (libgadu):</dt><dd>External</dd>");
660 #else
661 g_string_append(str, "<dt>Gadu-Gadu library (libgadu):</dt><dd>Internal</dd>");
662 #endif
663
664 #ifdef HAVE_GNUTLS
665 g_string_append(str, "<dt>GnuTLS:</dt><dd>Enabled</dd>");
666 #else
667 g_string_append(str, "<dt>GnuTLS:</dt><dd>Disabled</dd>");
668 #endif
669
670 #ifdef USE_GSTREAMER
671 tmp = gst_version_string();
672 g_string_append_printf(str, "<dt>GStreamer:</dt><dd>%s</dd>", tmp);
673 g_free(tmp);
674 #else
675 g_string_append(str, "<dt>GStreamer:</dt><dd>Disabled</dd>");
676 #endif
677
678 #ifndef _WIN32
679 #ifdef ENABLE_MONO
680 g_string_append(str, "<dt>Mono:</dt><dd>Enabled</dd>");
681 #else
682 g_string_append(str, "<dt>Mono:</dt><dd>Disabled</dd>");
683 #endif
684 #endif
685
686 #ifdef HAVE_NSS
687 g_string_append(str, "<dt>Network Security Services (NSS):</dt><dd>Enabled</dd>");
688 #else
689 g_string_append(str, "<dt>Network Security Services (NSS):</dt><dd>Disabled</dd>");
690 #endif
691
692 #ifdef USE_IDN
693 g_string_append(str, "<dt>UTF-8 DNS (IDN):</dt><dd>Enabled</dd>");
694 #else
695 g_string_append(str, "<dt>UTF-8 DNS (IDN):</dt><dd>Disabled</dd>");
696 #endif
697
698 #ifdef USE_VV
699 g_string_append(str, "<dt>Voice and Video:</dt><dd>Enabled</dd>");
700 #else
701 g_string_append(str, "<dt>Voice and Video:</dt><dd>Disabled</dd>");
702 #endif
703
704 #ifndef _WIN32
705 #ifdef LIBZEPHYR_EXT
706 g_string_append(str, "<dt>Zephyr library (libzephyr):</dt><dd>External</dd>");
707 #else
708 g_string_append(str, "<dt>Zephyr library (libzephyr):</dt><dd>Internal</dd>");
709 #endif
710
711 #ifdef ZEPHYR_USES_KERBEROS
712 g_string_append(str, "<dt>Zephyr uses Kerberos:</dt><dd>Yes</dd>");
713 #else
714 g_string_append(str, "<dt>Zephyr uses Kerberos:</dt><dd>No</dd>");
715 #endif
716 #endif
717
718 g_string_append(str, "</dl>");
719
720 /* End of not to be translated section */
721
722 tmp = g_strdup_printf(_("%s Build Information"), PIDGIN_NAME);
723 buildinfo = pidgin_build_help_dialog(tmp, "buildinfo", str);
724 g_signal_connect(G_OBJECT(buildinfo), "destroy", G_CALLBACK(gtk_widget_destroyed), &buildinfo);
725 g_free(tmp);
726 }
727
728 void pidgin_dialogs_developers(void)
729 {
730 GString *str;
731 char *tmp;
732 static GtkWidget *developer_info = NULL;
733
734 if (developer_info != NULL) {
735 gtk_window_present(GTK_WINDOW(developer_info));
736 return;
737 }
738
739 str = g_string_sized_new(4096);
740
741 /* Current Developers */
742 g_string_append_printf(str, "<h3>%s</h3><ul>",
743 _("Current Developers"));
744 add_developers(str, developers);
745 g_string_append(str, "</ul>");
746
747 /* Crazy Patch Writers */
748 g_string_append_printf(str, "<h3>%s</h3><ul>",
749 _("Crazy Patch Writers"));
750 add_developers(str, patch_writers);
751 g_string_append(str, "</ul>");
752
753 /* Retired Developers */
754 g_string_append_printf(str, "<h3>%s</h3><ul>",
755 _("Retired Developers"));
756 add_developers(str, retired_developers);
757 g_string_append(str, "</ul>");
758
759 /* Retired Crazy Patch Writers */
760 g_string_append_printf(str, "<h3>%s</h3><ul>",
761 _("Retired Crazy Patch Writers"));
762 add_developers(str, retired_patch_writers);
763 g_string_append(str, "</ul>");
764
765 tmp = g_strdup_printf(_("%s Developer Information"), PIDGIN_NAME);
766 developer_info = pidgin_build_help_dialog(tmp, "developer_info", str);
767 g_signal_connect(G_OBJECT(developer_info), "destroy", G_CALLBACK(gtk_widget_destroyed), &developer_info);
768 g_free(tmp);
769 }
770
771 void pidgin_dialogs_translators(void)
772 {
773 GString *str;
774 char *tmp;
775 static GtkWidget *translator_info = NULL;
776
777 if (translator_info != NULL) {
778 gtk_window_present(GTK_WINDOW(translator_info));
779 return;
780 }
781
782 str = g_string_sized_new(4096);
783
784 /* Current Translators */
785 g_string_append_printf(str, "<h3>%s</h3><dl>",
786 _("Current Translators"));
787 add_translators(str, translators);
788 g_string_append(str, "</dl>");
789
790 /* Past Translators */
791 g_string_append_printf(str, "<h3>%s</h3><dl>",
792 _("Past Translators"));
793 add_translators(str, past_translators);
794 g_string_append(str, "</dl>");
795
796 tmp = g_strdup_printf(_("%s Translator Information"), PIDGIN_NAME);
797 translator_info = pidgin_build_help_dialog(tmp, "translator_info", str);
798 g_signal_connect(G_OBJECT(translator_info), "destroy", G_CALLBACK(gtk_widget_destroyed), &translator_info);
799 g_free(tmp);
800 } 163 }
801 164
802 void pidgin_dialogs_plugins_info(void) 165 void pidgin_dialogs_plugins_info(void)
803 { 166 {
804 GString *str; 167 GString *str;

mercurial