Cutelyst  3.5.0
langselect.h
1 /*
2  * SPDX-FileCopyrightText: (C) 2018-2022 Matthias Fehring <mf@huessenbergnetz.de>
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef C_UTILS_LANGSELECT_H
7 #define C_UTILS_LANGSELECT_H
8 
9 #include <Cutelyst/cutelyst_global.h>
10 #include <Cutelyst/plugin.h>
11 #include <QVector>
12 #include <QLocale>
13 
14 namespace Cutelyst {
15 
34 class Context;
35 class LangSelectPrivate;
36 
299 class CUTELYST_PLUGIN_UTILS_LANGSELECT_EXPORT LangSelect : public Plugin
300 {
301  Q_OBJECT
302  Q_DECLARE_PRIVATE(LangSelect)
303 public:
307  enum Source : quint8 {
308  URLQuery = 0,
309  Session = 1,
310  Cookie = 2,
311  SubDomain = 3,
312  Domain = 4,
313  AcceptHeader = 254,
314  Fallback = 255
315  };
316  Q_ENUM(Source)
317 
318 
328  LangSelect(Application *parent, Source source);
329 
336  LangSelect(Application *parent);
337 
341  virtual ~LangSelect() override;
342 
350  void setSupportedLocales(const QVector<QLocale> &locales);
351 
358  void setSupportedLocales(const QStringList &locales);
359 
364  void addSupportedLocale(const QLocale &locale);
365 
371  void addSupportedLocale(const QString &locale);
372 
395  void setLocalesFromDir(const QString &path, const QString &name, const QString &prefix = QStringLiteral("."), const QString &suffix = QStringLiteral(".qm"));
396 
418  void setLocalesFromDirs(const QString &path, const QString &name);
419 
424  QVector<QLocale> supportedLocales() const;
425 
429  void setQueryKey(const QString &key);
430 
434  void setSessionKey(const QString &key);
435 
439  void setCookieName(const QString &name);
440 
446  void setSubDomainMap(const QMap<QString,QLocale> &map);
447 
453  void setDomainMap(const QMap<QString,QLocale> &map);
454 
458  void setFallbackLocale(const QLocale &fallback);
459 
465  void setDetectFromHeader(bool enabled);
466 
470  void setLanguageCodeStashKey(const QString &key = QStringLiteral("c_langselect_lang"));
471 
476  void setLanguageDirStashKey(const QString &key = QStringLiteral("c_langselect_dir"));
477 
482  static QVector<QLocale> getSupportedLocales();
483 
501  static bool fromUrlQuery(Context *c, const QString &key = QString());
502 
518  static bool fromSession(Context *c, const QString &key = QString());
519 
535  static bool fromCookie(Context *c, const QString &name = QString());
536 
550  static bool fromSubDomain(Context *c, const QMap<QString, QLocale> &subDomainMap = QMap<QString, QLocale>());
551 
565  static bool fromDomain(Context *c, const QMap<QString, QLocale> &domainMap = QMap<QString, QLocale>());
566 
581  static bool fromPath(Context *c, const QString &locale);
582 
583 protected:
590  virtual bool setup(Application *app) override;
591 
592 private:
593  LangSelectPrivate *const d_ptr;
594 };
595 
596 }
597 
598 #endif // C_UTILS_LANGSELECT_H
The Cutelyst Context.
Definition: context.h:38
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:7
Language selection plugin.
Definition: langselect.h:299
The Cutelyst Application.
Definition: application.h:42