1 | // Copyright 2018-present 650 Industries. All rights reserved.
|
2 |
|
3 | #import <EXLocalization/EXLocalization.h>
|
4 |
|
5 | @implementation EXLocalization
|
6 |
|
7 | UM_EXPORT_MODULE(ExpoLocalization)
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | UM_EXPORT_METHOD_AS(getLocalizationAsync,
|
15 | getLocalizationAsync:(UMPromiseResolveBlock)resolve
|
16 | rejecter:(UMPromiseRejectBlock)reject)
|
17 | {
|
18 | resolve([self constantsToExport]);
|
19 | }
|
20 |
|
21 | - (NSDictionary *)constantsToExport
|
22 | {
|
23 | NSArray<NSString *> *preferredLocales = [NSLocale preferredLanguages];
|
24 | if (preferredLocales == nil) {
|
25 | NSString *currentLocale = [[NSLocale currentLocale] localeIdentifier];
|
26 | if (currentLocale == nil) {
|
27 | currentLocale = @"en_US";
|
28 | }
|
29 | preferredLocales = @[currentLocale];
|
30 | }
|
31 |
|
32 | NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
|
33 | NSString *region = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
|
34 |
|
35 | return @{
|
36 | @"isRTL": @([self isRTL]),
|
37 | @"locale": [preferredLocales objectAtIndex:0],
|
38 | @"locales": preferredLocales,
|
39 | @"timezone": [currentTimeZone name],
|
40 | @"isoCurrencyCodes": [NSLocale ISOCurrencyCodes],
|
41 | @"region": UMNullIfNil(region)
|
42 | };
|
43 | }
|
44 |
|
45 | - (BOOL)isRTL
|
46 | {
|
47 | // https://stackoverflow.com/a/14183124/1123156
|
48 | return [NSLocale characterDirectionForLanguage:[NSLocale preferredLanguages][0]] == NSLocaleLanguageDirectionRightToLeft;
|
49 | }
|
50 |
|
51 | @end
|