hank
2019-01-22 9bb554260c63842b23919b1f128b9cc8488b7f50
添加V3.8.0
22 files modified
9 files deleted
16 files added
1768 ■■■■ changed files
WAAiHelpImpl.podspec 6 ●●●● patch | view | raw | blame | history
config/wa_sdk_impl_config_aihelp.xml 2 ●●● patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h 6 ●●●● patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h 191 ●●●●● patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h 371 ●●●●● patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h 293 ●●●●● patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/Info.plist patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1 patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources 53 ●●●●● patch | view | raw | blame | history
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature patch | view | raw | blame | history
frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h 2 ●●● patch | view | raw | blame | history
frameworks/WAAIhelpImpl.framework/Info.plist patch | view | raw | blame | history
frameworks/WAAIhelpImpl.framework/WAAIhelpImpl patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/ab_reward.png patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings 39 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/checkbox_checked.png patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings 24 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings 32 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings 32 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings 24 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings 18 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings 32 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings 32 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings 24 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings 39 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings 24 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings 24 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings 37 ●●●●● patch | view | raw | blame | history
res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings 40 ●●●●● patch | view | raw | blame | history
res/Localization/ar.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/en.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/es.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/ja.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/ko.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/ru.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/th.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/zh-Hans.lproj/Localizable.strings 22 ●●●●● patch | view | raw | blame | history
res/Localization/zh-Hant.lproj/Localizable.strings 25 ●●●●● patch | view | raw | blame | history
WAAiHelpImpl.podspec
@@ -9,7 +9,7 @@
Pod::Spec.new do |s|
s.name = 'WAAiHelpImpl'
s.version = '3.7.0'
s.version = '3.8.0'
s.summary = 'WAAfImpl framework in testing environment.'
s.license = 'MIT'
s.author = { "Hank" => "hank.zhang@gamehollywood.com" }
@@ -22,6 +22,6 @@
s.libraries = 'sqlite3'
s.resources = ['config/*.xml','res/ElvaChatServiceSDK.bundle','res/ElvaChatServiceSDK.bundle','res/*.xib','res/Localization/*/*.strings']
s.requires_arc = true
s.dependency 'WASdkIntf', '~> 3.7.0'   #此处添加私有库依赖
s.dependency 'WASdkImpl', '~> 3.7.0'
s.dependency 'WASdkIntf', '~> 3.8.0'   #此处添加私有库依赖
s.dependency 'WASdkImpl', '~> 3.8.0'
end
config/wa_sdk_impl_config_aihelp.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <version val="AIHELP3.7.0"/>
    <version val="AIHELP3.8.0"/>
    <comps>
        <!-- 公共模块 -->
        <comp module="CORE" plaf="AIHELP" mandatory="YES" value="WAAIhelpCore" desc="公共模块"/>
frameworks/ElvaChatServiceSDK.framework/ElvaChatServiceSDK
Binary files differ
frameworks/ElvaChatServiceSDK.framework/Headers/ECServiceSdk.h
@@ -6,7 +6,8 @@
#import <Foundation/Foundation.h>
@interface ECServiceSdk:NSObject
+ (void) registerUnityOnInitializedCallback:(NSString *) gameObject;
+ (void) registerUnityOnMessageArrivedCallback:(NSString *) gameObject;
+ (void) init:(NSString*) appSecret Domain:(NSString*) domain AppId:(NSString*) appId;
+ (void) showElva:(NSString*) playerName PlayerUid:(NSString*) playerUid ServerId:(NSString*) serverId PlayerParseId:(NSString*) playerParseId PlayershowConversationFlag:(NSString*) playershowConversationFlag;
+ (void) showElva:(NSString*) playerName PlayerUid:(NSString*) playerUid ServerId:(NSString*) serverId PlayerParseId:(NSString*) playerParseId PlayershowConversationFlag:(NSString*) playershowConversationFlag Config:(NSMutableDictionary*) config;
@@ -30,6 +31,7 @@
+ (void) setNoMenu;
+ (void) setSendCloseNotification:(BOOL) isSend;
+ (void) setAccelerateDomain:(NSString *)domain;
+ (void) setOpenLog:(BOOL)isOpen;
+ (void) showVIPChat:(NSString*) appidWeb VIPTags:(NSString *) vipTags;
@@ -44,5 +46,7 @@
+ (void) handlePushNotification:(NSDictionary *) table DataFromInApp:(BOOL) dataFromInApp;
+ (int) getNotificationMessageCount;
+ (void) showURL:(NSString *) url;
+ (void) setUnreadMessageFetchUid:(NSString*) playerUid;
@end
frameworks/ElvaChatServiceSDK.framework/Headers/UnityForwardDecls.h
New file
@@ -0,0 +1,191 @@
#pragma once
#include <stdint.h>
#ifdef __OBJC__
@class UIScreen;
@class UIWindow;
@class UIView;
@class UIViewController;
@class UIEvent;
@class UILocalNotification;
@class NSString;
@class NSDictionary;
@class NSSet;
@class NSData;
@class NSError;
@class NSBundle;
@class UnityViewControllerBase;
#else
typedef struct objc_object UIScreen;
typedef struct objc_object UIWindow;
typedef struct objc_object UIView;
typedef struct objc_object UIViewController;
typedef struct objc_object UIEvent;
typedef struct objc_object UILocalNotification;
typedef struct objc_object NSString;
typedef struct objc_object NSDictionary;
typedef struct objc_object NSSet;
typedef struct objc_object NSError;
typedef struct objc_object NSData;
typedef struct objc_object NSBundle;
typedef struct objc_object UnityViewControllerBase;
#endif
// unity internal audio effect definition struct
struct UnityAudioEffectDefinition;
// new unity rendering api
struct IUnityInterfaces;
// be aware that this struct is shared with unity implementation so you should absolutely not change it
struct UnityFrameStats
{
    uint64_t    fixedBehaviourManagerDt;
    uint64_t    fixedPhysicsManagerDt;
    uint64_t    dynamicBehaviourManagerDt;
    uint64_t    coroutineDt;
    uint64_t    skinMeshUpdateDt;
    uint64_t    animationUpdateDt;
    uint64_t    renderDt;
    uint64_t    cullingDt;
    uint64_t    clearDt;
    int         fixedUpdateCount;
    int         batchCount;
    uint64_t    drawCallTime;
    int         drawCallCount;
    int         triCount;
    int         vertCount;
    uint64_t    dynamicBatchDt;
    int         dynamicBatchCount;
    int         dynamicBatchedDrawCallCount;
    int         dynamicBatchedTris;
    int         dynamicBatchedVerts;
    int         staticBatchCount;
    int         staticBatchedDrawCallCount;
    int         staticBatchedTris;
    int         staticBatchedVerts;
};
// be aware that this enum is shared with unity implementation so you should absolutely not change it
typedef enum
    LogType
{
    logError        = 0,
    logAssert       = 1,
    logWarning      = 2,
    logLog          = 3,
    logException    = 4,
    logDebug        = 5,
}
LogType;
// be aware that this enum is shared with unity implementation so you should absolutely not change it
typedef enum
    DeviceGeneration
{
    deviceUnknown       = 0,
    deviceiPhone3GS     = 3,
    deviceiPhone4       = 8,
    deviceiPodTouch4Gen = 9,
    deviceiPad2Gen      = 10,
    deviceiPhone4S      = 11,
    deviceiPad3Gen      = 12,
    deviceiPhone5       = 13,
    deviceiPodTouch5Gen = 14,
    deviceiPadMini1Gen  = 15,
    deviceiPad4Gen      = 16,
    deviceiPhone5C      = 17,
    deviceiPhone5S      = 18,
    deviceiPadAir1      = 19,
    deviceiPadMini2Gen  = 20,
    deviceiPhone6       = 21,
    deviceiPhone6Plus   = 22,
    deviceiPadMini3Gen  = 23,
    deviceiPadAir2      = 24,
    deviceiPhone6S      = 25,
    deviceiPhone6SPlus  = 26,
    deviceiPadPro1Gen   = 27,
    deviceiPadMini4Gen  = 28,
    deviceiPhoneSE1Gen  = 29,
    deviceiPadPro10Inch1Gen = 30,
    deviceiPhone7       = 31,
    deviceiPhone7Plus   = 32,
    deviceiPodTouch6Gen = 33,
    deviceiPad5Gen = 34,
    deviceiPadPro2Gen = 35,
    deviceiPadPro10Inch2Gen = 36,
    deviceiPhoneUnknown     = 10001,
    deviceiPadUnknown       = 10002,
    deviceiPodTouchUnknown  = 10003,
}
DeviceGeneration;
// be aware that this enum is shared with unity implementation so you should absolutely not change it
typedef enum
    ScreenOrientation
{
    orientationUnknown,
    portrait,
    portraitUpsideDown,
    landscapeLeft,
    landscapeRight,
    orientationCount,
}
ScreenOrientation;
// be aware that this enum is shared with unity implementation so you should absolutely not change it
typedef enum
    AppInBackgroundBehavior
{
    appbgCustom     = -1,
    appbgSuspend    = 0,
    appbgExit       = 1,
}
AppInBackgroundBehavior;
// this dictates touches processing on os level: should we transform touches to unity view coords or not.
// N.B. touch.position will always be adjusted to current resolution
//      i.e. if you touch right border of view, touch.position.x will be Screen.width, not view.width
//      to get coords in view space (os-coords), use touch.rawPosition
typedef enum
    ViewTouchProcessing
{
    // the touches originated from view will be ignored by unity
    touchesIgnored = 0,
    // touches would be processed as if they were originated in unity view:
    // coords will be transformed from view coords to unity view coords
    touchesTransformedToUnityViewCoords = 1,
    // touches coords will be kept intact (in originated view coords)
    // it is default value
    touchesKeptInOriginalViewCoords = 2,
}
ViewTouchProcessing;
#ifdef __cplusplus
extern bool _ios42orNewer;
extern bool _ios43orNewer;
extern bool _ios50orNewer;
extern bool _ios60orNewer;
extern bool _ios70orNewer;
extern bool _ios80orNewer;
extern bool _ios81orNewer;
extern bool _ios82orNewer;
extern bool _ios90orNewer;
extern bool _ios91orNewer;
extern bool _ios100orNewer;
#endif
frameworks/ElvaChatServiceSDK.framework/Headers/UnityInterface.h
New file
@@ -0,0 +1,371 @@
#pragma once
#include <stdint.h>
#include <stdarg.h>
#include "UnityForwardDecls.h"
#include "UnityRendering.h"
// unity plugin functions
// audio plugin api
typedef int     (*UnityPluginGetAudioEffectDefinitionsFunc)(struct UnityAudioEffectDefinition*** descptr);
// OLD rendering plugin api (will become obsolete soon)
typedef void    (*UnityPluginSetGraphicsDeviceFunc)(void* device, int deviceType, int eventType);
typedef void    (*UnityPluginRenderMarkerFunc)(int marker);
// new rendering plugin api
typedef void    (*UnityPluginLoadFunc)(struct IUnityInterfaces* unityInterfaces);
typedef void    (*UnityPluginUnloadFunc)();
// log handler function
#ifdef __cplusplus
typedef bool (*LogEntryHandler)(LogType logType, const char* log, va_list list);
#endif
//
// these are functions referenced in trampoline and implemented in unity player lib
//
#ifdef __cplusplus
extern "C" {
#endif
// life cycle management
void    UnityInitStartupTime();
void    UnityInitRuntime(int argc, char* argv[]);
void    UnityInitApplicationNoGraphics(const char* appPathName);
void    UnityInitApplicationGraphics(int forceDirectRendering);
void    UnityCleanup();
void    UnityLoadApplication();
void    UnityPlayerLoop();                  // normal player loop
void    UnityBatchPlayerLoop();             // batch mode like player loop, without rendering (usable for background processing)
void    UnitySetPlayerFocus(int focused);   // send OnApplicationFocus() message to scripts
void    UnityLowMemory();
void    UnityPause(int pause);
int     UnityIsPaused();                    // 0 if player is running, 1 if paused
void    UnityWillPause();                   // send the message that app will pause
void    UnityWillResume();                  // send the message that app will resume
void    UnityInputProcess();
void    UnityDeliverUIEvents();             // unity processing impacting UI will be called in there
// rendering
int     UnityGetRenderingAPIs(int capacity, int* outAPIs);
void    UnityFinishRendering();
// OpenGL ES.
int     UnityHasRenderingAPIExtension(const char* extension);
void    UnityOnSetCurrentGLContext(EAGLContext* context);
// This must match the one in ApiEnumsGLES.h
typedef enum UnityFramebufferTarget
{
    kDrawFramebuffer = 0,
    kReadFramebuffer,
    kFramebufferTargetCount
} UnityFramebufferTarget;
void    UnityBindFramebuffer(UnityFramebufferTarget target, int fbo);
void    UnityRegisterFBO(UnityRenderBufferHandle color, UnityRenderBufferHandle depth, unsigned fbo);
// controling player internals
// TODO: needs some cleanup
void    UnitySetAudioSessionActive(int active);
void    UnityGLInvalidateState();
void    UnityReloadResources();
int     UnityIsCaptureScreenshotRequested();
void    UnityCaptureScreenshot();
void    UnitySendMessage(const char* obj, const char* method, const char* msg);
EAGLContext*        UnityGetDataContextGLES();
#ifdef __cplusplus
void    UnitySetLogEntryHandler(LogEntryHandler newHandler);
#endif
// plugins support
// WARNING: old UnityRegisterRenderingPlugin will become obsolete soon
void    UnityRegisterRenderingPlugin(UnityPluginSetGraphicsDeviceFunc setDevice, UnityPluginRenderMarkerFunc renderMarker);
void    UnityRegisterRenderingPluginV5(UnityPluginLoadFunc loadPlugin, UnityPluginUnloadFunc unloadPlugin);
void    UnityRegisterAudioPlugin(UnityPluginGetAudioEffectDefinitionsFunc getAudioEffectDefinitions);
// resolution/orientation handling
void    UnityGetRenderingResolution(unsigned* w, unsigned* h);
void    UnityGetSystemResolution(unsigned* w, unsigned* h);
void    UnityRequestRenderingResolution(unsigned w, unsigned h);
int     UnityIsOrientationEnabled(unsigned /*ScreenOrientation*/ orientation);
int     UnityHasOrientationRequest();
int     UnityShouldAutorotate();
int     UnityRequestedScreenOrientation(); // returns ScreenOrientation
void    UnityOrientationRequestWasCommitted();
int     UnityReportResizeView(unsigned w, unsigned h, unsigned /*ScreenOrientation*/ contentOrientation);   // returns ScreenOrientation
void    UnityReportBackbufferChange(UnityRenderBufferHandle colorBB, UnityRenderBufferHandle depthBB);
// player settings
int     UnityDisableDepthAndStencilBuffers();
int     UnityUseAnimatedAutorotation();
int     UnityGetDesiredMSAASampleCount(int defaultSampleCount);
int     UnityGetSRGBRequested();
int     UnityGetShowActivityIndicatorOnLoading();
int     UnityGetAccelerometerFrequency();
int     UnityGetTargetFPS();
int     UnityGetAppBackgroundBehavior();
// push notifications
#if !UNITY_TVOS
void    UnitySendLocalNotification(UILocalNotification* notification);
#endif
void    UnitySendRemoteNotification(NSDictionary* notification);
void    UnitySendDeviceToken(NSData* deviceToken);
void    UnitySendRemoteNotificationError(NSError* error);
// native events
void    UnityInvalidateDisplayDataCache(void* screen);
void    UnityUpdateDisplayList(void** screens, int screenCount);
// profiler
void*   UnityCreateProfilerCounter(const char*);
void    UnityDestroyProfilerCounter(void*);
void    UnityStartProfilerCounter(void*);
void    UnityEndProfilerCounter(void*);
// sensors
void    UnitySensorsSetGyroRotationRate(int idx, float x, float y, float z);
void    UnitySensorsSetGyroRotationRateUnbiased(int idx, float x, float y, float z);
void    UnitySensorsSetGravity(int idx, float x, float y, float z);
void    UnitySensorsSetUserAcceleration(int idx, float x, float y, float z);
void    UnitySensorsSetAttitude(int idx, float x, float y, float z, float w);
void    UnityDidAccelerate(float x, float y, float z, double timestamp);
void    UnitySetJoystickPosition(int joyNum, int axis, float pos);
int     UnityStringToKey(const char *name);
void    UnitySetKeyState(int key, int /*bool*/ state);
// WWW connection handling
void    UnityReportWWWStatusError(void* udata, int status, const char* error);
void    UnityReportWWWReceivedResponse(void* udata, int status, unsigned expectedDataLength, const char* respHeader);
void    UnityReportWWWReceivedData(void* udata, const void* buffer, unsigned totalRead, unsigned expectedTotal);
void    UnityReportWWWFinishedLoadingData(void* udata);
void    UnityReportWWWSentData(void* udata, unsigned totalWritten, unsigned expectedTotal);
// AVCapture
void    UnityReportAVCapturePermission();
void    UnityDidCaptureVideoFrame(intptr_t tex, void* udata);
// logging override
#ifdef __cplusplus
} // extern "C"
#endif
// touches processing
#ifdef __cplusplus
extern "C" {
#endif
void    UnitySetViewTouchProcessing(UIView* view, int /*ViewTouchProcessing*/ processingPolicy);
void    UnityDropViewTouchProcessing(UIView* view);
void    UnitySendTouchesBegin(NSSet* touches, UIEvent* event);
void    UnitySendTouchesEnded(NSSet* touches, UIEvent* event);
void    UnitySendTouchesCancelled(NSSet* touches, UIEvent* event);
void    UnitySendTouchesMoved(NSSet* touches, UIEvent* event);
void    UnityCancelTouches();
#ifdef __cplusplus
} // extern "C"
#endif
//
// these are functions referenced and implemented in trampoline
//
#ifdef __cplusplus
extern "C" {
#endif
// UnityAppController.mm
UIViewController*       UnityGetGLViewController();
UIView*                 UnityGetGLView();
UIWindow*               UnityGetMainWindow();
enum ScreenOrientation  UnityCurrentOrientation();
// Unity/DisplayManager.mm
float                   UnityScreenScaleFactor(UIScreen* screen);
#ifdef __cplusplus
} // extern "C"
#endif
//
// these are functions referenced in unity player lib and implemented in trampoline
//
#ifdef __cplusplus
extern "C" {
#endif
// iPhone_Sensors.mm
void            UnityInitJoysticks();
void            UnityCoreMotionStart();
void            UnityCoreMotionStop();
int             UnityIsGyroEnabled(int idx);
int             UnityIsGyroAvailable();
void            UnityUpdateGyroData();
void            UnitySetGyroUpdateInterval(int idx, float interval);
float           UnityGetGyroUpdateInterval(int idx);
void            UnityUpdateJoystickData();
int             UnityGetJoystickCount();
void            UnityGetJoystickName(int idx, char* buffer, int maxLen);
void            UnityGetJoystickAxisName(int idx, int axis, char* buffer, int maxLen);
void            UnityGetNiceKeyname(int key, char* buffer, int maxLen);
// UnityAppController+Rendering.mm
void            UnityInitMainScreenRenderingCallback();
void            UnityGfxInitedCallback();
void            UnityPresentContextCallback(struct UnityFrameStats const* frameStats);
void            UnityFramerateChangeCallback(int targetFPS);
int             UnitySelectedRenderingAPI();
NSBundle*           UnityGetMetalBundle();
MTLDeviceRef        UnityGetMetalDevice();
MTLCommandQueueRef  UnityGetMetalCommandQueue();
EAGLContext*        UnityGetDataContextEAGL();
UnityRenderBufferHandle UnityBackbufferColor();
UnityRenderBufferHandle UnityBackbufferDepth();
// UI/ActivityIndicator.mm
void            UnityStartActivityIndicator();
void            UnityStopActivityIndicator();
// UI/Keyboard.mm
void            UnityKeyboard_Create(unsigned keyboardType, int autocorrection, int multiline, int secure, int alert, const char* text, const char* placeholder);
void            UnityKeyboard_Show();
void            UnityKeyboard_Hide();
void            UnityKeyboard_GetRect(float* x, float* y, float* w, float* h);
void            UnityKeyboard_SetText(const char* text);
NSString*       UnityKeyboard_GetText();
int             UnityKeyboard_IsActive();
int             UnityKeyboard_IsDone();
int             UnityKeyboard_WasCanceled();
void            UnityKeyboard_SetInputHidden(int hidden);
int             UnityKeyboard_IsInputHidden();
int             UnityKeyboard_CanGetSelection();
void            UnityKeyboard_GetSelection(int* location, int* range);
// UI/UnityViewControllerBase.mm
void            UnityNotifyAutoOrientationChange();
// Unity/AVCapture.mm
int             UnityGetAVCapturePermission(int captureTypes);
void            UnityRequestAVCapturePermission(int captureTypes);
// Unity/CameraCapture.mm
void            UnityEnumVideoCaptureDevices(void* udata, void(*callback)(void* udata, const char* name, int frontFacing));
void*           UnityInitCameraCapture(int device, int w, int h, int fps, void* udata);
void            UnityStartCameraCapture(void* capture);
void            UnityPauseCameraCapture(void* capture);
void            UnityStopCameraCapture(void* capture);
void            UnityCameraCaptureExtents(void* capture, int* w, int* h);
void            UnityCameraCaptureReadToMemory(void* capture, void* dst, int w, int h);
int             UnityCameraCaptureVideoRotationDeg(void* capture);
int             UnityCameraCaptureVerticallyMirrored(void* capture);
// Unity/DeviceSettings.mm
const char*     UnityDeviceUniqueIdentifier();
const char*     UnityVendorIdentifier();
const char*     UnityAdvertisingIdentifier();
int             UnityAdvertisingTrackingEnabled();
const char*     UnityDeviceName();
const char*     UnitySystemName();
const char*     UnitySystemVersion();
const char*     UnityDeviceModel();
int             UnityDeviceCPUCount();
int             UnityDeviceGeneration();
float           UnityDeviceDPI();
const char*     UnitySystemLanguage();
// Unity/DisplayManager.mm
EAGLContext*    UnityGetMainScreenContextGLES();
EAGLContext*    UnityGetContextEAGL();
void            UnityStartFrameRendering();
void            UnityDestroyUnityRenderSurfaces();
// Unity/Filesystem.mm
const char*     UnityApplicationDir();
const char*     UnityDocumentsDir();
const char*     UnityLibraryDir();
const char*     UnityCachesDir();
int             UnityUpdateNoBackupFlag(const char* path, int setFlag); // Returns 1 if successful, otherwise 0
// Unity/WWWConnection.mm
void*           UnityStartWWWConnectionGet(void* udata, const void* headerDict, const char* url);
void*           UnityStartWWWConnectionPost(void* udata, const void* headerDict, const char* url, const void* data, unsigned length);
void            UnityDestroyWWWConnection(void* connection);
void            UnityShouldCancelWWW(const void* connection);
//Apple TV Remote
int         UnityGetAppleTVRemoteAllowExitToMenu();
void        UnitySetAppleTVRemoteAllowExitToMenu(int val);
int         UnityGetAppleTVRemoteAllowRotation();
void        UnitySetAppleTVRemoteAllowRotation(int val);
int         UnityGetAppleTVRemoteReportAbsoluteDpadValues();
void        UnitySetAppleTVRemoteReportAbsoluteDpadValues(int val);
int         UnityGetAppleTVRemoteTouchesEnabled();
void        UnitySetAppleTVRemoteTouchesEnabled(int val);
#ifdef __cplusplus
} // extern "C"
#endif
#ifdef __OBJC__
// This is basically a wrapper for [NSString UTF8String] with additional strdup.
//
// Apparently multiple calls on UTF8String will leak memory (NSData objects) that are collected
// only when @autoreleasepool is exited. This function serves as documentation for this and as a
// handy wrapper.
inline char* AllocCString(NSString* value)
{
    if (value == nil)
        return 0;
    const char* str = [value UTF8String];
    return str ? strdup(str) : 0;
}
#endif
frameworks/ElvaChatServiceSDK.framework/Headers/UnityRendering.h
New file
@@ -0,0 +1,293 @@
#pragma once
#ifdef __OBJC__
@class CAEAGLLayer;
@class EAGLContext;
#else
typedef struct objc_object CAEAGLLayer;
typedef struct objc_object EAGLContext;
#endif
#ifdef __OBJC__
@class CAMetalLayer;
@protocol CAMetalDrawable;
@protocol MTLDrawable;
@protocol MTLDevice;
@protocol MTLTexture;
@protocol MTLCommandBuffer;
@protocol MTLCommandQueue;
@protocol MTLCommandEncoder;
typedef id<CAMetalDrawable>     CAMetalDrawableRef;
typedef id<MTLDevice>           MTLDeviceRef;
typedef id<MTLTexture>          MTLTextureRef;
typedef id<MTLCommandBuffer>    MTLCommandBufferRef;
typedef id<MTLCommandQueue>     MTLCommandQueueRef;
typedef id<MTLCommandEncoder>   MTLCommandEncoderRef;
#else
typedef struct objc_object      CAMetalLayer;
typedef struct objc_object*     CAMetalDrawableRef;
typedef struct objc_object*     MTLDeviceRef;
typedef struct objc_object*     MTLTextureRef;
typedef struct objc_object*     MTLCommandBufferRef;
typedef struct objc_object*     MTLCommandQueueRef;
typedef struct objc_object*     MTLCommandEncoderRef;
#endif
// unity internal native render buffer struct (the one you acquire in C# with RenderBuffer.GetNativeRenderBufferPtr())
struct RenderSurfaceBase;
typedef struct RenderSurfaceBase* UnityRenderBufferHandle;
// be aware that this struct is shared with unity implementation so you should absolutely not change it
typedef struct
    UnityRenderBufferDesc
{
    unsigned    width, height, depth;
    unsigned    samples;
    int         backbuffer;
}
UnityRenderBufferDesc;
// trick to make structure inheritance work transparently between c/cpp
// for c we use "anonymous struct"
#ifdef __cplusplus
    #define START_STRUCT(T, Base)   struct T : Base {
    #define END_STRUCT(T)           };
#else
    #define START_STRUCT(T, Base)   typedef struct T { struct Base;
    #define END_STRUCT(T)           } T;
#endif
// we will keep objc objects in struct, so we need to explicitely mark references as strong to not confuse ARC
// please note that actual object lifetime is managed in objc++ code, so __unsafe_unretained is good enough for objc code
// DO NOT assign objects to UnityDisplaySurface* members in objc code.
// DO NOT store objects from UnityDisplaySurface* members in objc code, as this wont be caught by ARC
#ifdef __OBJC__
    #ifdef __cplusplus
        #define OBJC_OBJECT_PTR __strong
    #else
        #define OBJC_OBJECT_PTR __unsafe_unretained
    #endif
#else
    #define OBJC_OBJECT_PTR
#endif
// unity common rendering (display) surface
typedef struct
    UnityDisplaySurfaceBase
{
    UnityRenderBufferHandle unityColorBuffer;
    UnityRenderBufferHandle unityDepthBuffer;
    UnityRenderBufferHandle systemColorBuffer;
    UnityRenderBufferHandle systemDepthBuffer;
    void*               cvTextureCache;         // CVOpenGLESTextureCacheRef
    void*               cvTextureCacheTexture;  // CVOpenGLESTextureRef
    void*               cvPixelBuffer;          // CVPixelBufferRef
    unsigned            targetW, targetH;
    unsigned            systemW, systemH;
    int                 msaaSamples;
    int                 useCVTextureCache;      // [bool]
    int                 srgb;                   // [bool]
    int                 disableDepthAndStencil; // [bool]
    int                 allowScreenshot;        // [bool] currently we allow screenshots (from script) only on main display
    int                 api;                    // [UnityRenderingAPI]
}
UnityDisplaySurfaceBase;
// START_STRUCT confuse clang c compiler (though it is idiomatic c code that works)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmissing-declarations"
// GLES display surface
START_STRUCT(UnityDisplaySurfaceGLES, UnityDisplaySurfaceBase)
OBJC_OBJECT_PTR CAEAGLLayer *    layer;
OBJC_OBJECT_PTR EAGLContext*    context;
// system FB
unsigned    systemFB;
unsigned    systemColorRB;
// target resolution FB/target RT to blit from
unsigned    targetFB;
unsigned    targetColorRT;
// MSAA FB
unsigned    msaaFB;
unsigned    msaaColorRB;
// when we enable AA for non-native resolution we need interim RT to resolve AA to (and then we will blit it to screen)
UnityRenderBufferHandle resolvedColorBuffer;
// will be "shared", only one depth buffer is needed
unsigned    depthRB;
// render surface gl setup: formats and AA
unsigned    colorFormat;
unsigned    depthFormat;
END_STRUCT(UnityDisplaySurfaceGLES)
// Metal display surface
START_STRUCT(UnityDisplaySurfaceMTL, UnityDisplaySurfaceBase)
OBJC_OBJECT_PTR CAMetalLayer *       layer;
OBJC_OBJECT_PTR MTLDeviceRef        device;
OBJC_OBJECT_PTR MTLCommandQueueRef  commandQueue;
OBJC_OBJECT_PTR CAMetalDrawableRef  drawable;
OBJC_OBJECT_PTR MTLTextureRef       systemColorRB;
OBJC_OBJECT_PTR MTLTextureRef       targetColorRT;
OBJC_OBJECT_PTR MTLTextureRef       targetAAColorRT;
OBJC_OBJECT_PTR MTLTextureRef       depthRB;
OBJC_OBJECT_PTR MTLTextureRef       stencilRB;
unsigned                            colorFormat;        // [MTLPixelFormat]
unsigned                            depthFormat;        // [MTLPixelFormat]
END_STRUCT(UnityDisplaySurfaceMTL)
// START_STRUCT confuse clang c compiler (though it is idiomatic c code that works)
#pragma clang diagnostic pop
// be aware that this enum is shared with unity implementation so you should absolutely not change it
typedef enum
    UnityRenderingAPI
{
    apiOpenGLES2    = 2,
    apiOpenGLES3    = 3,
    apiMetal        = 4,
}
UnityRenderingAPI;
#ifdef __cplusplus
extern "C" {
#endif
int UnitySelectedRenderingAPI();
#ifdef __cplusplus
} // extern "C"
#endif
// gles
#ifdef __cplusplus
extern "C" {
#endif
void InitRenderingGLES();
void CreateSystemRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
void DestroySystemRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
void CreateRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
void DestroyRenderingSurfaceGLES(UnityDisplaySurfaceGLES* surface);
void CreateSharedDepthbufferGLES(UnityDisplaySurfaceGLES* surface);
void DestroySharedDepthbufferGLES(UnityDisplaySurfaceGLES* surface);
void CreateUnityRenderBuffersGLES(UnityDisplaySurfaceGLES* surface);
void DestroyUnityRenderBuffersGLES(UnityDisplaySurfaceGLES* surface);
void StartFrameRenderingGLES(UnityDisplaySurfaceGLES* surface);
void EndFrameRenderingGLES(UnityDisplaySurfaceGLES* surface);
void PreparePresentGLES(UnityDisplaySurfaceGLES* surface);
void PresentGLES(UnityDisplaySurfaceGLES* surface);
#ifdef __cplusplus
} // extern "C"
#endif
// metal
#ifdef __cplusplus
extern "C" {
#endif
void InitRenderingMTL();
void CreateSystemRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
void DestroySystemRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
void CreateRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
void DestroyRenderingSurfaceMTL(UnityDisplaySurfaceMTL* surface);
void CreateSharedDepthbufferMTL(UnityDisplaySurfaceMTL* surface);
void DestroySharedDepthbufferMTL(UnityDisplaySurfaceMTL* surface);
void CreateUnityRenderBuffersMTL(UnityDisplaySurfaceMTL* surface);
void DestroyUnityRenderBuffersMTL(UnityDisplaySurfaceMTL* surface);
void StartFrameRenderingMTL(UnityDisplaySurfaceMTL* surface);
void EndFrameRenderingMTL(UnityDisplaySurfaceMTL* surface);
void PreparePresentMTL(UnityDisplaySurfaceMTL* surface);
void PresentMTL(UnityDisplaySurfaceMTL* surface);
#ifdef __cplusplus
} // extern "C"
#endif
#ifdef __cplusplus
extern "C" {
#endif
// for Create* functions if surf is null we will actuially create new one, otherwise we update the one provided
// gles: one and only one of texid/rbid should be non-zero
// metal: resolveTex should be non-nil only if tex have AA
UnityRenderBufferHandle UnityCreateExternalSurfaceGLES(UnityRenderBufferHandle surf, int isColor, unsigned texid, unsigned rbid, unsigned glesFormat, const UnityRenderBufferDesc* desc);
UnityRenderBufferHandle UnityCreateExternalSurfaceMTL(UnityRenderBufferHandle surf, int isColor, MTLTextureRef tex, const UnityRenderBufferDesc* desc);
UnityRenderBufferHandle UnityCreateExternalColorSurfaceMTL(UnityRenderBufferHandle surf, MTLTextureRef tex, MTLTextureRef resolveTex, const UnityRenderBufferDesc* desc);
UnityRenderBufferHandle UnityCreateExternalDepthSurfaceMTL(UnityRenderBufferHandle surf, MTLTextureRef tex, MTLTextureRef stencilTex, const UnityRenderBufferDesc* desc);
// creates "dummy" surface - will indicate "missing" buffer (e.g. depth-only RT will have color as dummy)
UnityRenderBufferHandle UnityCreateDummySurface(UnityRenderBufferHandle surf, int isColor, const UnityRenderBufferDesc* desc);
// disable rendering to render buffers (all Cameras that were rendering to one of buffers would be reset to use backbuffer)
void    UnityDisableRenderBuffers(UnityRenderBufferHandle color, UnityRenderBufferHandle depth);
// destroys render buffer
void    UnityDestroyExternalSurface(UnityRenderBufferHandle surf);
// sets current render target
void    UnitySetRenderTarget(UnityRenderBufferHandle color, UnityRenderBufferHandle depth);
// final blit to backbuffer
void    UnityBlitToBackbuffer(UnityRenderBufferHandle srcColor, UnityRenderBufferHandle dstColor, UnityRenderBufferHandle dstDepth);
// get native renderbuffer from handle
UnityRenderBufferHandle UnityNativeRenderBufferFromHandle(void *rb);
MTLCommandBufferRef UnityCurrentMTLCommandBuffer();
// sets vSync on OSX 10.13 and up
#if PLATFORM_OSX
void MetalUpdateDisplaySync();
#endif
#ifdef __cplusplus
} // extern "C"
#endif
// metal/gles unification
#define GLES_METAL_COMMON_IMPL_SURF(f)                                              \
inline void f(UnityDisplaySurfaceBase* surface)                                     \
{                                                                                   \
    if(surface->api == apiMetal)    f ## MTL((UnityDisplaySurfaceMTL*)surface); \
    else                            f ## GLES((UnityDisplaySurfaceGLES*)surface);\
}                                                                                   \
#define GLES_METAL_COMMON_IMPL(f)                               \
inline void f()                                                 \
{                                                               \
    if(UnitySelectedRenderingAPI() == apiMetal) f ## MTL();     \
    else                                        f ## GLES();\
}                                                               \
GLES_METAL_COMMON_IMPL(InitRendering);
GLES_METAL_COMMON_IMPL_SURF(CreateSystemRenderingSurface);
GLES_METAL_COMMON_IMPL_SURF(DestroySystemRenderingSurface);
GLES_METAL_COMMON_IMPL_SURF(CreateRenderingSurface);
GLES_METAL_COMMON_IMPL_SURF(DestroyRenderingSurface);
GLES_METAL_COMMON_IMPL_SURF(CreateSharedDepthbuffer);
GLES_METAL_COMMON_IMPL_SURF(DestroySharedDepthbuffer);
GLES_METAL_COMMON_IMPL_SURF(CreateUnityRenderBuffers);
GLES_METAL_COMMON_IMPL_SURF(DestroyUnityRenderBuffers);
GLES_METAL_COMMON_IMPL_SURF(StartFrameRendering);
GLES_METAL_COMMON_IMPL_SURF(EndFrameRendering);
GLES_METAL_COMMON_IMPL_SURF(PreparePresent);
GLES_METAL_COMMON_IMPL_SURF(Present);
#undef GLES_METAL_COMMON_IMPL_SURF
#undef GLES_METAL_COMMON_IMPL
frameworks/ElvaChatServiceSDK.framework/Info.plist
Binary files differ
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeDirectory
Binary files differ
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeRequirements-1
Binary files differ
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeResources
@@ -6,15 +6,27 @@
    <dict>
        <key>Headers/ECServiceSdk.h</key>
        <data>
        +czpHCKr0RyN3ZZ46mtvHeSIOD4=
        R7uVHQdO3BB2h54BiyZU7f45TXE=
        </data>
        <key>Headers/ElvaChatServiceSDK.h</key>
        <data>
        zvjJNXUq1tMPygHWKxbHcw+t/to=
        </data>
        <key>Headers/UnityForwardDecls.h</key>
        <data>
        EoGij/5BmK7cWWbj+ECBEyHcipw=
        </data>
        <key>Headers/UnityInterface.h</key>
        <data>
        P/sjx4YTcqreb+VGlwJdSXt3mew=
        </data>
        <key>Headers/UnityRendering.h</key>
        <data>
        tpS6Ojd+1vYtSX3a9iHqKBisk70=
        </data>
        <key>Info.plist</key>
        <data>
        3mH5tyPn2toa9mnARefTzdvyHQY=
        aPsZodAxj3+lEfZDw7gcQlZ9RzY=
        </data>
        <key>Modules/module.modulemap</key>
        <data>
@@ -27,11 +39,11 @@
        <dict>
            <key>hash</key>
            <data>
            +czpHCKr0RyN3ZZ46mtvHeSIOD4=
            R7uVHQdO3BB2h54BiyZU7f45TXE=
            </data>
            <key>hash2</key>
            <data>
            saI0SnEo/pnmeOVrQSZun3u7n87KjNwuJ/CPvUX4t6g=
            0KWDBFl6RcB7XrS9PcZavOPm8G/WIh71auQmj5qgQQg=
            </data>
        </dict>
        <key>Headers/ElvaChatServiceSDK.h</key>
@@ -45,6 +57,39 @@
            E5u6tslHRsk1y/hRCzNYA+Y7hUk9TOeyzXU8+CH94kM=
            </data>
        </dict>
        <key>Headers/UnityForwardDecls.h</key>
        <dict>
            <key>hash</key>
            <data>
            EoGij/5BmK7cWWbj+ECBEyHcipw=
            </data>
            <key>hash2</key>
            <data>
            qGe/u1NQdJ0ozw4DJssg4Hf7XQAr3Nhq38AtL5lBFCc=
            </data>
        </dict>
        <key>Headers/UnityInterface.h</key>
        <dict>
            <key>hash</key>
            <data>
            P/sjx4YTcqreb+VGlwJdSXt3mew=
            </data>
            <key>hash2</key>
            <data>
            1YyuYhkj1P+cTNpiFzPHUDv5xbwuaaoRor5YNa5ch4w=
            </data>
        </dict>
        <key>Headers/UnityRendering.h</key>
        <dict>
            <key>hash</key>
            <data>
            tpS6Ojd+1vYtSX3a9iHqKBisk70=
            </data>
            <key>hash2</key>
            <data>
            2za8ddck31K1kpTAgJkI63QlousiGlaiXPRV/mtdEYw=
            </data>
        </dict>
        <key>Modules/module.modulemap</key>
        <dict>
            <key>hash</key>
frameworks/ElvaChatServiceSDK.framework/_CodeSignature/CodeSignature
Binary files differ
frameworks/WAAIhelpImpl.framework/Headers/WAAIhelpImpl.h
@@ -16,4 +16,4 @@
// In this header, you should import all the public headers of your framework using statements like #import <WAAIhelpImpl/PublicHeader.h>
//time:2018/8/27 14:57 ver:3.7.0
//time:2019/01/15 12:30 ver:3.8.0
frameworks/WAAIhelpImpl.framework/Info.plist
Binary files differ
frameworks/WAAIhelpImpl.framework/WAAIhelpImpl
Binary files differ
res/ElvaChatServiceSDK.bundle/ab_reward.png
res/ElvaChatServiceSDK.bundle/ar.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
"ContactCustomerService" = "اتصل بنا";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="هل وجدت هذا مُفيداً.";
"elva__mark_no"="لا";
"elva__mark_unhelpful_toast"="أنت لم تجد هذا مُفيداً.";
"elva__mark_yes"="أجل";
"elva__mark_yes_no_question"="هل كان هذا مُفيداً؟";
"content_too_long"="No more than %ld chars!";
//阿拉伯语ar
"content_too_long"="لا تستخدم أكثر من %ld رمزا";
"ContactCustomerService" = "اِتصل بنا";
"self_service_interface" = "خدمة ذاتية";
"offLine"= "لقد انفصلت الشبكة. يرجى المحاولة مجددا لاحقا";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="تم تأكيد السؤال مُفيدا";
"elva__mark_unhelpful_toast"="تم تعيين السؤال غير مفيد";
"elva__mark_yes_no_question"="هل كان هذا مفيدا؟";
"elva__mark_no"="لا";
"elva__mark_yes"="نعم";
"RewardBalance"="رموزك";
"GoTo" = "اتجه الى";
"Forum" = "منتدى الأسئلة و الإجابات";
"RewardSuccess" = "نجاج";
"RewardFailure" = "فشل";
"TokenInsufficient" = "الرموز الخاصة بك غير كافية";
"NeedMoreHelp" = "هل تريد المزيد من المساعدة؟";
res/ElvaChatServiceSDK.bundle/checkbox_checked.png
res/ElvaChatServiceSDK.bundle/checkbox_unchecked.png
res/ElvaChatServiceSDK.bundle/de.lproj/Localizable.strings
New file
@@ -0,0 +1,24 @@
//德语de,de-AT,de-CH,de-DE,de-LI,de-LU
"content_too_long"="Nicht mehr al%ld Zeichen!";
"ContactCustomerService" = "Kontaktieren uns";
"self_service_interface" = "Selbst-Service";
"offLine"= "Ihr Netzwerk ist getrennt, bitte versuchen Sie es später noch einmal";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Sie fanden es hilfreich.";
"elva__mark_unhelpful_toast"="Sie finden es nicht hilfreich.";
"elva__mark_yes_no_question"="Hilft das?";
"elva__mark_no"="Nein";
"elva__mark_yes"="Ja";
"RewardBalance"="Ihre Tokens:";
"GoTo" = "Gehen in die";
"Forum" = "Gemeinschaft der Fragen und Antworten";
"RewardSuccess" = "Erfolg";
"RewardFailure" = "Fehlgeschlagen";
"TokenInsufficient" = "Tokens reichen nicht aus";
"NeedMoreHelp" = "Benötigen weitere Hilfe?";
res/ElvaChatServiceSDK.bundle/el-GR.lproj/Localizable.strings
New file
@@ -0,0 +1,32 @@
//希腊语el-GR,el-CY
"content_too_long"="Δεν μπορείτε να ξεπεράσετε τους %ld χαρακτήρες!";
"ContactCustomerService" = "Επικοινωνήστε μας";
"self_service_interface" = "Σελφ σέρβις";
"offLine"= "Το δίκτυό σας αποσυνδέθηκε, παρακαλώ προσπαθήστε αργότερα!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Σας βοήθησε";
"elva__mark_unhelpful_toast"="Δεν σας βοήθησε";
"elva__mark_yes_no_question"="Σας βοήθησε;";
"elva__mark_no"="Όχι";
"elva__mark_yes"="Ναι";
"RewardBalance"="Το υπόλοιπο των πόντων σας:";
"GoTo" = "Μέχρι";
"Forum" = "Φόρουμ ερωτήσεων και απαντήσεων";
"RewardSuccess" = "Επιτυχής ανταμοιβή";
"RewardFailure" = "Αποτυχής ανταμοιβή";
"TokenInsufficient" = "Το υπόλοιπό σας δεν επαρκεί";
"NeedMoreHelp" = "Χρειάζεστε βοήθεια?";
res/ElvaChatServiceSDK.bundle/en.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
"ContactCustomerService" = "Contact Us";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="You find this helpful";
"elva__mark_no"="NO";
"elva__mark_unhelpful_toast"="You didn't find this helpful";
"elva__mark_yes"="YES";
"elva__mark_yes_no_question"="Was this helpful?";
//英语en
"content_too_long"="No more than %ld chars!";
"ContactCustomerService" = "Contact Us";
"self_service_interface" = "Self-Service";
"offLine"= "Your network is disconnected,please try again later";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="You found this helpful";
"elva__mark_unhelpful_toast"="You didn't find this helpful";
"elva__mark_yes_no_question"="Was this helpful?";
"elva__mark_no"="NO";
"elva__mark_yes"="YES";
"RewardBalance"="Your tokens:";
"GoTo" = "Go to the";
"Forum" = "QA Forum";
"RewardSuccess" = "Success";
"RewardFailure" = "Failed";
"TokenInsufficient" = "Your tokens is insufficient";
"NeedMoreHelp" = "Need more help?";
res/ElvaChatServiceSDK.bundle/es.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
//西班牙语es
"content_too_long"="No más de %ld caracteres!";
"ContactCustomerService" = "CONTÁCTANOS";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="Le resultó útil";
"elva__mark_no"="NO";
"elva__mark_unhelpful_toast"="No le resultó útil";
"elva__mark_yes"="Sí";
"elva__mark_yes_no_question"="¿Sirvió de ayuda";
"content_too_long"="No more than %ld chars!";
"self_service_interface" = "Autoservicio";
"offLine"= "Su red está desconectada, inténtelo de nuevo más tarde.";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Le resultó útil";
"elva__mark_unhelpful_toast"="No le resultó útil";
"elva__mark_yes_no_question"="¿Sirvió de ayuda";
"elva__mark_no"="NO";
"elva__mark_yes"="Sí";
"RewardBalance"="Sus puntos:";
"GoTo" = "Ir a";
"Forum" = "Foro de QA";
"RewardSuccess" = "Éxito";
"RewardFailure" = "Ha fallado";
"TokenInsufficient" = "Sus puntos son insuficientes";
"NeedMoreHelp" = "Necesitas más ayuda?";
res/ElvaChatServiceSDK.bundle/fa.lproj/Localizable.strings
New file
@@ -0,0 +1,32 @@
//法斯语fa,fa-IR
"content_too_long"="نباید از %ld حروف بیشتر باشد.";
"ContactCustomerService" = "با ما تماس بگیرید";
"self_service_interface" = "پشتیبانی";
"offLine"= "اینترنت شما قطع می باشد ، لطفا بعدا امتحان کنید.";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="این کمک مفیدی بود";
"elva__mark_unhelpful_toast"="کمک مفیدی نبود";
"elva__mark_yes_no_question"="آیا این مفید بود؟";
"elva__mark_no"="نه";
"elva__mark_yes"="بله";
"RewardBalance"="امتیاز باقیمانده شما";
"GoTo" = "برو به";
"Forum" = "گروه پرسش و پاسخ";
"RewardSuccess" = "موفقیت آمیز";
"RewardFailure" = "ناموفق";
"TokenInsufficient" = "امتیاز شما کافی نیست .";
"NeedMoreHelp" = "نیاز به کمک بیشتری دارید؟";
res/ElvaChatServiceSDK.bundle/fr-FR.lproj/Localizable.strings
New file
@@ -0,0 +1,24 @@
//法语fr,fr-FRfr-BE,fr-CA,fr-CH,fr-FR,fr-LU,fr-MC
"content_too_long"="Pas plus de %ld de caractères";
"ContactCustomerService" = "Contactez-nous";
"self_service_interface" = "Libre service";
"offLine"= "Votre connexion ne fonctionne pas, veuillez essayer de nouveau";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Est ce que cela vous aidé";
"elva__mark_unhelpful_toast"="Vous n'avez pas trouvez cela utile";
"elva__mark_yes_no_question"="Est-ce que cela a été utile?";
"elva__mark_no"="Non";
"elva__mark_yes"="Oui";
"RewardBalance"="Vos jetons";
"GoTo" = "Allez à";
"Forum" = "FAQ";
"RewardSuccess" = "Succès";
"RewardFailure" = "Echec";
"TokenInsufficient" = "Jeton insuffisant";
"NeedMoreHelp" = "Besoin d'aide?";
res/ElvaChatServiceSDK.bundle/id-ID.lproj/Localizable.strings
New file
@@ -0,0 +1,18 @@
//印度尼西亚语id,id-ID
"content_too_long"="Tidak dapat melebihi %ld karakter!";
"ContactCustomerService" = "Hubungi Kami";
"self_service_interface" = "Self-Service";
"offLine"= "Koneksi internet anda terputus, harap coba beberapa saat lagi";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Anda merasa terbantu";
"elva__mark_unhelpful_toast"="Anda merasa tidak terbantu";
"elva__mark_yes_no_question"="Apakah ini membantu?";
"elva__mark_no"="TIDAK";
"elva__mark_yes"="YA";
"RewardBalance"="Token Anda:";
"GoTo" = "Pergi ke";
"Forum" = "Forum Q&A";
"RewardSuccess" = "Berhasil";
"RewardFailure" = "Gagal";
"TokenInsufficient" = "Saldo token Anda tidak mencukupi";
"NeedMoreHelp" = "butuh lebih bantuan?";
res/ElvaChatServiceSDK.bundle/it-IT.lproj/Localizable.strings
New file
@@ -0,0 +1,32 @@
//意大利语it,it-CH,it-IT
"content_too_long"="Non più di %ld caratteri!";
"ContactCustomerService" = "Contattaci";
"self_service_interface" = "Self Service";
"offLine"= "Il tuo collegamento si è interrotto, si prega di effettuare nuovamente l'accesso!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Lo hai trovato utile";
"elva__mark_unhelpful_toast"="Lo hai trovato inutile";
"elva__mark_yes_no_question"="Questo è utile?";
"elva__mark_no"="No";
"elva__mark_yes"="Si";
"RewardBalance"="Il tuo bilancio punti:";
"GoTo" = "Fino a";
"Forum" = "Spazio domande";
"RewardSuccess" = "Premiazione riuscita";
"RewardFailure" = "Premiazione fallita";
"TokenInsufficient" = "Bilancio insufficiente";
"NeedMoreHelp" = "Serve ancora aiuto?";
res/ElvaChatServiceSDK.bundle/ja.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
//日语ja
"content_too_long"="%ld文字を超えてはならない!";
"ContactCustomerService" = "お問い合わせ";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="役に立ちました";
"elva__mark_no"="いいえ";
"elva__mark_unhelpful_toast"="役に立たなかった";
"elva__mark_yes"="はい";
"elva__mark_yes_no_question"="お役に立ちましたか";
"content_too_long"="No more than %ld chars!";
"self_service_interface" = "セルフサービス";
"offLine"= "ネットのアクセスがエラー発生しました、もう一度やり直してください!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="役に立ったと評価されました";
"elva__mark_unhelpful_toast"="役に立たなかったと評価されました";
"elva__mark_yes_no_question"="お役に立ちましたか?";
"elva__mark_no"="いいえ";
"elva__mark_yes"="はい";
"RewardBalance"="ポイント残高";
"GoTo" = "に行く";
"Forum" = "QAフォーム";
"RewardSuccess" = "奨励成功";
"RewardFailure" = "奨励失敗";
"TokenInsufficient" = "残高が足りません";
"NeedMoreHelp" = "他の質問もある?";
res/ElvaChatServiceSDK.bundle/ko.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
//韩语ko
"content_too_long"="%ld 단어를 초과 할 수 없습니다!";
"ContactCustomerService" = "연락하기";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="도움이 되는 내용입니다";
"elva__mark_no"="아니요";
"elva__mark_unhelpful_toast"="도움이 안 되요";
"elva__mark_yes"="예";
"elva__mark_yes_no_question"="도움이 되는 내용인가요";
"content_too_long"="No more than %ld chars!";
"self_service_interface" = "셀프 서비스";
"offLine"= "네트워크 연결이 끊어졌습니다. 나중에 다시 시도하십시오.";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="질문이 도움이 되었다고 표시되었습니다";
"elva__mark_unhelpful_toast"="질문이 도움이 되지 않았다고 표시되었습니다";
"elva__mark_yes_no_question"="이 내용이 유용했나요?";
"elva__mark_no"="아니요";
"elva__mark_yes"="예";
"RewardBalance"="포인트 잔고:";
"GoTo" = "가기";
"Forum" = "Q&A 커뮤니티";
"RewardSuccess" = "성공";
"RewardFailure" = "실패";
"TokenInsufficient" = "토큰이 부족합니다.";
"NeedMoreHelp" = "도움이 더 필요하십니까?";
res/ElvaChatServiceSDK.bundle/pl-PL.lproj/Localizable.strings
New file
@@ -0,0 +1,32 @@
//波兰语pl,pl-PL
"content_too_long"="Nie więcej niż %ld znaków!";
"ContactCustomerService" = "Obsługa klienta";
"self_service_interface" = "Samoobsługa";
"offLine"= "Brak dostępu do sieci, proszę spróbuj ponownie później.";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Uznałeś to za przydatne.";
"elva__mark_unhelpful_toast"="Nie uznałeś tego za przydatne.";
"elva__mark_yes_no_question"="Czy było to przydatne?";
"elva__mark_no"="Nie";
"elva__mark_yes"="Tak";
"RewardBalance"="Twój bilans punktów:";
"GoTo" = "Idź do";
"Forum" = "Forum pytań i odpowiedzi.";
"RewardSuccess" = "Sukces.";
"RewardFailure" = "Porażka.";
"TokenInsufficient" = "Niewystarczająca ilość punktów.";
"NeedMoreHelp" = "Bisogno Di Più Aiuto?";
res/ElvaChatServiceSDK.bundle/pt-PT.lproj/Localizable.strings
New file
@@ -0,0 +1,24 @@
//葡萄牙语pt,pt-BR,pt-PT
"content_too_long"="Não pode ser mais de %ld palavras!";
"ContactCustomerService" = "Contate-Nos";
"self_service_interface" = "Self-Service";
"offLine"= "Sua conexão foi desconectada, entre novamente!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Isso é útil";
"elva__mark_unhelpful_toast"="Isso não é útil";
"elva__mark_yes_no_question"="É útil?";
"elva__mark_no"="Não";
"elva__mark_yes"="Sim";
"RewardBalance"="Seus saldos de ponto:";
"GoTo" = "Chegar";
"Forum" = "Comunidade de pergunta e resposta";
"RewardSuccess" = "Recompense com sucesso";
"RewardFailure" = "Recompense não com sucesso";
"TokenInsufficient" = "Saldos insuficientes";
"NeedMoreHelp" = "Precisa mais ajuda?";
res/ElvaChatServiceSDK.bundle/ru.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
"ContactCustomerService" = "Связаться с Нами";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="Вы считаете это полезным";
"elva__mark_no"="НЕТ";
"elva__mark_unhelpful_toast"="Вам это не помогло";
"elva__mark_yes"="ДА";
"elva__mark_yes_no_question"="Это было полезно";
"content_too_long"="No more than %ld chars!";
//俄语ru
"content_too_long"="Не более %ld символов!";
"ContactCustomerService" = "Свяжитесь с нами";
"self_service_interface" = "Самообслуживание";
"offLine"= "Вы не подключены к сети, повторите попытку позже";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Вопрос был обозначен как Полезный";
"elva__mark_unhelpful_toast"="Вопрос был обозначен как Бесполезный";
"elva__mark_yes_no_question"="Это вам помогло?";
"elva__mark_no"="НЕТ";
"elva__mark_yes"="ДА";
"RewardBalance"="Остаток баллов:";
"GoTo" = "Перейти";
"Forum" = "QA форум";
"RewardSuccess" = "Успешно";
"RewardFailure" = "Неудачно";
"TokenInsufficient" = "Недостаточно баллов";
"NeedMoreHelp" = "Нужна помощь?";
res/ElvaChatServiceSDK.bundle/sv-SE.lproj/Localizable.strings
New file
@@ -0,0 +1,24 @@
//瑞典语sv,sv-FI,sv-SE
"content_too_long"="Får inte vara längre än %ld tecken!";
"ContactCustomerService" = "Kontakta KS";
"self_service_interface" = "Självservice";
"offLine"= "Anslutning bruten, försök igen!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Fick du hjälp av detta?";
"elva__mark_unhelpful_toast"="Fick du inte hjälp av detta?";
"elva__mark_yes_no_question"="Fick du hjälp av detta?";
"elva__mark_no"="Nej";
"elva__mark_yes"="Ja";
"RewardBalance"="Dina poäng:";
"GoTo" = "Gå till";
"Forum" = "Frågeforum";
"RewardSuccess" = "Lyckades";
"RewardFailure" = "Misslyckades";
"TokenInsufficient" = "Du har inte tillräckligt med poäng";
"NeedMoreHelp" = "Behöver mer hjälp?";
res/ElvaChatServiceSDK.bundle/th.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Your network is disconnected,please try again later";
//泰语th
"content_too_long"="ไม่เกิน %ld ตัวอักษร!";
"ContactCustomerService" = "ติดต่อเรา";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Was this helpful?";
"NO"="NO";
"YES"="YES";
"elva__mark_helpful_toast"="มีประโยชน์สำหรับคุณ";
"elva__mark_no"="ไม่ใช่";
"elva__mark_unhelpful_toast"="ไม่มีประโยชน์สำหรับคุณ";
"elva__mark_yes"="ใช่";
"elva__mark_yes_no_question"="ข้อมูลดังกล่าวมีประโยชน์หรือไม่";
"content_too_long"="No more than %ld chars!";
"self_service_interface" = "Self-Service";
"offLine"= "การเชื่อมต่อผิดพลาด กรุณาเข้าระบบอีกครั้ง!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="คำถามนี้ถูกระบุว่ามีประโยชน์";
"elva__mark_unhelpful_toast"="คำถามนี้ถูกระบุว่าไม่มีประโยชน์";
"elva__mark_yes_no_question"="ข้อมูลดังกล่าวมีประโยชน์หรือไม่";
"elva__mark_no"="ไม่ใช่";
"elva__mark_yes"="ใช่";
"RewardBalance"="แต้มของคุณเหลือ:";
"GoTo" = "ถึง";
"Forum" = "ถามตอบ";
"RewardSuccess" = "ให้รางวัลสำเร็จ";
"RewardFailure" = "ให้รางวัลล้มเหลว";
"TokenInsufficient" = "จำนวนคงเหลือไม่พอ";
"NeedMoreHelp" = "ต้องการความช่วยเหลือ?";
res/ElvaChatServiceSDK.bundle/tr.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "ElvaChat Service";
"offLine"="Bağlantı hatası, lütfen tekrar deneyin!";
//土耳其语tr
"content_too_long"="En fazla %ld karakter kullanılabilir!";
"ContactCustomerService" = "İletişim";
"self_service_interface"="services";
"Message" = "Message";
"WasHelp"="Bunu faydalı buldunuz mu?";
"NO"="Hayır";
"YES"="Evet";
"elva__mark_helpful_toast"="Bunu faydalı buldum!";
"elva__mark_no"="Hayır";
"elva__mark_unhelpful_toast"="Bunu faydalı bulmadım!";
"elva__mark_yes"="Evet";
"elva__mark_yes_no_question"="Bunu faydalı buldunuz mu?";
"content_too_long"="Maks %ld karakter kullanılabilir!";
"self_service_interface" = "Kendin Hallet";
"offLine"= "Bağlantı hatası,lütfen tekrar deneyin!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Bunu faydalı buldum!";
"elva__mark_unhelpful_toast"="Bunu faydalı bulmadım!";
"elva__mark_yes_no_question"="Bunu faydalı buldunuz mu?";
"elva__mark_no"="Hayır";
"elva__mark_yes"="Evet";
"RewardBalance"="Puanınız:";
"GoTo" = "Git:";
"Forum" = "Sıkça Sorulan Sorular";
"RewardSuccess" = "Başarılı!";
"RewardFailure" = "Başarısız!";
"TokenInsufficient" = "Bakiyeniz yetersiz!";
"NeedMoreHelp" = "Ihtiyacınız yardıma?";
res/ElvaChatServiceSDK.bundle/vi-VN.lproj/Localizable.strings
New file
@@ -0,0 +1,24 @@
//越南语vi,vi-VN
"content_too_long"="Không vượt quá %ld ký tự!";
"ContactCustomerService" = "Liên hệ CSKH";
"self_service_interface" = "Dịch vụ tự động";
"offLine"= "Đã mất kết nối, hãy vào lại!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="Phát hiện có hỗ trợ";
"elva__mark_unhelpful_toast"="Phát hiện không có hỗ trợ";
"elva__mark_yes_no_question"="Ở đây có hỗ trợ không?";
"elva__mark_no"="Không";
"elva__mark_yes"="Có";
"RewardBalance"="Tích điểm còn:";
"GoTo" = "Đến";
"Forum" = "Cộng đồng hỏi đáp";
"RewardSuccess" = "Thưởng thành công";
"RewardFailure" = "Thưởng thất bại";
"TokenInsufficient" = "Không còn đủ";
"NeedMoreHelp" = "cần thêm giúp?";
res/ElvaChatServiceSDK.bundle/zh-Hans.lproj/Localizable.strings
@@ -1,23 +1,18 @@
/*
  Localizable.strings
  ElvaTestIOS
  Created by wwj on 16/5/30.
  Copyright © 2016年 im30. All rights reserved.
*/
"ElvaChatService" = "聊天客服";
"offLine"= "您的链接已经断开,请重新进入!";
"ContactCustomerService" = "联系我们";
"self_service_interface" = "自助服务";
"Message" = "信息";
"WasHelp"="此信息对您有帮助吗?";
"NO"="否";
"YES"="是";
"elva__mark_helpful_toast"="你发现这有帮助";
"elva__mark_no"="否";
"elva__mark_unhelpful_toast"="你发现这无帮助";
"elva__mark_yes"="是";
"elva__mark_yes_no_question"="这有帮助吗";
//中文简体zh-Hans
"content_too_long"="不能超过%ld个字!";
"ContactCustomerService" = "联系客服";
"self_service_interface" = "自助服务";
"offLine"= "您的链接已经断开,请重新进入!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="你发现这有帮助";
"elva__mark_unhelpful_toast"="你发现这无帮助";
"elva__mark_yes_no_question"="这有帮助吗";
"elva__mark_no"="否";
"elva__mark_yes"="是";
"RewardBalance"="您的积分余额:";
"GoTo" = "到";
"Forum" = "问答社区";
"RewardSuccess" = "打赏成功";
"RewardFailure" = "打赏失败";
"TokenInsufficient" = "余额不足";
"NeedMoreHelp" = "需要更多帮助?";
res/ElvaChatServiceSDK.bundle/zh-Hant.lproj/Localizable.strings
@@ -1,26 +1,18 @@
/*
 Localizable.strings
 ElvaTestIOS
 Created by wwj on 16/5/30.
 Copyright © 2016年 im30. All rights reserved.
 */
"ElvaChatService" = "聊天客服";
"offLine"= "您的鏈接已經斷開,請重新進入!";
"ContactCustomerService" = "聯系我們";
"self_service_interface" = "自助服務";
"Message" = "信息";
"WasHelp"="此信息對您有幫助嗎?";
"NO"="否";
"YES"="是";
"elva__mark_helpful_toast"="妳發現這有幫助";
"elva__mark_no"="否";
"elva__mark_unhelpful_toast"="妳發現這無幫助";
"elva__mark_yes"="是";
"elva__mark_yes_no_question"="這有幫助嗎";
//中文繁体zh-Hant
"content_too_long"="不能超過%ld個字!";
"ContactCustomerService" = "聯系客服";
"self_service_interface" = "自助服務";
"offLine"= "您的連結已經斷開,請重新進入!";
"CustomerService"="HELP";
"elva__mark_helpful_toast"="妳發現這有幫助";
"elva__mark_unhelpful_toast"="妳發現這無幫助";
"elva__mark_yes_no_question"="這有幫助嗎?";
"elva__mark_no"="否";
"elva__mark_yes"="是";
"RewardBalance"="您的積分餘額:";
"GoTo" = "到";
"Forum" = "問答社區";
"RewardSuccess" = "打賞成功";
"RewardFailure" = "打賞失敗";
"TokenInsufficient" = "餘額不足";
"NeedMoreHelp" = "需要更多幫助?";
res/Localization/ar.lproj/Localizable.strings
File was deleted
res/Localization/en.lproj/Localizable.strings
File was deleted
res/Localization/es.lproj/Localizable.strings
File was deleted
res/Localization/ja.lproj/Localizable.strings
File was deleted
res/Localization/ko.lproj/Localizable.strings
File was deleted
res/Localization/ru.lproj/Localizable.strings
File was deleted
res/Localization/th.lproj/Localizable.strings
File was deleted
res/Localization/zh-Hans.lproj/Localizable.strings
File was deleted
res/Localization/zh-Hant.lproj/Localizable.strings
File was deleted