70 #if JUCE_CHECK_MEMORY_LEAKS
76 struct LeakAvoidanceTrick
84 LeakAvoidanceTrick leakAvoidanceTrick;
87 SpinLock currentMappingsLock;
88 std::unique_ptr<LocalisedStrings> currentMappings;
90 static int findCloseQuote (
const String&
text,
int startPos)
93 auto t =
text.getCharPointer() + startPos;
97 auto c =
t.getAndAdvance();
99 if (
c == 0 || (
c ==
'"' && lastChar !=
'\\'))
109 static String unescapeString (
const String&
s)
111 return s.replace (
"\\\"",
"\"")
112 .replace (
"\\\'",
"\'")
113 .replace (
"\\t",
"\t")
114 .replace (
"\\r",
"\r")
115 .replace (
"\\n",
"\n");
126 for (
auto&
l : lines)
128 auto line =
l.trim();
130 if (line.startsWithChar (
'"'))
132 auto closeQuote = findCloseQuote (line, 1);
133 auto originalText = unescapeString (line.substring (1, closeQuote));
135 if (originalText.isNotEmpty())
137 auto openingQuote = findCloseQuote (line, closeQuote + 1);
138 closeQuote = findCloseQuote (line, openingQuote + 1);
139 auto newText = unescapeString (line.substring (openingQuote + 1, closeQuote));
141 if (newText.isNotEmpty())
145 else if (line.startsWithIgnoreCase (
"language:"))
149 else if (line.startsWithIgnoreCase (
"countries:"))
151 countryCodes.addTokens (line.substring (10).trim(),
true);
177 currentMappings.reset (newTranslations);
182 return currentMappings.get();
197 return mappings->translate (
text, resultIfNotFound);
199 return resultIfNotFound;
Definition juce_CharPointer_UTF8.h:35
Definition juce_File.h:45
String loadFileAsString() const
Definition juce_File.cpp:548
Definition juce_LocalisedStrings.h:72
void loadFromText(const String &, bool ignoreCase)
Definition juce_LocalisedStrings.cpp:119
static void setCurrentMappings(LocalisedStrings *newTranslations)
Definition juce_LocalisedStrings.cpp:174
String languageName
Definition juce_LocalisedStrings.h:190
std::unique_ptr< LocalisedStrings > fallback
Definition juce_LocalisedStrings.h:193
static String translateWithCurrentMappings(const String &text)
Definition juce_LocalisedStrings.cpp:185
StringArray countryCodes
Definition juce_LocalisedStrings.h:191
String translate(const String &text) const
Definition juce_LocalisedStrings.cpp:52
static LocalisedStrings * getCurrentMappings()
Definition juce_LocalisedStrings.cpp:180
StringPairArray translations
Definition juce_LocalisedStrings.h:192
void addStrings(const LocalisedStrings &)
Definition juce_LocalisedStrings.cpp:160
LocalisedStrings(const String &fileContents, bool ignoreCaseOfKeys)
Definition juce_LocalisedStrings.cpp:26
void setFallback(LocalisedStrings *fallbackStrings)
Definition juce_LocalisedStrings.cpp:168
GenericScopedLock< SpinLock > ScopedLockType
Definition juce_SpinLock.h:73
Definition juce_StringArray.h:35
int addLines(StringRef stringToBreakUp)
Definition juce_StringArray.cpp:358
Definition juce_String.h:53
int * l
Definition inflate.c:1579
struct huft * t
Definition inflate.c:943
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Type * createCopyIfNotNull(const Type *objectToCopy)
Definition juce_Memory.h:60
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
JUCE_API String translate(const String &text)
Definition juce_LocalisedStrings.cpp:188
const char * text
Definition swell-functions.h:167
return c
Definition crypt.c:175