Plasma Engine  2.0
Loading...
Searching...
No Matches
TranslationLookup.h
1#pragma once
2
3#include <Foundation/Basics.h>
4#include <Foundation/Containers/DynamicArray.h>
5#include <Foundation/Containers/Map.h>
6#include <Foundation/Strings/String.h>
7#include <Foundation/Types/UniquePtr.h>
8
10enum class plTranslationUsage
11{
12 Default,
13 Tooltip,
14 HelpURL,
15
16 ENUM_COUNT
17};
18
20class PL_FOUNDATION_DLL plTranslator
21{
22public:
24 virtual ~plTranslator();
25
27 virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) = 0;
28
30 virtual void Reset();
31
33 virtual void Reload();
34
36 static void ReloadAllTranslators();
37
38 static void HighlightUntranslated(bool bHighlight);
39
40 static bool GetHighlightUntranslated() { return s_bHighlightUntranslated; }
41
42private:
43 static bool s_bHighlightUntranslated;
44 static plHybridArray<plTranslator*, 4> s_AllTranslators;
45};
46
48class PL_FOUNDATION_DLL plTranslatorPassThrough : public plTranslator
49{
50public:
51 virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) override { return sString; }
52};
53
56class PL_FOUNDATION_DLL plTranslatorStorage : public plTranslator
57{
58public:
60 virtual void StoreTranslation(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage);
61
63 virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) override;
64
66 virtual void Reset() override;
67
69 virtual void Reload() override;
70
71protected:
72 plMap<plUInt64, plString> m_Translations[(int)plTranslationUsage::ENUM_COUNT];
73};
74
77class PL_FOUNDATION_DLL plTranslatorLogMissing : public plTranslatorStorage
78{
79public:
81 static bool s_bActive;
82
83 virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) override;
84};
85
87class PL_FOUNDATION_DLL plTranslatorFromFiles : public plTranslatorStorage
88{
89public:
95 void AddTranslationFilesFromFolder(const char* szFolder);
96
97 virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) override;
98
99 virtual void Reload() override;
100
101private:
102 void LoadTranslationFile(const char* szFullPath);
103
105};
106
108class PL_FOUNDATION_DLL plTranslatorMakeMoreReadable : public plTranslatorStorage
109{
110public:
111 virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) override;
112};
113
117class PL_FOUNDATION_DLL plTranslationLookup
118{
119public:
121 static void AddTranslator(plUniquePtr<plTranslator> pTranslator);
122
125 static plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage);
126
128 static void Clear();
129
130private:
131 static plHybridArray<plUniquePtr<plTranslator>, 16> s_Translators;
132};
133
135#define plTranslate(string) plTranslationLookup::Translate(string, plHashingUtils::StringHash(string), plTranslationUsage::Default)
136
138#define plTranslateTooltip(string) plTranslationLookup::Translate(string, plHashingUtils::StringHash(string), plTranslationUsage::Tooltip)
139
141#define plTranslateHelpURL(string) plTranslationLookup::Translate(string, plHashingUtils::StringHash(string), plTranslationUsage::HelpURL)
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition Map.h:408
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Handles looking up translations for strings.
Definition TranslationLookup.h:118
Loads translations from files. Each translator can have different search paths, but the files to be l...
Definition TranslationLookup.h:88
Base class to translate one string into another.
Definition TranslationLookup.h:21
virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage)=0
The given string (with the given hash) shall be translated.
Outputs a 'Missing Translation' warning the first time a string translation is requested....
Definition TranslationLookup.h:78
static bool s_bActive
Can be used from external code to (temporarily) deactivate error logging (a bit hacky)
Definition TranslationLookup.h:81
Returns the same string that is passed into it, but strips off class names and separates the text at ...
Definition TranslationLookup.h:109
Just returns the same string that is passed into it. Can be used to display the actually untranslated...
Definition TranslationLookup.h:49
virtual plStringView Translate(plStringView sString, plUInt64 uiStringHash, plTranslationUsage usage) override
The given string (with the given hash) shall be translated.
Definition TranslationLookup.h:51
Can store translated strings and all translation requests will come from that storage....
Definition TranslationLookup.h:57
A Unique ptr manages an object and destroys that object when it goes out of scope....
Definition UniquePtr.h:10