view include/gui/locale.h @ 347:a0aa8c8c4307

dep/anitomy: port to use UCS-4 rather than wide strings rationale: wide strings are not the same on every platform, and might not even be Unicode. (while they usually are, its possible that they are not) I was *going* to change StringToInt to use a string stream, but outputting to an integer doesn't seem to work at all with UCS-4, even though it ought to, so I just rolled my own that uses the arabic digits only.
author Paper <paper@paper.us.eu.org>
date Sun, 23 Jun 2024 10:32:09 -0400
parents b1f625b0227c
children
line wrap: on
line source

#ifndef MINORI_GUI_LOCALE_H_
#define MINORI_GUI_LOCALE_H_

#include <QLocale>
#include <QTranslator>
#include <memory>
#include <string>
#include <vector>

namespace Locale {

std::string GetLocaleFullName(const QLocale& locale);

class Locale {
public:
	Locale();
	Locale(const std::string& name);
	QLocale GetLocale() const;
	std::vector<QLocale> GetAvailableLocales() const;
	void RefreshAvailableLocales(); // why would this ever be called?
	bool IsLocaleAvailable(const QLocale& locale) const;
	bool SetActiveLocale(const QLocale& locale);

private:
	bool SwitchTranslator(QTranslator& translator, const QString& name);

	QTranslator _translator;
	QTranslator _translator_qt;
	QLocale _locale;
	std::vector<QLocale> _available_translations = {};
};

} // namespace Locale

#endif // MINORI_GUI_LOCALE_H_