| 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; |