是否可以使用像Localizable.String这样的.String文件,但通过应用程序中的一个按钮而不是设置中的语言来更改语言?如果没有,有没有办法指出如何在FR语言中使用EN语言,例如:
在FR语言或EN语言中,我使用=> FXFormFieldTitle:NSLocalizedString(@"SMSInfo", @"")
在FR localizable.String中分别有这一行
/*
File.strings
Formbox
Created by OlostA on 04/11/2016.
Copyright © 2016 NewTelApps. All rights reserved.
*/
"SMSInfo" = "Souhaitez-vous recevoir par sms les informations de la marque ?";EN localizable.String中的那一行
/*
File.strings
Formbox
Created by OlostA on 04/11/2016.
Copyright © 2016 NewTelApps. All rights reserved.
*/
"SMSInfo" = "Do you want to receive the brand informations by sms?";所以我有个问题。如果我使用FR语言,有没有办法在localizable.strings EN中使用SMSInfo?
发布于 2016-11-04 22:42:21
是的,这是可能的改变语言从应用程序。
[LanguageManager saveLanguageByIndex:indexPath.row andCode:model.strLanguageCode];LanguageManager.h
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, ELanguage)
{
ELanguageEnglish,
ELanguageSpanish,
ELanguageFrench,
ELanguageGerman,
ELanguageItalian,
ELanguageArabic,
ELanguageChinese,
ELanguageCount
};
@interface LanguageManager : NSObject
+ (void)setupCurrentLanguage;
+ (NSArray *)languageStrings;
+ (NSString *)currentLanguageString;
+ (NSString *)currentLanguageCode;
+ (NSInteger)currentLanguageIndex;
+ (void)saveLanguageByIndex:(NSInteger)index andCode:(NSString *)strCode;
+ (BOOL)isCurrentLanguageRTL;
@endLanguageManager.m
#import "LanguageManager.h"
#import "NSBundle+Language.h"
static NSString * const LanguageCodes[] = { @"en", @"es", @"fr", @"de",@"it",@"ar" ,@"zh-Hans"};
static NSString * const LanguageStrings[] = { @"English", @"Spanish", @"French", @"German",@"Italian",@"Arabic",@"Chinese"};
static NSString * const LanguageSaveKey = @"currentLanguageKey";
@implementation LanguageManager
+ (void)setupCurrentLanguage
{
NSString *currentLanguage = [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey];
if (!currentLanguage) {
NSArray *languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
if (languages.count > 0) {
currentLanguage = languages[0];
[[NSUserDefaults standardUserDefaults] setObject:currentLanguage forKey:LanguageSaveKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
#ifndef USE_ON_FLY_LOCALIZATION
[[NSUserDefaults standardUserDefaults] setObject:@[currentLanguage] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
#else
[NSBundle setLanguage:currentLanguage];
#endif
}
+ (NSArray *)languageStrings
{
NSMutableArray *array = [NSMutableArray array];
for (NSInteger i = 0; i < ELanguageCount; ++i) {
[array addObject:NSLocalizedString(LanguageStrings[i], @"")];
}
return [array copy];
}
+ (NSString *)currentLanguageString
{
NSString *string = @"";
NSString *currentCode = [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey];
for (NSInteger i = 0; i < ELanguageCount; ++i) {
if ([currentCode isEqualToString:LanguageCodes[i]]) {
string = NSLocalizedString(LanguageStrings[i], @"");
break;
}
}
return string;
}
+ (NSString *)currentLanguageCode
{
return [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey];
}
+ (NSInteger)currentLanguageIndex
{
NSInteger index = 0;
NSString *currentCode = [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey];
for (NSInteger i = 0; i < ELanguageCount; ++i) {
if ([currentCode isEqualToString:LanguageCodes[i]]) {
index = i;
break;
}
}
return index;
}
+ (void)saveLanguageByIndex:(NSInteger)index andCode:(NSString *)strCode
{
if (index >= 0 && index < ELanguageCount) {
[[NSUserDefaults standardUserDefaults] setObject:strCode forKey:LanguageSaveKey];
[[NSUserDefaults standardUserDefaults] synchronize];
[[NSUserDefaults standardUserDefaults] setObject:@[strCode] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
[NSBundle setLanguage:strCode];
}
}
+ (BOOL)isCurrentLanguageRTL
{
NSInteger currentLanguageIndex = [self currentLanguageIndex];
return ([NSLocale characterDirectionForLanguage:LanguageCodes[currentLanguageIndex]] == NSLocaleLanguageDirectionRightToLeft);
}https://stackoverflow.com/questions/40424228
复制相似问题