ObjFW  Diff

Differences From Artifact [076e9d8203]:

To Artifact [eba1e0de33]:


145
146
147
148
149
150
151
152

153
154
155
156
157

158
159
160
161
162

163
164
165
166
167

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187

188
189
190
191
192
193
194
145
146
147
148
149
150
151

152
153
154
155
156

157
158
159
160
161

162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186

187
188
189
190
191
192
193
194







-
+




-
+




-
+




-
+



















-
+







+ (OFLocale *)currentLocale
{
	return currentLocale;
}

+ (OFString *)language
{
	return [currentLocale language];
	return currentLocale.language;
}

+ (OFString *)territory
{
	return [currentLocale territory];
	return currentLocale.territory;
}

+ (of_string_encoding_t)encoding
{
	return [currentLocale encoding];
	return currentLocale.encoding;
}

+ (OFString *)decimalPoint
{
	return [currentLocale decimalPoint];
	return currentLocale.decimalPoint;
}

#ifdef OF_HAVE_FILES
+ (void)addLanguageDirectory: (OFString *)path
{
	[currentLocale addLanguageDirectory: path];
}
#endif

- (instancetype)init
{
	self = [super init];

	@try {
#ifndef OF_AMIGAOS
		char *locale, *messagesLocale = NULL;

		if (currentLocale != nil)
			@throw [OFInitializationFailedException
			    exceptionWithClass: [self class]];
			    exceptionWithClass: self.class];

		_encoding = OF_STRING_ENCODING_UTF_8;
		_decimalPoint = @".";
		_localizedStrings = [[OFMutableArray alloc] init];

		if ((locale = setlocale(LC_ALL, "")) != NULL)
			_decimalPoint = [[OFString alloc]
319
320
321
322
323
324
325
326
327


328
329
330
331
332
333
334

335
336
337
338
339
340
341
342
319
320
321
322
323
324
325


326
327
328
329
330
331
332
333

334

335
336
337
338
339
340
341







-
-
+
+






-
+
-







	@try {
		map = [[OFString stringWithContentsOfFile: mapPath] JSONValue];
	} @catch (OFOpenItemFailedException *e) {
		objc_autoreleasePoolPop(pool);
		return;
	}

	language = [_language lowercaseString];
	territory = [_territory lowercaseString];
	language = _language.lowercaseString;
	territory = _territory.lowercaseString;

	if (territory == nil)
		territory = @"";

	languageFile = [[map objectForKey: language] objectForKey: territory];
	if (languageFile == nil)
		languageFile = [[map objectForKey: language]
		languageFile = [[map objectForKey: language] objectForKey: @""];
		    objectForKey: @""];

	if (languageFile == nil) {
		objc_autoreleasePoolPop(pool);
		return;
	}

	languageFile = [path stringByAppendingPathComponent:
385
386
387
388
389
390
391
392
393


394
395
396
397
398
399
400
384
385
386
387
388
389
390


391
392
393
394
395
396
397
398
399







-
-
+
+








		UTF8String = [string UTF8String];
		UTF8StringLength = [string UTF8StringLength];
		break;
	}

	if (UTF8String == NULL) {
		UTF8String = [fallback UTF8String];
		UTF8StringLength = [fallback UTF8StringLength];
		UTF8String = fallback.UTF8String;
		UTF8StringLength = fallback.UTF8StringLength;
	}

	state = 0;
	last = 0;
	for (size_t i = 0; i < UTF8StringLength; i++) {
		switch (state) {
		case 0: