mumble-voip_mumble/src/mumble/Translations.h

49 lines
1.5 KiB
C++

// Copyright 2021-2023 The Mumble Developers. All rights reserved.
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file at the root of the
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
#ifndef MUMBLE_MUMBLE_TRANSLATIONS_H_
#define MUMBLE_MUMBLE_TRANSLATIONS_H_
#include <QStringList>
class QApplication;
class QLocale;
class QTranslator;
namespace Mumble {
namespace Translations {
/**
* A lifetime guard for translators. Basically a smart-pointer for an ensemble of translators
*/
struct LifetimeGuard {
QTranslator *m_bundledTranslator = nullptr;
QTranslator *m_overwriteTranslator = nullptr;
QTranslator *m_qtTranslator = nullptr;
LifetimeGuard() = default;
LifetimeGuard(LifetimeGuard &&old);
LifetimeGuard(const LifetimeGuard &) = delete;
~LifetimeGuard();
};
QStringList getDefaultTranslationDirectories();
QStringList getTranslationDirectories(const QApplication &app, const QStringList &extraDirectories);
/**
* Installs translators for the given locale to the given application. If extraDirectories are provided,
* they will be used for the overwrite translator.
*
* @returns The lifetime guard of the created translators. This object must not be destroyed before
* the given application has terminated.
*/
LifetimeGuard installTranslators(const QLocale &locale, QApplication &app, const QStringList &extraDirectories);
} // namespace Translations
} // namespace Mumble
#endif // MUMBLE_MUMBLE_TRANSLATIONS_H_