Skip to content

Commit 50312bd

Browse files
authored
Adds showWelcomeMessageWithMode , identifyUserWithEmail, logOut, setLocale
1) Mapping locale, welcome message enums in android, ios and adding them to flutter. 2) Mapping of the following Apis in Android and IOS and adding them to flutter: showWelcomeMessageWithMode: identifyUserWithEmail:name: logOut setLocale 3) Calling all above Apis from Example App
1 parent 4c414b0 commit 50312bd

File tree

8 files changed

+251
-19
lines changed

8 files changed

+251
-19
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ The table below contains a list of APIs we're planning to implement for our 1.0
2727
| API Method | Native Equivalent (Android/iOS) |
2828
|------------|-----------------------------------------------------------------------------------------------------------------------------------------|
2929
| `start(String token, List<InvocationEvent> invocationEvents)` | `new Instabug.Builder(this, "APP_TOKEN").build()`<br>`+ [Instabug startWithToken:invocationEvents:]` |
30-
| | `Instabug.showWelcomeMessage(WelcomeMessage.State state)`<br>`+ [Instabug showWelcomeMessageWithMode:]` |
31-
| | `Instabug.identifyUser(String username, String email)`<br>`+ [Instabug identifyUserWithEmail:name:]` |
32-
| | `Instabug.logoutUser()`<br>`+ [Instabug logOut]` |
33-
| | `Instabug.setLocale(Locale locale)`<br>`+ [Instabug setLocale:]` |
30+
|`showWelcomeMessageWithMode(WelcomeMessageMode welcomeMessageMode)`| `Instabug.showWelcomeMessage(WelcomeMessage.State state)`<br>`+ [Instabug showWelcomeMessageWithMode:]` |
31+
|`identifyUserWithEmail(String email, [String name])`| `Instabug.identifyUser(String username, String email)`<br>`+ [Instabug identifyUserWithEmail:name:]` |
32+
|`logOut()`| `Instabug.logoutUser()`<br>`+ [Instabug logOut]` |
33+
|`setLocale(Locale locale)`| `Instabug.setLocale(Locale locale)`<br>`+ [Instabug setLocale:]` |
3434
| | `Instabug.setColorTheme(InstabugColorTheme theme)`<br>`+ [Instabug setColorTheme:]` |
3535
| | `Instabug.addTags(String... tags)`<br>`+ [Instabug appendTags:]` |
3636
| | `Instabug.resetTags()`<br>`+ [Instabug resetTags]` |

android/src/main/java/com/instabug/instabugflutter/InstabugFlutterPlugin.java

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import android.app.Application;
1010

1111
import com.instabug.library.Instabug;
12+
import com.instabug.library.internal.module.InstabugLocale;
1213
import com.instabug.library.invocation.InstabugInvocationEvent;
14+
import com.instabug.library.ui.onboarding.WelcomeMessage;
1315

1416
import java.lang.reflect.Array;
1517
import java.lang.reflect.InvocationTargetException;
@@ -21,12 +23,14 @@
2123
import java.util.HashMap;
2224
import java.util.Iterator;
2325
import java.util.List;
26+
import java.util.Locale;
2427
import java.util.Map;
2528

2629
import android.os.Handler;
2730
import android.os.Looper;
2831
import android.util.Log;
2932

33+
3034
// import com.instabug.library.InstabugColorTheme;
3135
// import com.instabug.library.InstabugCustomTextPlaceHolder;
3236
// import com.instabug.library.internal.module.InstabugLocale;
@@ -100,13 +104,96 @@ public void start(Application application, String token, ArrayList<String> invoc
100104
new Instabug.Builder(application, token).setInvocationEvents(invocationEventsArray).build();
101105
}
102106

107+
108+
/**
109+
* Shows the welcome message in a specific mode.
110+
*
111+
* @param welcomeMessageMode An enum to set the welcome message mode to
112+
* live, or beta.
113+
*/
114+
public void showWelcomeMessageWithMode(String welcomeMessageMode) {
115+
Instabug.showWelcomeMessage((WelcomeMessage.State) constants.get(welcomeMessageMode));
116+
}
117+
118+
/**
119+
* Set the user identity.
120+
*
121+
* @param userName Username.
122+
* @param userEmail User's default email
123+
*/
124+
public void identifyUserWithEmail(String userEmail, String userName) {
125+
Instabug.identifyUser(userEmail, userName);
126+
}
127+
128+
/**
129+
* Sets the default value of the user's email to null and show email field and remove user
130+
* name from all reports
131+
* It also reset the chats on device and removes user attributes, user data and completed
132+
* surveys.
133+
*/
134+
public void logOut() {
135+
Instabug.logoutUser();
136+
}
137+
138+
/**
139+
* Change Locale of Instabug UI elements(defaults to English)
140+
*
141+
* @param instabugLocale
142+
*/
143+
public void setLocale(String instabugLocale) {
144+
Instabug.changeLocale((Locale) constants.get(instabugLocale));
145+
}
146+
147+
103148
public Map<String, Object> getConstants() {
104149
final Map<String, Object> constants = new HashMap<>();
105150
constants.put("InvocationEvent.none", InstabugInvocationEvent.NONE);
106151
constants.put("InvocationEvent.screenshot", InstabugInvocationEvent.SCREENSHOT);
107152
constants.put("InvocationEvent.twoFingersSwipeLeft", InstabugInvocationEvent.TWO_FINGER_SWIPE_LEFT);
108153
constants.put("InvocationEvent.floatingButton", InstabugInvocationEvent.FLOATING_BUTTON);
109154
constants.put("InvocationEvent.shake", InstabugInvocationEvent.SHAKE);
155+
156+
constants.put("WelcomeMessageMode.live", WelcomeMessage.State.LIVE);
157+
constants.put("WelcomeMessageMode.beta", WelcomeMessage.State.BETA);
158+
constants.put("WelcomeMessageMode.disabled", WelcomeMessage.State.DISABLED);
159+
160+
constants.put("Locale.Arabic",
161+
new Locale(InstabugLocale.ARABIC.getCode(), InstabugLocale.ARABIC.getCountry()));
162+
constants.put("Locale.ChineseSimplified",
163+
new Locale(InstabugLocale.SIMPLIFIED_CHINESE.getCode(), InstabugLocale.SIMPLIFIED_CHINESE.getCountry()));
164+
constants.put("Locale.ChineseTraditional",
165+
new Locale(InstabugLocale.TRADITIONAL_CHINESE.getCode(), InstabugLocale.TRADITIONAL_CHINESE.getCountry()));
166+
constants.put("Locale.Czech",
167+
new Locale(InstabugLocale.CZECH.getCode(), InstabugLocale.CZECH.getCountry()));
168+
constants.put("Locale.Danish",
169+
new Locale(InstabugLocale.DANISH.getCode(), InstabugLocale.DANISH.getCountry()));
170+
constants.put("Locale.Dutch",
171+
new Locale(InstabugLocale.NETHERLANDS.getCode(), InstabugLocale.NETHERLANDS.getCountry()));
172+
constants.put("Locale.English",
173+
new Locale(InstabugLocale.ENGLISH.getCode(), InstabugLocale.ENGLISH.getCountry()));
174+
constants.put("Locale.French",
175+
new Locale(InstabugLocale.FRENCH.getCode(), InstabugLocale.FRENCH.getCountry()));
176+
constants.put("Locale.German",
177+
new Locale(InstabugLocale.GERMAN.getCode(), InstabugLocale.GERMAN.getCountry()));
178+
constants.put("Locale.Italian",
179+
new Locale(InstabugLocale.ITALIAN.getCode(), InstabugLocale.ITALIAN.getCountry()));
180+
constants.put("Locale.Japanese",
181+
new Locale(InstabugLocale.JAPANESE.getCode(), InstabugLocale.JAPANESE.getCountry()));
182+
constants.put("Locale.Korean",
183+
new Locale(InstabugLocale.KOREAN.getCode(), InstabugLocale.KOREAN.getCountry()));
184+
constants.put("Locale.Polish",
185+
new Locale(InstabugLocale.POLISH.getCode(), InstabugLocale.POLISH.getCountry()));
186+
constants.put("Locale.PortugueseBrazil",
187+
new Locale(InstabugLocale.PORTUGUESE_BRAZIL.getCode(), InstabugLocale.PORTUGUESE_BRAZIL.getCountry()));
188+
constants.put("Locale.Russian",
189+
new Locale(InstabugLocale.RUSSIAN.getCode(), InstabugLocale.RUSSIAN.getCountry()));
190+
constants.put("Locale.Spanish",
191+
new Locale(InstabugLocale.SPANISH.getCode(), InstabugLocale.SPANISH.getCountry()));
192+
constants.put("Locale.Swedish",
193+
new Locale(InstabugLocale.SWEDISH.getCode(), InstabugLocale.SWEDISH.getCountry()));
194+
constants.put("Locale.Turkish",
195+
new Locale(InstabugLocale.TURKISH.getCode(), InstabugLocale.TURKISH.getCountry()));
196+
110197
return constants;
111198
}
112199
}

example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
/* Begin PBXBuildFile section */
1010
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11-
2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
1211
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
1312
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
1413
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -41,12 +40,13 @@
4140
/* Begin PBXFileReference section */
4241
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
4342
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
44-
2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
4543
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
4644
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
45+
44074344FC9C61EF69573882 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
4746
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
4847
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
4948
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
49+
8A66ED0D8D8B0E4F8599CDAA /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
5050
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
5151
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
5252
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
@@ -57,6 +57,7 @@
5757
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
5858
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5959
A9EBB397F99FB54015C87211 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
60+
BAC4880E1C40979FFB98D02A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
6061
/* End PBXFileReference section */
6162

6263
/* Begin PBXFrameworksBuildPhase section */
@@ -76,6 +77,9 @@
7677
13077D31F6E12C6C6AA74720 /* Pods */ = {
7778
isa = PBXGroup;
7879
children = (
80+
44074344FC9C61EF69573882 /* Pods-Runner.debug.xcconfig */,
81+
BAC4880E1C40979FFB98D02A /* Pods-Runner.release.xcconfig */,
82+
8A66ED0D8D8B0E4F8599CDAA /* Pods-Runner.profile.xcconfig */,
7983
);
8084
name = Pods;
8185
sourceTree = "<group>";
@@ -91,7 +95,6 @@
9195
9740EEB11CF90186004384FC /* Flutter */ = {
9296
isa = PBXGroup;
9397
children = (
94-
2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
9598
3B80C3931E831B6300D905FE /* App.framework */,
9699
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
97100
9740EEBA1CF902C7004384FC /* Flutter.framework */,
@@ -211,7 +214,6 @@
211214
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
212215
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
213216
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
214-
2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
215217
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
216218
);
217219
runOnlyForDeploymentPostprocessing = 0;
@@ -227,7 +229,7 @@
227229
inputFileListPaths = (
228230
);
229231
inputPaths = (
230-
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
232+
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
231233
"${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
232234
"${PODS_ROOT}/Instabug/Instabug.framework",
233235
"${PODS_ROOT}/Instabug/Instabug.framework.dSYM",
@@ -242,7 +244,7 @@
242244
);
243245
runOnlyForDeploymentPostprocessing = 0;
244246
shellPath = /bin/sh;
245-
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
247+
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
246248
showEnvVarsInLog = 0;
247249
};
248250
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>

example/lib/main.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ class _MyAppState extends State<MyApp> {
2828
if (Platform.isIOS) {
2929
InstabugFlutter.start('9582e6cfe34e2b8897f48cfa3b617adb', [InvocationEvent.floatingButton, InvocationEvent.shake]);
3030
}
31+
InstabugFlutter.showWelcomeMessageWithMode(WelcomeMessageMode.beta);
32+
InstabugFlutter.identifyUserWithEmail("[email protected]", "Aly Ezz");
33+
InstabugFlutter.logOut();
34+
InstabugFlutter.setLocale(Locale.German);
35+
3136
} on PlatformException {
3237
platformVersion = 'Failed to get platform version.';
3338
}

ios/Classes/InstabugFlutterPlugin.m

Lines changed: 81 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,6 @@
33

44
@implementation InstabugFlutterPlugin
55

6-
+ (NSDictionary *) constants {
7-
return @{
8-
@"InvocationEvent.shake": @(IBGInvocationEventShake),
9-
@"InvocationEvent.screenshot": @(IBGInvocationEventScreenshot),
10-
@"InvocationEvent.twoFingersSwipeLeft": @(IBGInvocationEventTwoFingersSwipeLeft),
11-
@"InvocationEvent.floatingButton": @(IBGInvocationEventFloatingButton),
12-
@"InvocationEvent.none": @(IBGInvocationEventNone),
13-
};
14-
};
156

167
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
178
FlutterMethodChannel* channel = [FlutterMethodChannel
@@ -63,4 +54,85 @@ + (void)startWithToken:(NSString *)token invocationEvents:(NSArray*)invocationEv
6354
[Instabug startWithToken:token invocationEvents:invocationEvents];
6455
}
6556

57+
/**
58+
* Shows the welcome message in a specific mode.
59+
*
60+
* @param welcomeMessageMode An enum to set the welcome message mode to
61+
* live, or beta.
62+
*/
63+
+ (void)showWelcomeMessageWithMode:(NSString *)welcomeMessageMode {
64+
NSDictionary *constants = [self constants];
65+
NSInteger welcomeMode = ((NSNumber *) constants[welcomeMessageMode]).integerValue;
66+
[Instabug showWelcomeMessageWithMode:welcomeMode];
67+
}
68+
69+
/**
70+
* Set the user identity.
71+
* Instabug will pre-fill the user email in reports.
72+
*
73+
* @param name Username.
74+
* @param email User's default email
75+
*/
76+
+ (void)identifyUserWithEmail:(NSString *)email name:(NSString *) name {
77+
if ([name isKindOfClass:[NSNull class]]) {
78+
[Instabug identifyUserWithEmail:email name:nil];
79+
} else {
80+
[Instabug identifyUserWithEmail:email name:name];
81+
}
82+
}
83+
84+
/**
85+
* Sets the default value of the user's email to null and show email field and remove user
86+
* name from all reports
87+
* It also reset the chats on device and removes user attributes, user data and completed
88+
* surveys.
89+
*/
90+
+ (void)logOut {
91+
[Instabug logOut];
92+
}
93+
94+
/**
95+
* Change Locale of Instabug UI elements(defaults to English)
96+
*
97+
* @param locale
98+
*/
99+
+ (void)setLocale:(NSString *)locale {
100+
NSDictionary *constants = [self constants];
101+
NSInteger localeInt = ((NSNumber *) constants[locale]).integerValue;
102+
[Instabug setLocale:localeInt];
103+
}
104+
105+
+ (NSDictionary *)constants {
106+
return @{
107+
@"InvocationEvent.shake": @(IBGInvocationEventShake),
108+
@"InvocationEvent.screenshot": @(IBGInvocationEventScreenshot),
109+
@"InvocationEvent.twoFingersSwipeLeft": @(IBGInvocationEventTwoFingersSwipeLeft),
110+
@"InvocationEvent.floatingButton": @(IBGInvocationEventFloatingButton),
111+
@"InvocationEvent.none": @(IBGInvocationEventNone),
112+
113+
@"WelcomeMessageMode.live": @(IBGWelcomeMessageModeLive),
114+
@"WelcomeMessageMode.beta": @(IBGWelcomeMessageModeBeta),
115+
@"WelcomeMessageMode.disabled": @(IBGWelcomeMessageModeDisabled),
116+
117+
@"Locale.Arabic": @(IBGLocaleArabic),
118+
@"Locale.ChineseSimplified": @(IBGLocaleChineseSimplified),
119+
@"Locale.ChineseTraditional": @(IBGLocaleChineseTraditional),
120+
@"Locale.Czech": @(IBGLocaleCzech),
121+
@"Locale.Danish": @(IBGLocaleDanish),
122+
@"Locale.Dutch": @(IBGLocaleDutch),
123+
@"Locale.English": @(IBGLocaleEnglish),
124+
@"Locale.French": @(IBGLocaleFrench),
125+
@"Locale.German": @(IBGLocaleGerman),
126+
@"Locale.Italian": @(IBGLocaleItalian),
127+
@"Locale.Japanese": @(IBGLocaleJapanese),
128+
@"Locale.Korean": @(IBGLocaleKorean),
129+
@"Locale.Polish": @(IBGLocalePolish),
130+
@"Locale.PortugueseBrazil": @(IBGLocalePortugueseBrazil),
131+
@"Locale.Russian": @(IBGLocaleRussian),
132+
@"Locale.Spanish": @(IBGLocaleSpanish),
133+
@"Locale.Swedish": @(IBGLocaleSwedish),
134+
@"Locale.Turkish": @(IBGLocaleTurkish),
135+
};
136+
};
137+
66138
@end

0 commit comments

Comments
 (0)