summaryrefslogtreecommitdiffstats
path: root/xbmc/guilib/LocalizeStrings.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/guilib/LocalizeStrings.h')
-rw-r--r--xbmc/guilib/LocalizeStrings.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/xbmc/guilib/LocalizeStrings.h b/xbmc/guilib/LocalizeStrings.h
new file mode 100644
index 0000000..8d73cf5
--- /dev/null
+++ b/xbmc/guilib/LocalizeStrings.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2005-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+/*!
+\file LocalizeStrings.h
+\brief
+*/
+
+#include "threads/SharedSection.h"
+#include "utils/ILocalizer.h"
+
+#include <map>
+#include <stdint.h>
+#include <string>
+
+/*!
+ \ingroup strings
+ \brief
+ */
+
+struct LocStr
+{
+ std::string strTranslated; // string to be used in xbmc GUI
+ std::string strOriginal; // the original English string the translation is based on
+};
+
+// The default fallback language is fixed to be English
+const std::string LANGUAGE_DEFAULT = "resource.language.en_gb";
+const std::string LANGUAGE_OLD_DEFAULT = "English";
+
+class CLocalizeStrings : public ILocalizer
+{
+public:
+ CLocalizeStrings(void);
+ ~CLocalizeStrings(void) override;
+ bool Load(const std::string& strPathName, const std::string& strLanguage);
+ bool LoadSkinStrings(const std::string& path, const std::string& language);
+ bool LoadAddonStrings(const std::string& path, const std::string& language, const std::string& addonId);
+ void ClearSkinStrings();
+ const std::string& Get(uint32_t code) const;
+ std::string GetAddonString(const std::string& addonId, uint32_t code);
+ void Clear();
+
+ // implementation of ILocalizer
+ std::string Localize(std::uint32_t code) const override { return Get(code); }
+
+protected:
+ void Clear(uint32_t start, uint32_t end);
+
+ std::map<uint32_t, LocStr> m_strings;
+ std::map<std::string, std::map<uint32_t, LocStr>> m_addonStrings;
+ typedef std::map<uint32_t, LocStr>::const_iterator ciStrings;
+ typedef std::map<uint32_t, LocStr>::iterator iStrings;
+
+ mutable CSharedSection m_stringsMutex;
+ CSharedSection m_addonStringsMutex;
+};
+
+/*!
+ \ingroup strings
+ \brief
+ */
+extern CLocalizeStrings g_localizeStrings;
+extern CLocalizeStrings g_localizeStringsTemp;
+