mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
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
This commit is contained in:
committed by
Facebook GitHub Bot
parent
3f405dcbd2
commit
07640dce69
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user