CuteHMI - CuteHMI (CuteHMI.2)
cutehmi::Internationalizer Class Reference

Internationalization singleton. More...

#include <cutehmi/Internationalizer.hpp>

Inheritance diagram for cutehmi::Internationalizer:
QObject cutehmi::Singleton< Internationalizer > cutehmi::NonCopyable cutehmi::NonMovable CuteHMI::Internationalizer

Signals

void uiLanguageChanged ()
 User interface language has changed. More...
 

Public Member Functions

QString uiLanguage () const
 Get user interface language. More...
 
void setUILanguage (const QString &uiLanguage)
 Set user interface language. More...
 
Q_INVOKABLE void loadQtTranslation ()
 Load Qt translation. More...
 
Q_INVOKABLE void unloadQtTranslation ()
 Unload Qt translation. More...
 
Q_INVOKABLE void loadTranslation (const QString &product, bool dependencies=true)
 Load translation of %CuteHMI product. More...
 
Q_INVOKABLE void unloadTranslation (const QString &product)
 Unload translations of a specific product. More...
 
Q_INVOKABLE void unloadTranslations (bool qt=true)
 Unload loaded translations. More...
 
Q_INVOKABLE QStringList standardTranslationDirectories () const
 Get standard translation directories. More...
 
Q_INVOKABLE QStringList additionalTranslationDirectories () const
 Get additional translation directories. More...
 
Q_INVOKABLE void setAdditionalTranslationDirectories (const QStringList &additionalDirectories)
 Set additional translation directories. More...
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
virtual void * qt_metacast (const char *)
 
virtual int qt_metacall (QMetaObject::Call, int, void **)
 
 QObject (QObject *parent)
 
virtual ~QObject ()
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectList & children () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 

Properties

QString uiLanguage
 User interface language. More...
 
- Properties inherited from QObject
 objectName
 

Friends

class Singleton< Internationalizer >
 
class test_Internationalizer
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Static Public Member Functions inherited from cutehmi::Singleton< Internationalizer >
static InternationalizerInstance ()
 Get instance. More...
 
static void Destroy ()
 Destroy instance. More...
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
- Protected Member Functions inherited from cutehmi::Singleton< Internationalizer >
 Singleton ()
 Default constructor. More...
 
virtual ~Singleton ()
 Destructor. More...
 
- Protected Member Functions inherited from cutehmi::NonCopyable
 NonCopyable ()=default
 
 NonCopyable (NonCopyable &&other)=default
 
 ~NonCopyable ()=default
 
NonCopyableoperator= (NonCopyable &&other)=default
 
- Protected Member Functions inherited from cutehmi::NonMovable
 NonMovable ()=default
 
- Static Protected Member Functions inherited from cutehmi::Singleton< Internationalizer >
static std::unique_ptr< Internationalizer > & InstancePtr ()
 Get instance pointer. More...
 

Detailed Description

Internationalization singleton.

Member Function Documentation

◆ additionalTranslationDirectories()

QStringList cutehmi::Internationalizer::additionalTranslationDirectories ( ) const

Get additional translation directories.

Returns
list of additional translation directories. By default this list is empty.
See also
setAdditionalTranslationDirectories().

◆ loadQtTranslation()

void cutehmi::Internationalizer::loadQtTranslation ( )

Load Qt translation.

◆ loadTranslation()

void cutehmi::Internationalizer::loadTranslation ( const QString product,
bool  dependencies = true 
)

Load translation of %CuteHMI product.

Typically product is an extension, but the function can be also used to load translation of a tool or even a test.

In order to load a translation function looks at various directories as returned by standardTranslationDirectories() function. The directories are searched in the same order as they appear in the list. Additional directories can be specified by setAdditionalTranslationDirectories() function. Additional directories take precedence over standard ones.

To obtain the stem of the translation file, product name is lowercased and all the dots are replaced with hyphens, thus for example CuteHMI.2 becomes cutehmi-2. After that several file suffixes are tested in each of the translation directories as specified by QTranslator::load() function and "_qt.qm" suffix is used to satisfy KDE internationalization framework convention. For example, for CuteHMI.2 product any of the following translation files will match en-US translation: cutehmi-2.qm, cutehmi-2_en.qm, cutehmi-2_en_US.qm, cutehmi-2.en.qm, cutehmi-2.en_US.qm, cutehmi-2_qt.qm, cutehmi-2_en_qt.qm, cutehmi-2_en_US_qt.qm, cutehmi-2.en_qt.qm, cutehmi-2.en_US_qt.qm.

Parameters
productproduct name.
dependenciesdenotes if translations of product dependencies should be loaded as well. Dependency information is retrieved from metadata, so it is important to specify appropriate dependencies in Qbs file.

◆ setAdditionalTranslationDirectories()

void cutehmi::Internationalizer::setAdditionalTranslationDirectories ( const QStringList additionalDirectories)

Set additional translation directories.

Parameters
additionalDirectoriesadditional directories, where translation files may reside.
See also
additionalTranslationDirectories(), standardTranslationDirectories().

◆ setUILanguage()

void cutehmi::Internationalizer::setUILanguage ( const QString uiLanguage)

Set user interface language.

Parameters
uiLanguagelanguage to be currently used.

◆ standardTranslationDirectories()

QStringList cutehmi::Internationalizer::standardTranslationDirectories ( ) const

Get standard translation directories.

The list is composed of following entries:

  • CuteHMI-specific "translations" subdirectory.
  • In an attempt to satisfy gettext convention, path specified by LOCPATH environmental variable followed by {langdir}/LC_MESSAGES is used. The {langdir} subdirectory is obtained from uiLanguage passed through QLocale::uiLanguages() function. Hyphens are replaced by underscores, so that en-US becomes en_US.
  • In an attempt to satisfy gettext convention, directories specified by XDG_DATA_HOME environmental variable followed by /locale/{langdir}/LC_MESSAGES are used. If XDG_DATA_HOME has not been set, HOME/.local/share is being used. The {langdir} subdirectory is obtained in the same way as above.
  • In an attempt to satisfy gettext convention, directories specified by XDG_DATA_DIRS environmental variable followed by /locale/{langdir}/LC_MESSAGES are used. If XDG_DATA_DIRS has not been set, usr/local/share/ and /usr/share/ are used. The {langdir} subdirectory is obtained in the same way as above.
    Returns
    list of standard translation directories.
  • Directories returned by QLibraryInfo::location(QLibraryInfo::TranslationsPath) are used.
See also
additionalTranslationDirectories().

◆ uiLanguage()

QString cutehmi::Internationalizer::uiLanguage ( ) const

Get user interface language.

Returns
currently used user interface language.

◆ uiLanguageChanged

void cutehmi::Internationalizer::uiLanguageChanged ( )
signal

User interface language has changed.

◆ unloadQtTranslation()

void cutehmi::Internationalizer::unloadQtTranslation ( )

Unload Qt translation.

◆ unloadTranslation()

void cutehmi::Internationalizer::unloadTranslation ( const QString product)

Unload translations of a specific product.

Parameters
productproduct name.

◆ unloadTranslations()

void cutehmi::Internationalizer::unloadTranslations ( bool  qt = true)

Unload loaded translations.

Function unloads any previously loaded translation of a product and optionally Qt translation.

Parameters
qtwhether to unload Qt translation. If set to true, Qt translation will be unloaded.

Friends And Related Function Documentation

◆ Singleton< Internationalizer >

friend class Singleton< Internationalizer >
friend

◆ test_Internationalizer

friend class test_Internationalizer
friend

Property Documentation

◆ uiLanguage

QString cutehmi::Internationalizer::uiLanguage
readwrite

User interface language.