1/* This file is part of the KDE libraries
2 SPDX-FileCopyrightText: 2001 Hans Petter Bieker <bieker@kde.org>
3 SPDX-FileCopyrightText: 2012, 2013 Chusslove Illich <caslav.ilic@gmx.net>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KCATALOG_H
9#define KCATALOG_H
10
11#include "ki18n_export.h"
12
13#include <QByteArray>
14#include <QSet>
15#include <QString>
16#include <memory>
17
18class KCatalogPrivate;
19
20/*!
21 * This class abstracts a Gettext message catalog.
22 * It takes care of needed Gettext bindings.
23 *
24 * \sa KLocalizedString
25 * \internal exported only for use in KI18nLocaleData.
26 */
27class KI18N_EXPORT KCatalog
28{
29public:
30 /*!
31 * Constructor.
32 *
33 * \a name translation domain
34 *
35 * \a language translation language
36 */
37 KCatalog(const QByteArray &domain, const QString &language);
38
39 /*!
40 * Destructor.
41 */
42 ~KCatalog();
43
44 /*!
45 * Get translation of the given message text.
46 *
47 * Do not pass empty message text.
48 *
49 * \a msgid message text
50 *
51 * Returns translated message if found, QString() otherwise
52 */
53 QString translate(const QByteArray &msgid) const;
54
55 /*!
56 * Get translation of the given message text with given context.
57 *
58 * Do not pass empty message text.
59 *
60 * \a msgctxt message context
61 *
62 * \a msgid message text
63 *
64 * Returns translated message if found, QString() otherwise
65 */
66 QString translate(const QByteArray &msgctxt, const QByteArray &msgid) const;
67
68 /*!
69 * Get translation of given message with plural forms.
70 *
71 * Do not pass empty message text.
72 *
73 * \a msgid singular message text
74 *
75 * \a msgid_plural plural message text
76 *
77 * \a n number for which the plural form is needed
78 *
79 * Returns translated message if found, QString() otherwise
80 */
81 QString translate(const QByteArray &msgid, const QByteArray &msgid_plural, qulonglong n) const;
82
83 /*!
84 * Get translation of given message with plural forms with given context.
85 *
86 * Do not pass empty message text.
87 *
88 * \a msgctxt message context
89 *
90 * \a msgid singular message text
91 *
92 * \a msgid_plural plural message text
93 *
94 * \a n number for which the plural form is needed
95 *
96 * Returns translated message if found, QString() otherwise
97 */
98 QString translate(const QByteArray &msgctxt, const QByteArray &msgid, const QByteArray &msgid_plural, qulonglong n) const;
99
100 /*!
101 * Find the locale directory for the given domain in the given language.
102 *
103 * \a domain translation domain
104 *
105 * \a language language of the catalog
106 *
107 * Returns the locale directory if found, QByteArray() otherwise.
108 */
109 static QString catalogLocaleDir(const QByteArray &domain, const QString &language);
110
111 /*!
112 * Find the all languages for which the translation catalog
113 * of given domain exists.
114 *
115 * \a domain translation domain
116 *
117 * Returns set of language codes
118 */
119 static QSet<QString> availableCatalogLanguages(const QByteArray &domain);
120
121 static void addDomainLocaleDir(const QByteArray &domain, const QString &path);
122
123private:
124 Q_DISABLE_COPY(KCatalog)
125
126 std::unique_ptr<KCatalogPrivate> const d;
127};
128
129#endif
130

source code of ki18n/src/i18n/kcatalog_p.h