1 | // Copyright 2018-present 650 Industries. All rights reserved.
|
2 |
|
3 | #import <EXLocalization/EXLocalization.h>
|
4 |
|
5 | @implementation EXLocalization
|
6 |
|
7 | EX_EXPORT_MODULE(ExpoLocalization)
|
8 |
|
9 | - (NSMutableArray *)ensureLocaleTags:(NSArray *)locales
|
10 | {
|
11 | NSMutableArray *sanitizedLocales = [NSMutableArray array];
|
12 | for (id locale in locales)
|
13 | [sanitizedLocales addObject:[locale stringByReplacingOccurrencesOfString:@"_" withString:@"-"]];
|
14 |
|
15 | return sanitizedLocales;
|
16 | }
|
17 |
|
18 | EX_EXPORT_METHOD_AS(getLocalizationAsync,
|
19 | getLocalizationAsync:(EXPromiseResolveBlock)resolve
|
20 | rejecter:(EXPromiseRejectBlock)reject)
|
21 | {
|
22 | resolve([self constantsToExport]);
|
23 | }
|
24 |
|
25 | - (NSDictionary *)constantsToExport
|
26 | {
|
27 | NSArray *preferredLocales = [self ensureLocaleTags:[NSLocale preferredLanguages]];
|
28 | NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
|
29 | NSString *countryCode = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
|
30 |
|
31 | NSLocaleLanguageDirection localeLanguageDirection = [NSLocale characterDirectionForLanguage:[NSLocale preferredLanguages][0]];
|
32 | BOOL isRTL = localeLanguageDirection == NSLocaleLanguageDirectionRightToLeft;
|
33 |
|
34 | return @{
|
35 | @"isRTL": @(isRTL),
|
36 | @"locale": [preferredLocales objectAtIndex:0],
|
37 | @"locales": preferredLocales,
|
38 | @"timezone": [currentTimeZone name],
|
39 | @"isoCurrencyCodes": [NSLocale ISOCurrencyCodes],
|
40 | @"country": countryCode
|
41 | };
|
42 | }
|
43 |
|
44 | @end
|