File indexing completed on 2025-04-27 03:58:36

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2009-06-15
0007  * Description : multi-languages string editor
0008  *
0009  * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  *
0011  * SPDX-License-Identifier: GPL-2.0-or-later
0012  *
0013  * ============================================================ */
0014 
0015 #include "altlangstredit_p.h"
0016 
0017 namespace Digikam
0018 {
0019 
0020 /**
0021  * NOTE: We cannot use KLocale::allLanguagesList() here because KDE only
0022  * support 2 characters country codes. XMP require 2+2 characters language+country
0023  * following RFC 3066.
0024  * The format is based on xx-XX using ISO-639 two-letter code with ISO-3166 two-letter country code.
0025  *
0026  * List version 1       : babelwiki.babelzilla.org/index.php?title=Language_codes
0027  * List version 2 update: xml.coverpages.org/TexinUsingLangID.html
0028  * List version 3 update: List of ISO 639-1 codes (https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
0029  *                        List of ISO 639-2 codes (https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes)
0030  *                        List of ISO 639 macrolanguage (https://en.wikipedia.org/wiki/ISO_639_macrolanguage)
0031  *
0032  * NOTE: this lists of RFC3066 map is also used un conversion map from DOnlineTranslator class.
0033  *       Any changes here must be also backported to DOnlineTranslator class.
0034  */
0035 const LanguageCodeMap s_rfc3066ForXMP =
0036 {
0037     // The first one from the list is the Default Language code specified by XMP paper.
0038 
0039     { QLatin1String("x-default"), kli18nc("@info: country code", "Default Language")                                                },
0040 
0041     // the rest follow the RFC 3066.
0042 
0043     { QLatin1String("af-ZA"),     kli18nc("@info: country code", "Afrikaans (South Africa)")                                        },
0044     { QLatin1String("am-ET"),     kli18nc("@info: country code", "Amharic (Ethiopia)")                                              },
0045     { QLatin1String("apc-TR"),    kli18nc("@info: country code", "North Levantine Arabic (Turkey)")                                 },
0046     { QLatin1String("ar-AE"),     kli18nc("@info: country code", "Arabic (UAE)")                                                    },
0047     { QLatin1String("ar-BH"),     kli18nc("@info: country code", "Arabic (Bahrain)")                                                },
0048     { QLatin1String("ar-DZ"),     kli18nc("@info: country code", "Arabic (Algeria)")                                                },
0049     { QLatin1String("ar-EG"),     kli18nc("@info: country code", "Arabic (Egypt)")                                                  },
0050     { QLatin1String("ar-IQ"),     kli18nc("@info: country code", "Arabic (Iraq)")                                                   },
0051     { QLatin1String("ar-IL"),     kli18nc("@info: country code", "Arabic (Israel)")                                                 },
0052     { QLatin1String("ar-JO"),     kli18nc("@info: country code", "Arabic (Jordan)")                                                 },
0053     { QLatin1String("ar-KW"),     kli18nc("@info: country code", "Arabic (Kuwait)")                                                 },
0054     { QLatin1String("ar-LB"),     kli18nc("@info: country code", "Arabic (Lebanon)")                                                },
0055     { QLatin1String("ar-LY"),     kli18nc("@info: country code", "Arabic (Libya)")                                                  },
0056     { QLatin1String("ar-MA"),     kli18nc("@info: country code", "Arabic (Morocco)")                                                },
0057     { QLatin1String("ar-MR"),     kli18nc("@info: country code", "Arabic (Mauritania)")                                             },
0058     { QLatin1String("ar-PS"),     kli18nc("@info: country code", "Arabic (Palestinian West Bank and Gaza)")                         },
0059     { QLatin1String("ar-OM"),     kli18nc("@info: country code", "Arabic (Oman)")                                                   },
0060     { QLatin1String("ar-QA"),     kli18nc("@info: country code", "Arabic (Qatar)")                                                  },
0061     { QLatin1String("ar-SA"),     kli18nc("@info: country code", "Arabic (Saudi Arabia)")                                           },
0062     { QLatin1String("ar-SD"),     kli18nc("@info: country code", "Arabic (Sudan)")                                                  },
0063     { QLatin1String("ar-SO"),     kli18nc("@info: country code", "Arabic (Somalia)")                                                },
0064     { QLatin1String("ar-SY"),     kli18nc("@info: country code", "Arabic (Syria)")                                                  },
0065     { QLatin1String("ar-TD"),     kli18nc("@info: country code", "Arabic (Chad)")                                                   },
0066     { QLatin1String("ar-TN"),     kli18nc("@info: country code", "Arabic (Tunisia)")                                                },
0067     { QLatin1String("ar-YE"),     kli18nc("@info: country code", "Arabic (Yemen)")                                                  },
0068     { QLatin1String("as-IN"),     kli18nc("@info: country code", "Assamese (India)")                                                },
0069     { QLatin1String("az-AZ"),     kli18nc("@info: country code", "Azerbaijani (Republic of Azerbaijan)")                            },
0070     { QLatin1String("ba-RU"),     kli18nc("@info: country code", "Bashkir (Russia)")                                                },
0071     { QLatin1String("bn-BD"),     kli18nc("@info: country code", "Bengali (Bangladesh)")                                            },
0072     { QLatin1String("bn-IN"),     kli18nc("@info: country code", "Bengali (India)")                                                 },
0073     { QLatin1String("bn-SG"),     kli18nc("@info: country code", "Bengali (Singapore)")                                             },
0074     { QLatin1String("be-BY"),     kli18nc("@info: country code", "Belarusian (Belarus)")                                            },
0075     { QLatin1String("bg-BG"),     kli18nc("@info: country code", "Bulgarian (Bulgaria)")                                            },
0076     { QLatin1String("bn-IN"),     kli18nc("@info: country code", "Bengali (India)")                                                 },
0077     { QLatin1String("bo-BT"),     kli18nc("@info: country code", "Tibetan (Bhutan)")                                                },
0078     { QLatin1String("bo-CN"),     kli18nc("@info: country code", "Tibetan (People's Republic of China)")                            },
0079     { QLatin1String("br-FR"),     kli18nc("@info: country code", "Breton (France)")                                                 },
0080     { QLatin1String("bs-BA"),     kli18nc("@info: country code", "Bosnian (Bosnia and Herzegovina)")                                },
0081     { QLatin1String("bs-BG"),     kli18nc("@info: country code", "Bulgarian (Bulgaria)")                                            },
0082     { QLatin1String("ca-AD"),     kli18nc("@info: country code", "Catalan (Andorra)")                                               },
0083     { QLatin1String("ca-ES"),     kli18nc("@info: country code", "Catalan (Spain)")                                                 },
0084     { QLatin1String("ca-FR"),     kli18nc("@info: country code", "Catalan (France)")                                                },
0085     { QLatin1String("ceb-PH"),    kli18nc("@info: country code", "Cebuano (Philippines)")                                           },
0086     { QLatin1String("ch-GU"),     kli18nc("@info: country code", "Chamorro (Guam)")                                                 },
0087     { QLatin1String("ch-MP"),     kli18nc("@info: country code", "Chamorro (Northern Mariana Islands)")                             },
0088     { QLatin1String("co-FR"),     kli18nc("@info: country code", "Corsican (France)")                                               },
0089     { QLatin1String("cs-CZ"),     kli18nc("@info: country code", "Czech (Czechia)")                                                 },
0090     { QLatin1String("cy-GB"),     kli18nc("@info: country code", "Welsh (United Kingdom)")                                          },
0091     { QLatin1String("da-DK"),     kli18nc("@info: country code", "Danish (Denmark)")                                                },
0092     { QLatin1String("da-GL"),     kli18nc("@info: country code", "Danish (Greenland)")                                              },
0093     { QLatin1String("de-AT"),     kli18nc("@info: country code", "German (Austria)")                                                },
0094     { QLatin1String("de-CH"),     kli18nc("@info: country code", "German (Switzerland)")                                            },
0095     { QLatin1String("de-DE"),     kli18nc("@info: country code", "German (Germany)")                                                },
0096     { QLatin1String("de-DK"),     kli18nc("@info: country code", "German (Denmark)")                                                },
0097     { QLatin1String("de-LI"),     kli18nc("@info: country code", "German (Liechtenstein)")                                          },
0098     { QLatin1String("de-LU"),     kli18nc("@info: country code", "German (Luxembourg)")                                             },
0099     { QLatin1String("el-CY"),     kli18nc("@info: country code", "Greek (Cyprus)")                                                  },
0100     { QLatin1String("el-GR"),     kli18nc("@info: country code", "Greek (Greece)")                                                  },
0101     { QLatin1String("en-AG"),     kli18nc("@info: country code", "English (Antigua and Barbuda)")                                   },
0102     { QLatin1String("en-AI"),     kli18nc("@info: country code", "English (Anguilla)")                                              },
0103     { QLatin1String("en-AS"),     kli18nc("@info: country code", "English (American Samoa)")                                        },
0104     { QLatin1String("en-AU"),     kli18nc("@info: country code", "English (Australia)")                                             },
0105     { QLatin1String("en-BB"),     kli18nc("@info: country code", "English (Barbados)")                                              },
0106     { QLatin1String("en-BM"),     kli18nc("@info: country code", "English (Bermuda)")                                               },
0107     { QLatin1String("en-BN"),     kli18nc("@info: country code", "English (Brunei)")                                                },
0108     { QLatin1String("en-BS"),     kli18nc("@info: country code", "English (Bahamas)")                                               },
0109     { QLatin1String("en-BW"),     kli18nc("@info: country code", "English (Botswana)")                                              },
0110     { QLatin1String("en-BZ"),     kli18nc("@info: country code", "English (Belize)")                                                },
0111     { QLatin1String("en-CA"),     kli18nc("@info: country code", "English (Canada)")                                                },
0112     { QLatin1String("en-CB"),     kli18nc("@info: country code", "English (Caribbean)")                                             },
0113     { QLatin1String("en-CK"),     kli18nc("@info: country code", "English (Cook Islands)")                                          },
0114     { QLatin1String("en-CM"),     kli18nc("@info: country code", "English (Cameroon)")                                              },
0115     { QLatin1String("en-DM"),     kli18nc("@info: country code", "English (Dominica)")                                              },
0116     { QLatin1String("en-ER"),     kli18nc("@info: country code", "English (Eritrea)")                                               },
0117     { QLatin1String("en-ET"),     kli18nc("@info: country code", "English (Ethiopia)")                                              },
0118     { QLatin1String("en-FJ"),     kli18nc("@info: country code", "English (Fiji)")                                                  },
0119     { QLatin1String("en-FK"),     kli18nc("@info: country code", "English (Falkland Islands)")                                      },
0120     { QLatin1String("en-FM"),     kli18nc("@info: country code", "English (Micronesia)")                                            },
0121     { QLatin1String("en-GB"),     kli18nc("@info: country code", "English (United Kingdom)")                                        },
0122     { QLatin1String("en-GD"),     kli18nc("@info: country code", "English (Grenada)")                                               },
0123     { QLatin1String("en-GH"),     kli18nc("@info: country code", "English (Ghana)")                                                 },
0124     { QLatin1String("en-GI"),     kli18nc("@info: country code", "English (Gibraltar)")                                             },
0125     { QLatin1String("en-GM"),     kli18nc("@info: country code", "English (Gambia)")                                                },
0126     { QLatin1String("en-GU"),     kli18nc("@info: country code", "English (Guam)")                                                  },
0127     { QLatin1String("en-GY"),     kli18nc("@info: country code", "English (Guyana)")                                                },
0128     { QLatin1String("en-IE"),     kli18nc("@info: country code", "English (Ireland)")                                               },
0129     { QLatin1String("en-IL"),     kli18nc("@info: country code", "English (Israel)")                                                },
0130     { QLatin1String("en-IN"),     kli18nc("@info: country code", "English (India)")                                                 },
0131     { QLatin1String("en-IO"),     kli18nc("@info: country code", "English (British Indian Ocean Territ)")                           },
0132     { QLatin1String("en-JM"),     kli18nc("@info: country code", "English (Jamaica)")                                               },
0133     { QLatin1String("en-KR"),     kli18nc("@info: country code", "English (Kenya)")                                                 },
0134     { QLatin1String("en-KI"),     kli18nc("@info: country code", "English (Kiribati)")                                              },
0135     { QLatin1String("en-KN"),     kli18nc("@info: country code", "English (St. Kitts-Nevis)")                                       },
0136     { QLatin1String("en-KY"),     kli18nc("@info: country code", "English (Cayman Islands)")                                        },
0137     { QLatin1String("en-LC"),     kli18nc("@info: country code", "English (St. Lucia)")                                             },
0138     { QLatin1String("en-LR"),     kli18nc("@info: country code", "English (Liberia)")                                               },
0139     { QLatin1String("en-LS"),     kli18nc("@info: country code", "English (Lesotho)")                                               },
0140     { QLatin1String("en-MP"),     kli18nc("@info: country code", "English (Northern Mariana Islands)")                              },
0141     { QLatin1String("en-MS"),     kli18nc("@info: country code", "English (Montserrat)")                                            },
0142     { QLatin1String("en-MT"),     kli18nc("@info: country code", "English (Malta)")                                                 },
0143     { QLatin1String("en-MU"),     kli18nc("@info: country code", "English (Mauritius)")                                             },
0144     { QLatin1String("en-MW"),     kli18nc("@info: country code", "English (Malawi)")                                                },
0145     { QLatin1String("en-MY"),     kli18nc("@info: country code", "English (Malaysia)")                                              },
0146     { QLatin1String("en-NA"),     kli18nc("@info: country code", "English (Namibia)")                                               },
0147     { QLatin1String("en-NF"),     kli18nc("@info: country code", "English (Norfolk Island)")                                        },
0148     { QLatin1String("en-NG"),     kli18nc("@info: country code", "English (Nigeria)")                                               },
0149     { QLatin1String("en-NR"),     kli18nc("@info: country code", "English (Nauru)")                                                 },
0150     { QLatin1String("en-NU"),     kli18nc("@info: country code", "English (Niue)")                                                  },
0151     { QLatin1String("en-NZ"),     kli18nc("@info: country code", "English (New Zealand)")                                           },
0152     { QLatin1String("en-PG"),     kli18nc("@info: country code", "English (Papua New Guinea)")                                      },
0153     { QLatin1String("en-PH"),     kli18nc("@info: country code", "English (Philippines)")                                           },
0154     { QLatin1String("en-PK"),     kli18nc("@info: country code", "English (Pakistan)")                                              },
0155     { QLatin1String("en-PN"),     kli18nc("@info: country code", "English (Pitcairn)")                                              },
0156     { QLatin1String("en-PR"),     kli18nc("@info: country code", "English (Puerto Rico)")                                           },
0157     { QLatin1String("en-PW"),     kli18nc("@info: country code", "English (Palau)")                                                 },
0158     { QLatin1String("en-RW"),     kli18nc("@info: country code", "English (Rwanda)")                                                },
0159     { QLatin1String("en-SB"),     kli18nc("@info: country code", "English (Solomon Islands)")                                       },
0160     { QLatin1String("en-SC"),     kli18nc("@info: country code", "English (Seychelles)")                                            },
0161     { QLatin1String("en-SG"),     kli18nc("@info: country code", "English (Singapore)")                                             },
0162     { QLatin1String("en-SH"),     kli18nc("@info: country code", "English (St. Helena)")                                            },
0163     { QLatin1String("en-SL"),     kli18nc("@info: country code", "English (Sierra Leone)")                                          },
0164     { QLatin1String("en-SO"),     kli18nc("@info: country code", "English (Somalia)")                                               },
0165     { QLatin1String("en-SZ"),     kli18nc("@info: country code", "English (Swaziland)")                                             },
0166     { QLatin1String("en-TC"),     kli18nc("@info: country code", "English (Turks and Caicos Islands)")                              },
0167     { QLatin1String("en-TK"),     kli18nc("@info: country code", "English (Tokelau)")                                               },
0168     { QLatin1String("en-TO"),     kli18nc("@info: country code", "English (Tonga)")                                                 },
0169     { QLatin1String("en-TT"),     kli18nc("@info: country code", "English (Trinidad)")                                              },
0170     { QLatin1String("en-UG"),     kli18nc("@info: country code", "English (Uganda)")                                                },
0171     { QLatin1String("en-US"),     kli18nc("@info: country code", "English (United States)")                                         },
0172     { QLatin1String("en-VC"),     kli18nc("@info: country code", "English (St. Vincent and the Grenadi)")                           },
0173     { QLatin1String("en-VG"),     kli18nc("@info: country code", "English (British Virgin Islands)")                                },
0174     { QLatin1String("en-VI"),     kli18nc("@info: country code", "English (U.S. Virgin Islands)")                                   },
0175     { QLatin1String("en-VU"),     kli18nc("@info: country code", "English (Vanuatu)")                                               },
0176     { QLatin1String("en-WS"),     kli18nc("@info: country code", "English (Western Samoa)")                                         },
0177     { QLatin1String("en-ZA"),     kli18nc("@info: country code", "English (South Africa)")                                          },
0178     { QLatin1String("en-ZM"),     kli18nc("@info: country code", "English (Zambia)")                                                },
0179     { QLatin1String("en-ZW"),     kli18nc("@info: country code", "English (Zimbabwe)")                                              },
0180     { QLatin1String("eo-FR"),     kli18nc("@info: country code", "Esperanto (France)")                                              },
0181     { QLatin1String("es-AR"),     kli18nc("@info: country code", "Spanish (Argentina)")                                             },
0182     { QLatin1String("es-BO"),     kli18nc("@info: country code", "Spanish (Bolivia)")                                               },
0183     { QLatin1String("es-CL"),     kli18nc("@info: country code", "Spanish (Chile)")                                                 },
0184     { QLatin1String("es-CO"),     kli18nc("@info: country code", "Spanish (Colombia)")                                              },
0185     { QLatin1String("es-CR"),     kli18nc("@info: country code", "Spanish (Costa Rica)")                                            },
0186     { QLatin1String("es-CU"),     kli18nc("@info: country code", "Spanish (Cuba)")                                                  },
0187     { QLatin1String("es-DO"),     kli18nc("@info: country code", "Spanish (Dominican Republic)")                                    },
0188     { QLatin1String("es-EC"),     kli18nc("@info: country code", "Spanish (Ecuador)")                                               },
0189     { QLatin1String("es-ES"),     kli18nc("@info: country code", "Spanish (Spain)")                                                 },
0190     { QLatin1String("es-GQ"),     kli18nc("@info: country code", "Spanish (Equatorial Guinea)")                                     },
0191     { QLatin1String("es-GT"),     kli18nc("@info: country code", "Spanish (Guatemala)")                                             },
0192     { QLatin1String("es-HN"),     kli18nc("@info: country code", "Spanish (Honduras)")                                              },
0193     { QLatin1String("es-MX"),     kli18nc("@info: country code", "Spanish (Mexico)")                                                },
0194     { QLatin1String("es-NI"),     kli18nc("@info: country code", "Spanish (Nicaragua)")                                             },
0195     { QLatin1String("es-PA"),     kli18nc("@info: country code", "Spanish (Panama)")                                                },
0196     { QLatin1String("es-PE"),     kli18nc("@info: country code", "Spanish (Peru)")                                                  },
0197     { QLatin1String("es-PR"),     kli18nc("@info: country code", "Spanish (Puerto Rico)")                                           },
0198     { QLatin1String("es-PY"),     kli18nc("@info: country code", "Spanish (Paraguay)")                                              },
0199     { QLatin1String("es-SV"),     kli18nc("@info: country code", "Spanish (El Salvador)")                                           },
0200     { QLatin1String("es-US"),     kli18nc("@info: country code", "Spanish (United States)")                                         },
0201     { QLatin1String("es-UY"),     kli18nc("@info: country code", "Spanish (Uruguay)")                                               },
0202     { QLatin1String("es-VE"),     kli18nc("@info: country code", "Spanish (Venezuela)")                                             },
0203     { QLatin1String("et-EE"),     kli18nc("@info: country code", "Estonian (Estonia)")                                              },
0204     { QLatin1String("eu-ES"),     kli18nc("@info: country code", "Basque (Basque Country)")                                         },
0205     { QLatin1String("fa-IR"),     kli18nc("@info: country code", "Persian (Iran)")                                                  },
0206     { QLatin1String("fi-FI"),     kli18nc("@info: country code", "Finnish (Finland)")                                               },
0207     { QLatin1String("fil-PH"),    kli18nc("@info: country code", "Filipino (Philippines)")                                          },
0208     { QLatin1String("fj-FJ"),     kli18nc("@info: country code", "Fijian (Fiji)")                                                   },
0209     { QLatin1String("fo-FO"),     kli18nc("@info: country code", "Faeroese (Faero Islands)")                                        },
0210     { QLatin1String("fr-AD"),     kli18nc("@info: country code", "French (Andorra)")                                                },
0211     { QLatin1String("fr-BE"),     kli18nc("@info: country code", "French (Belgium)")                                                },
0212     { QLatin1String("fr-BF"),     kli18nc("@info: country code", "French (Burkina Faso)")                                           },
0213     { QLatin1String("fr-BI"),     kli18nc("@info: country code", "French (Burundi)")                                                },
0214     { QLatin1String("fr-BJ"),     kli18nc("@info: country code", "French (Benin)")                                                  },
0215     { QLatin1String("fr-CA"),     kli18nc("@info: country code", "French (Canada)")                                                 },
0216     { QLatin1String("fr-CD"),     kli18nc("@info: country code", "French (Democratic Republic of Congo)")                           },
0217     { QLatin1String("fr-CF"),     kli18nc("@info: country code", "French (Central African Republic)")                               },
0218     { QLatin1String("fr-CG"),     kli18nc("@info: country code", "French (Congo)")                                                  },
0219     { QLatin1String("fr-CH"),     kli18nc("@info: country code", "French (Switzerland)")                                            },
0220     { QLatin1String("fr-CI"),     kli18nc("@info: country code", "French (Cote d'Ivoire)")                                          },
0221     { QLatin1String("fr-CM"),     kli18nc("@info: country code", "French (Cameroon)")                                               },
0222     { QLatin1String("fr-DJ"),     kli18nc("@info: country code", "French (Djibouti)")                                               },
0223     { QLatin1String("fr-FR"),     kli18nc("@info: country code", "French (France)")                                                 },
0224     { QLatin1String("fr-GA"),     kli18nc("@info: country code", "French (Gabon)")                                                  },
0225     { QLatin1String("fr-GB"),     kli18nc("@info: country code", "French (United Kingdom)")                                         },
0226     { QLatin1String("fr-GF"),     kli18nc("@info: country code", "French (French Guiana)")                                          },
0227     { QLatin1String("fr-GN"),     kli18nc("@info: country code", "French (Guinea)")                                                 },
0228     { QLatin1String("fr-GP"),     kli18nc("@info: country code", "French (Guadeloupe)")                                             },
0229     { QLatin1String("fr-HT"),     kli18nc("@info: country code", "French (Haiti)")                                                  },
0230     { QLatin1String("fr-IT"),     kli18nc("@info: country code", "French (Italy)")                                                  },
0231     { QLatin1String("fr-KM"),     kli18nc("@info: country code", "French (Comoros Islands)")                                        },
0232     { QLatin1String("fr-LB"),     kli18nc("@info: country code", "French (Lebanon)")                                                },
0233     { QLatin1String("fr-LU"),     kli18nc("@info: country code", "French (Luxembourg)")                                             },
0234     { QLatin1String("fr-MC"),     kli18nc("@info: country code", "French (Monaco)")                                                 },
0235     { QLatin1String("fr-MG"),     kli18nc("@info: country code", "French (Madagascar)")                                             },
0236     { QLatin1String("fr-ML"),     kli18nc("@info: country code", "French (Mali)")                                                   },
0237     { QLatin1String("fr-MQ"),     kli18nc("@info: country code", "French (Martinique)")                                             },
0238     { QLatin1String("fr-NC"),     kli18nc("@info: country code", "French (New Caledonia)")                                          },
0239     { QLatin1String("fr-PF"),     kli18nc("@info: country code", "French (French Polynesia)")                                       },
0240     { QLatin1String("fr-PM"),     kli18nc("@info: country code", "French (St. Pierre and Miquelon)")                                },
0241     { QLatin1String("fr-RE"),     kli18nc("@info: country code", "French (Reunion)")                                                },
0242     { QLatin1String("fr-RW"),     kli18nc("@info: country code", "French (Rwanda)")                                                 },
0243     { QLatin1String("fr-SC"),     kli18nc("@info: country code", "French (Seychelles)")                                             },
0244     { QLatin1String("fr-TD"),     kli18nc("@info: country code", "French (Chad)")                                                   },
0245     { QLatin1String("fr-TG"),     kli18nc("@info: country code", "French (Togo)")                                                   },
0246     { QLatin1String("fr-VU"),     kli18nc("@info: country code", "French (Vanuatu)")                                                },
0247     { QLatin1String("fr-WF"),     kli18nc("@info: country code", "French (Wallis and Futuna)")                                      },
0248     { QLatin1String("fr-YT"),     kli18nc("@info: country code", "French (Mayotte)")                                                },
0249     { QLatin1String("fy-NL"),     kli18nc("@info: country code", "Frisian (Netherlands)")                                           },
0250     { QLatin1String("ga-GB"),     kli18nc("@info: country code", "Irish (United Kingdom)")                                          },
0251     { QLatin1String("ga-IE"),     kli18nc("@info: country code", "Irish (Ireland)")                                                 },
0252     { QLatin1String("gd-GB"),     kli18nc("@info: country code", "Gaelic (United Kingdom)")                                         },
0253     { QLatin1String("gl-ES"),     kli18nc("@info: country code", "Galician (Galicia)")                                              },
0254     { QLatin1String("gu-IN"),     kli18nc("@info: country code", "Gujarati (India)")                                                },
0255     { QLatin1String("gv-GB"),     kli18nc("@info: country code", "Manx (United Kingdom)")                                           },
0256     { QLatin1String("ha-TD"),     kli18nc("@info: country code", "Hausa (Chad)")                                                    },
0257     { QLatin1String("haw-US"),    kli18nc("@info: country code", "Hawaiian (US state of Hawaii)")                                   },
0258     { QLatin1String("he-IL"),     kli18nc("@info: country code", "Modern Hebrew (Israel)")                                          },
0259     { QLatin1String("hi-IN"),     kli18nc("@info: country code", "Hindi (India)")                                                   },
0260     { QLatin1String("hmn-LA"),    kli18nc("@info: country code", "Hmong (Laos)")                                                    },
0261     { QLatin1String("hr-BA"),     kli18nc("@info: country code", "Croatian (Bosnia and Herzegovina, Latin)")                        },
0262     { QLatin1String("hr-HR"),     kli18nc("@info: country code", "Croatian (Croatia)")                                              },
0263     { QLatin1String("ht-FR"),     kli18nc("@info: country code", "Haitian Creole (France)")                                         },
0264     { QLatin1String("hu-HU"),     kli18nc("@info: country code", "Hungarian (Hungary)")                                             },
0265     { QLatin1String("hu-SI"),     kli18nc("@info: country code", "Hungarian (Slovenia)")                                            },
0266     { QLatin1String("hy-AM"),     kli18nc("@info: country code", "Armenian (Armenia)")                                              },
0267     { QLatin1String("id-ID"),     kli18nc("@info: country code", "Indonesian (Bahasa Indonesia)")                                   },
0268     { QLatin1String("ig-NG"),     kli18nc("@info: country code", "Igbo (Nigeria)")                                                  },
0269     { QLatin1String("ii-CN"),     kli18nc("@info: country code", "Sichuan Yi (People's Republic of China)")                         },
0270     { QLatin1String("is-IS"),     kli18nc("@info: country code", "Icelandic (Iceland)")                                             },
0271     { QLatin1String("it-CH"),     kli18nc("@info: country code", "Italian (Switzerland)")                                           },
0272     { QLatin1String("it-HR"),     kli18nc("@info: country code", "Italian (Croatia)")                                               },
0273     { QLatin1String("it-IT"),     kli18nc("@info: country code", "Italian (Italy)")                                                 },
0274     { QLatin1String("it-SI"),     kli18nc("@info: country code", "Italian (Slovenia)")                                              },
0275     { QLatin1String("it-SM"),     kli18nc("@info: country code", "Italian (San Marino)")                                            },
0276     { QLatin1String("iw-IL"),     kli18nc("@info: country code", "Hebrew (Israel)")                                                 },
0277     { QLatin1String("ja-JP"),     kli18nc("@info: country code", "Japanese (Japan)")                                                },
0278     { QLatin1String("jv-ID"),     kli18nc("@info: country code", "Modern Javanese (Indonesia)")                                     },
0279     { QLatin1String("jw-ID"),     kli18nc("@info: country code", "Javanese (Indonesia)")                                            },
0280     { QLatin1String("ka-GE"),     kli18nc("@info: country code", "Georgian (Georgia)")                                              },
0281     { QLatin1String("kk-KZ"),     kli18nc("@info: country code", "Kazakh (Kazakhstan)")                                             },
0282     { QLatin1String("kl-GL"),     kli18nc("@info: country code", "Greenlandic (Greenland)")                                         },
0283     { QLatin1String("km-KH"),     kli18nc("@info: country code", "Khmer (Cambodia)")                                                },
0284     { QLatin1String("kn-IN"),     kli18nc("@info: country code", "Kannada (India)")                                                 },
0285     { QLatin1String("ko-KR"),     kli18nc("@info: country code", "Korean (South Korea)")                                            },
0286     { QLatin1String("ko-KP"),     kli18nc("@info: country code", "Korean (North Korea)")                                            },
0287     { QLatin1String("ky-KG"),     kli18nc("@info: country code", "Kyrgyz (Kyrgyzstan)")                                             },
0288     { QLatin1String("ku-IR"),     kli18nc("@info: country code", "Cornish (United Kingdom)")                                        },
0289     { QLatin1String("kw-GB"),     kli18nc("@info: country code", "Kurdish (Iran)")                                                  },
0290     { QLatin1String("la-IT"),     kli18nc("@info: country code", "Latin (Italy)")                                                   },
0291     { QLatin1String("lb-LU"),     kli18nc("@info: country code", "Luxembourgish (Luxembourg)")                                      },
0292     { QLatin1String("ln-CD"),     kli18nc("@info: country code", "Lingala (Democratic Republic of Congo)")                          },
0293     { QLatin1String("ln-CG"),     kli18nc("@info: country code", "Lingala (Congo)")                                                 },
0294     { QLatin1String("lo-LA"),     kli18nc("@info: country code", "Lao (Lao PDR)")                                                   },
0295     { QLatin1String("lt-LT"),     kli18nc("@info: country code", "Lithuanian (Lithuania)")                                          },
0296     { QLatin1String("lv-LV"),     kli18nc("@info: country code", "Latvian (Latvia)")                                                },
0297     { QLatin1String("mg-MG"),     kli18nc("@info: country code", "Malagasy (Madagascar)")                                           },
0298     { QLatin1String("mhr-RU"),    kli18nc("@info: country code", "Meadow Mari (Russia)")                                            },
0299     { QLatin1String("mi-NZ"),     kli18nc("@info: country code", "Maori (New Zealand)")                                             },
0300     { QLatin1String("mk-MK"),     kli18nc("@info: country code", "Macedonian (Macedonia)")                                          },
0301     { QLatin1String("ml-IN"),     kli18nc("@info: country code", "Malayalam (India)")                                               },
0302     { QLatin1String("mn-CN"),     kli18nc("@info: country code", "Mongolian (People's Republic of China)")                          },
0303     { QLatin1String("mn-MN"),     kli18nc("@info: country code", "Mongolian (Mongolia)")                                            },
0304     { QLatin1String("mr-IN"),     kli18nc("@info: country code", "Marathi (India)")                                                 },
0305     { QLatin1String("mrj-RU"),    kli18nc("@info: country code", "Hill Mari (Russia)")                                              },
0306     { QLatin1String("ms-BN"),     kli18nc("@info: country code", "Malay (Brunei Darussalam)")                                       },
0307     { QLatin1String("ms-MY"),     kli18nc("@info: country code", "Malay (Malaysia)")                                                },
0308     { QLatin1String("ms-SG"),     kli18nc("@info: country code", "Malay (Singapore)")                                               },
0309     { QLatin1String("mt-MT"),     kli18nc("@info: country code", "Maltese (Malta)")                                                 },
0310     { QLatin1String("my-MM"),     kli18nc("@info: country code", "Burmese (Myanmar)")                                               },
0311     { QLatin1String("nb-NO"),     kli18nc("@info: country code", "Norwegian Bokmål (Norway)")                                       },
0312     { QLatin1String("ne-NP"),     kli18nc("@info: country code", "Nepali (Nepal)")                                                  },
0313     { QLatin1String("nl-AN"),     kli18nc("@info: country code", "Dutch (Netherlands Antilles)")                                    },
0314     { QLatin1String("nl-AW"),     kli18nc("@info: country code", "Dutch (Aruba)")                                                   },
0315     { QLatin1String("nl-BE"),     kli18nc("@info: country code", "Dutch (Belgium)")                                                 },
0316     { QLatin1String("nl-NL"),     kli18nc("@info: country code", "Dutch (Netherlands)")                                             },
0317     { QLatin1String("nl-SR"),     kli18nc("@info: country code", "Dutch (Suriname)")                                                },
0318     { QLatin1String("no-NO"),     kli18nc("@info: country code", "Norwegian (Norway)")                                              },
0319     { QLatin1String("nn-NO"),     kli18nc("@info: country code", "Norwegian Nynorsk (Norway)")                                      },
0320     { QLatin1String("ns-ZA"),     kli18nc("@info: country code", "Sesotho sa Leboa (South Africa)")                                 },
0321     { QLatin1String("ny-ZM"),     kli18nc("@info: country code", "Chewa (Zambia)")                                                  },
0322     { QLatin1String("oc-FR"),     kli18nc("@info: country code", "Occitan (France)")                                                },
0323     { QLatin1String("or-IN"),     kli18nc("@info: country code", "Oriya (India)")                                                   },
0324     { QLatin1String("pa-IN"),     kli18nc("@info: country code", "Punjabi (India)")                                                 },
0325     { QLatin1String("pap-AW"),    kli18nc("@info: country code", "Papiamento (Aruba-Dutch Caribbean)")                              },
0326     { QLatin1String("pl-PL"),     kli18nc("@info: country code", "Polish (Poland)")                                                 },
0327     { QLatin1String("ps-AF"),     kli18nc("@info: country code", "Pashto (Afghanistan)")                                            },
0328     { QLatin1String("pt-AO"),     kli18nc("@info: country code", "Portuguese (Angola)")                                             },
0329     { QLatin1String("pt-BR"),     kli18nc("@info: country code", "Portuguese (Brazil)")                                             },
0330     { QLatin1String("pt-CV"),     kli18nc("@info: country code", "Portuguese (Cape Verde Islands)")                                 },
0331     { QLatin1String("pt-GW"),     kli18nc("@info: country code", "Portuguese (Guinea-Bissau)")                                      },
0332     { QLatin1String("pt-MZ"),     kli18nc("@info: country code", "Portuguese (Mozambique)")                                         },
0333     { QLatin1String("pt-PT"),     kli18nc("@info: country code", "Portuguese (Portugal)")                                           },
0334     { QLatin1String("pt-ST"),     kli18nc("@info: country code", "Portuguese (São Tomé e Principe)")                                },
0335     { QLatin1String("otq-MX"),    kli18nc("@info: country code", "Otomi Querétaro (Mexico)")                                        },
0336     { QLatin1String("rm-CH"),     kli18nc("@info: country code", "Romansh (Switzerland)")                                           },
0337     { QLatin1String("ro-RO"),     kli18nc("@info: country code", "Romanian (Romania)")                                              },
0338     { QLatin1String("ru-RU"),     kli18nc("@info: country code", "Russian (Russia)")                                                },
0339     { QLatin1String("rw-RW"),     kli18nc("@info: country code", "Kinyarwanda (Rwanda)")                                            },
0340     { QLatin1String("sa-IN"),     kli18nc("@info: country code", "Sanskrit (India)")                                                },
0341     { QLatin1String("sd-IN"),     kli18nc("@info: country code", "Sindhi (India)")                                                  },
0342     { QLatin1String("sd-PK"),     kli18nc("@info: country code", "Sindhi (Pakistan)")                                               },
0343     { QLatin1String("se-FI"),     kli18nc("@info: country code", "Sami (Northern, Finland)")                                        },
0344     { QLatin1String("se-NO"),     kli18nc("@info: country code", "Sami (Northern, Norway)")                                         },
0345     { QLatin1String("se-SE"),     kli18nc("@info: country code", "Sami (Northern, Sweden)")                                         },
0346     { QLatin1String("si-LK"),     kli18nc("@info: country code", "Sinhala (Sri Lanka)")                                             },
0347     { QLatin1String("sk-SK"),     kli18nc("@info: country code", "Slovak (Slovakia)")                                               },
0348     { QLatin1String("sl-SI"),     kli18nc("@info: country code", "Slovenian (Slovenia)")                                            },
0349     { QLatin1String("sm-WS"),     kli18nc("@info: country code", "Samoan (Samoa)")                                                  },
0350     { QLatin1String("sn-ZW"),     kli18nc("@info: country code", "Shona (Zimbabwe)")                                                },
0351     { QLatin1String("so-SO"),     kli18nc("@info: country code", "Somali  (Somalia)")                                               },
0352     { QLatin1String("sq-AL"),     kli18nc("@info: country code", "Albanian (Albania)")                                              },
0353     { QLatin1String("sr-BA"),     kli18nc("@info: country code", "Serbian (Bosnia-Herzegovina)")                                    },
0354     { QLatin1String("sr-RS"),     kli18nc("@info: country code", "Serbian (Serbia)")                                                },
0355     { QLatin1String("sr-SP"),     kli18nc("@info: country code", "Serbian (Serbia and Montenegro)")                                 },
0356     { QLatin1String("sr-YU"),     kli18nc("@info: country code", "Serbian (Yugoslavia)")                                            },
0357     { QLatin1String("ss-SZ"),     kli18nc("@info: country code", "Swati (Swaziland)")                                               },
0358     { QLatin1String("ss-ZA"),     kli18nc("@info: country code", "Swati (South Africa)")                                            },
0359     { QLatin1String("st-LS"),     kli18nc("@info: country code", "Sotho (Lesotho)")                                                 },
0360     { QLatin1String("su-ID"),     kli18nc("@info: country code", "Sundanese (Indonesia)")                                           },
0361     { QLatin1String("sv-FI"),     kli18nc("@info: country code", "Swedish (Finland)")                                               },
0362     { QLatin1String("sv-SE"),     kli18nc("@info: country code", "Swedish (Sweden)")                                                },
0363     { QLatin1String("sw-KE"),     kli18nc("@info: country code", "Swahili (Kenya)")                                                 },
0364     { QLatin1String("sw-TZ"),     kli18nc("@info: country code", "Swahili (Tanzania)")                                              },
0365     { QLatin1String("ta-IN"),     kli18nc("@info: country code", "Tamil (India)")                                                   },
0366     { QLatin1String("ta-SG"),     kli18nc("@info: country code", "Tamil (Singapore)")                                               },
0367     { QLatin1String("te-IN"),     kli18nc("@info: country code", "Telugu (India)")                                                  },
0368     { QLatin1String("tg-TJ"),     kli18nc("@info: country code", "Tajik (Tajikistan)")                                              },
0369     { QLatin1String("th-TH"),     kli18nc("@info: country code", "Thai (Thailand)")                                                 },
0370     { QLatin1String("tk-TM"),     kli18nc("@info: country code", "Turkmen (Turkmenistan)")                                          },
0371     { QLatin1String("tlh-US"),    kli18nc("@info: country code", "Klingon (US state)")                                              },
0372     { QLatin1String("tl-PH"),     kli18nc("@info: country code", "Tagalog (Philippines)")                                           },
0373     { QLatin1String("tn-BW"),     kli18nc("@info: country code", "Setswana Tswana (Botswana)")                                      },
0374     { QLatin1String("tn-ZA"),     kli18nc("@info: country code", "Setswana Tswana (South Africa)")                                  },
0375     { QLatin1String("to-TO"),     kli18nc("@info: country code", "Tongan (Tonga)")                                                  },
0376     { QLatin1String("tr-BG"),     kli18nc("@info: country code", "Turkish (Bulgaria)")                                              },
0377     { QLatin1String("tr-CY"),     kli18nc("@info: country code", "Turkish (Cyprus)")                                                },
0378     { QLatin1String("tr-TR"),     kli18nc("@info: country code", "Turkish (Turkey)")                                                },
0379     { QLatin1String("tt-RU"),     kli18nc("@info: country code", "Tatar (Russia)")                                                  },
0380     { QLatin1String("ty-PF"),     kli18nc("@info: country code", "Tahitian (French Polynesia)")                                     },
0381     { QLatin1String("udm-RU"),    kli18nc("@info: country code", "Udmurt (Russia)")                                                 },
0382     { QLatin1String("ug-CN"),     kli18nc("@info: country code", "Uighur (People's Republic of China)")                             },
0383     { QLatin1String("uk-UA"),     kli18nc("@info: country code", "Ukrainian (Ukraine)")                                             },
0384     { QLatin1String("ur-IN"),     kli18nc("@info: country code", "Urdu (India)")                                                    },
0385     { QLatin1String("ur-PK"),     kli18nc("@info: country code", "Urdu (Pakistan)")                                                 },
0386     { QLatin1String("uz-UZ"),     kli18nc("@info: country code", "Uzbek (Uzbekistan)")                                              },
0387     { QLatin1String("vi-VN"),     kli18nc("@info: country code", "Vietnamese (Vietnam)")                                            },
0388     { QLatin1String("wo-SN"),     kli18nc("@info: country code", "Wolof (Senegal)")                                                 },
0389     { QLatin1String("xh-ZA"),     kli18nc("@info: country code", "IsiXhosa Xhosa (South Africa)")                                   },
0390     { QLatin1String("yi-DE"),     kli18nc("@info: country code", "Yiddish (Germany)")                                               },
0391     { QLatin1String("yo-NG"),     kli18nc("@info: country code", "Yoruba (Nigeria)")                                                },
0392     { QLatin1String("yua-MX"),    kli18nc("@info: country code", "Yucatec Maya (Mexico)")                                           },
0393     { QLatin1String("zh-CN"),     kli18nc("@info: country code", "Chinese (People's Republic of China)")                            },
0394     { QLatin1String("zh-HK"),     kli18nc("@info: country code", "Chinese (Hong Kong SAR, People's Republic of China)")             },
0395     { QLatin1String("zh-MO"),     kli18nc("@info: country code", "Chinese (Macao SAR)")                                             },
0396     { QLatin1String("zh-SG"),     kli18nc("@info: country code", "Chinese (Singapore)")                                             },
0397     { QLatin1String("zh-TW"),     kli18nc("@info: country code", "Chinese (Taiwan)")                                                },
0398     { QLatin1String("zn-CH"),     kli18nc("@info: country code", "Simplified Chinese (People's Republic of China)")                 },
0399     { QLatin1String("zu-ZA"),     kli18nc("@info: country code", "isiZulu Zulu (South Africa)")                                     }
0400 };
0401 
0402 } // namespace Digikam