forked from facebook/react-native
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Build the basic RCTLocalizationProvider
Summary: Changelog: [Internal][Add] - Build the basic RCTLocalizationProvider RCTLocalizationProvider is to enable the localization in fabric. But I'd start with internal apps now. Reviewed By: PeteTheHeat Differential Revision: D22704051 fbshipit-source-id: 845693a131c325f3c3d92b2ff491d5421966ad3e
- Loading branch information
1 parent
3f405dc
commit 07640dc
Showing
2 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
/* | ||
* Copyright (c) Facebook, Inc. and its affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
#import <React/RCTDefines.h> | ||
#import <UIKit/UIKit.h> | ||
|
||
@protocol RCTLocalizationProtocol <NSObject> | ||
|
||
/* | ||
Call for other apps to use their own translation functions | ||
*/ | ||
- (NSString *)localizedString:(NSString *)oldString withDescription:(NSString *)description; | ||
|
||
@end | ||
|
||
/* | ||
* It allows to set delegate for RCTLocalizationProvider so that we could ask APPs to do translations. | ||
* It's an experimental feature. | ||
*/ | ||
RCT_EXTERN void setLocalizationDelegate(id<RCTLocalizationProtocol> delegate); | ||
|
||
/* | ||
* It allows apps to provide their translated language pack in case the cannot do translation reactively. | ||
* It's an experimental feature. | ||
*/ | ||
RCT_EXTERN void setLocalizationLanguagePack(NSDictionary<NSString *, NSString *> *pack); | ||
|
||
@interface RCTLocalizationProvider : NSObject | ||
|
||
+ (NSString *)RCTLocalizedString:(NSString *)oldString withDescription:(NSString *)description; | ||
|
||
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/* | ||
* Copyright (c) Facebook, Inc. and its affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
#import "RCTLocalizationProvider.h" | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
static id<RCTLocalizationProtocol> _delegate = nil; | ||
static NSDictionary<NSString *, NSString *> *_languagePack = nil; | ||
|
||
void setLocalizationDelegate(id<RCTLocalizationProtocol> delegate) | ||
{ | ||
_delegate = delegate; | ||
} | ||
|
||
void setLocalizationLanguagePack(NSDictionary<NSString *, NSString *> *pack) | ||
{ | ||
_languagePack = pack; | ||
} | ||
|
||
@implementation RCTLocalizationProvider | ||
|
||
+ (NSString *)RCTLocalizedString:(NSString *)oldString withDescription:(NSString *)description | ||
{ | ||
if (_delegate != nil) { | ||
return [_delegate localizedString:oldString withDescription:description]; | ||
} | ||
|
||
if (_languagePack != nil) { | ||
return _languagePack[oldString]; | ||
} | ||
|
||
return oldString; | ||
} | ||
|
||
@end |