File indexing completed on 2024-05-12 04:42:18

0001 /*
0002     SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #ifndef OSM_LANGUAGES_H
0007 #define OSM_LANGUAGES_H
0008 
0009 #include "kosm_export.h"
0010 
0011 #include <string>
0012 #include <vector>
0013 
0014 class QLocale;
0015 
0016 namespace OSM {
0017 
0018 /** Languages in preference order to consider when looking up
0019  *  translated tag values.
0020  *  @see https://wiki.openstreetmap.org/wiki/Multilingual_names
0021  *  @see https://wiki.openstreetmap.org/wiki/Key:name#Variants
0022  *  @see https://wiki.openstreetmap.org/wiki/Names#Localization
0023  */
0024 class Languages
0025 {
0026 public:
0027     explicit Languages() = default;
0028     Languages(Languages&&) noexcept = default;
0029     Languages(const Languages&) = delete;
0030     ~Languages() = default;
0031     Languages& operator=(Languages&&) = default;
0032     Languages& operator=(const Languages&) = delete;
0033 
0034     /** Convert QLocale::uiLanguages() into an OSM::Languages set.
0035      *  The result should be cached in case of repeated use,
0036      *  QLocale::uiLanguages() is relatively expensive.
0037      */
0038     [[nodiscard]] KOSM_EXPORT static Languages fromQLocale(const QLocale &locale);
0039 
0040     std::vector<std::string> languages;
0041 };
0042 
0043 }
0044 
0045 #endif