小说绘上架版本
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// TFLanguageManager.h
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/11/20.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TFLanguageType) {
|
||||
TFLanguageTypeDefault = 0, /** 跟随系统 */
|
||||
TFLanguageTypeSimplifiedChinese = 1, /** 简体中文 */
|
||||
TFLanguageTypeTraditionalChinese = 2, /** 繁体中文 */
|
||||
TFLanguageTypeEnglish = 3, /** 英文 */
|
||||
TFLanguageTypeTail = 4, /** 泰语 */
|
||||
};
|
||||
|
||||
#define TFLocalizedString(key) [TFLanguageManager stringWithKey:key]
|
||||
@interface TFLanguageManager : NSObject
|
||||
|
||||
// 与服务端的约定字段(上传服务端时使用)
|
||||
+ (NSString *)serverLocalized;
|
||||
|
||||
// 获取当前语言包中的文字
|
||||
// @param key 需要翻译的文字
|
||||
+ (NSString *)stringWithKey:(NSString *)key;
|
||||
|
||||
// 获取指定语言环境下的文字
|
||||
// @param key 需要翻译的文字
|
||||
// @param language 语言类型
|
||||
+ (NSString *)stringWithKey:(NSString *)key languageType:(TFLanguageType)type;
|
||||
|
||||
// 获取用户本地语言
|
||||
+ (TFLanguageType)userLanguage;
|
||||
|
||||
// 获取APP本地语言,如果没有找到则返回默认语言
|
||||
+ (TFLanguageType)localizedLanguage;
|
||||
|
||||
// 设置APP语言
|
||||
+ (void)setLanguageType:(TFLanguageType)type;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,162 @@
|
||||
//
|
||||
// TFLanguageManager.m
|
||||
// WXReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/11/20.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFLanguageManager.h"
|
||||
#import "WXYZ_TouchAssistantView.h"
|
||||
|
||||
static NSString *kUserLanguage = @"kUserLanguage";
|
||||
@interface TFLanguageManager ()
|
||||
// 语言包 Bundle
|
||||
@property (nonatomic ,strong ,class) NSBundle *languageBundle;
|
||||
// 本地语言名称
|
||||
@property (nonatomic ,strong ,class) NSString *userLanguageName;
|
||||
@end
|
||||
|
||||
@implementation TFLanguageManager
|
||||
@dynamic languageBundle;
|
||||
@dynamic userLanguageName;
|
||||
|
||||
static NSBundle *_languageBundle = nil;
|
||||
|
||||
+ (NSString *)stringWithKey:(NSString *)key
|
||||
{
|
||||
if (self.languageBundle) {
|
||||
return [self.languageBundle localizedStringForKey:key value:nil table:@"InfoPlist"] ?: key;
|
||||
} else {
|
||||
return NSLocalizedString(key, nil);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)setLanguageType:(TFLanguageType)type
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] setValue:type == TFLanguageTypeDefault ? nil : NSStringFromLocalizedLanguage(type) forKey:kUserLanguage];
|
||||
|
||||
_languageBundle = nil;
|
||||
|
||||
[[WXYZ_TouchAssistantView sharedManager] closeButtonClick];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Switch_Language object:nil];
|
||||
}
|
||||
|
||||
+ (NSString *)stringWithKey:(NSString *)key languageType:(TFLanguageType)type
|
||||
{
|
||||
if (type == TFLanguageTypeDefault) {
|
||||
return TFLocalizedString(key);
|
||||
}
|
||||
|
||||
NSString *t_language = NSStringFromLocalizedLanguage(type);
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:t_language ofType:@"lproj"];
|
||||
NSBundle *languageBundle = [NSBundle bundleWithPath:path];
|
||||
|
||||
if (languageBundle) {
|
||||
return [languageBundle localizedStringForKey:key value:nil table:@"InfoPlist"] ? : key;
|
||||
} else {
|
||||
return NSLocalizedString(key, nil);
|
||||
}
|
||||
}
|
||||
|
||||
+ (TFLanguageType)userLanguage
|
||||
{
|
||||
return TFLanguageTypeFromNSString([[NSUserDefaults standardUserDefaults] valueForKey:kUserLanguage]);
|
||||
}
|
||||
|
||||
+ (TFLanguageType)localizedLanguage
|
||||
{
|
||||
TFLanguageType language = TFLanguageTypeFromNSString([[NSUserDefaults standardUserDefaults] valueForKey:kUserLanguage]);
|
||||
NSString *t_launguage = NSStringFromLocalizedLanguage(language);
|
||||
return TFLanguageTypeFromNSString(t_launguage);
|
||||
}
|
||||
|
||||
+ (NSString *)serverLocalized
|
||||
{
|
||||
return [self serverLanguageType:[self localizedLanguage]];
|
||||
}
|
||||
|
||||
+ (NSString *)serverLanguageType:(TFLanguageType)type
|
||||
{
|
||||
switch (type) {
|
||||
case TFLanguageTypeSimplifiedChinese:
|
||||
return @"zh";
|
||||
|
||||
case TFLanguageTypeTraditionalChinese:
|
||||
return @"tw";
|
||||
|
||||
case TFLanguageTypeEnglish:
|
||||
return @"en";
|
||||
|
||||
case TFLanguageTypeTail:
|
||||
return @"th";
|
||||
|
||||
case TFLanguageTypeDefault: {
|
||||
NSString *t_str = NSStringFromLocalizedLanguage(type);
|
||||
TFLanguageType t_language = TFLanguageTypeFromNSString(t_str);
|
||||
return [self serverLanguageType:t_language];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 根据语言名称字符串获取指定语言枚举类型
|
||||
TFLanguageType TFLanguageTypeFromNSString(NSString *language) {
|
||||
if ([language hasPrefix:@"en"]) { // 英文
|
||||
return TFLanguageTypeEnglish;
|
||||
}
|
||||
|
||||
if ([language hasPrefix:@"zh-Hans"]) { // 简体中文
|
||||
return TFLanguageTypeSimplifiedChinese;
|
||||
}
|
||||
|
||||
if ([language hasPrefix:@"zh-Hant"]) { // 繁体中文
|
||||
return TFLanguageTypeTraditionalChinese;
|
||||
}
|
||||
|
||||
if ([language hasPrefix:@"th"]) { // 泰语
|
||||
return TFLanguageTypeTail;
|
||||
}
|
||||
|
||||
return TFLanguageTypeDefault;
|
||||
}
|
||||
|
||||
// 根据语言枚举类型获取指定语言名称(如果匹配不到则会返回默认语言)
|
||||
NSString * NSStringFromLocalizedLanguage(TFLanguageType language) {
|
||||
switch (language) {
|
||||
case TFLanguageTypeEnglish:
|
||||
return @"en";
|
||||
|
||||
case TFLanguageTypeSimplifiedChinese:
|
||||
return @"zh-Hans";
|
||||
|
||||
case TFLanguageTypeTraditionalChinese:
|
||||
return @"zh-Hant";
|
||||
|
||||
case TFLanguageTypeTail:
|
||||
return @"th";
|
||||
|
||||
case TFLanguageTypeDefault: {
|
||||
NSArray *languages = [NSLocale preferredLanguages];
|
||||
TFLanguageType t_language = TFLanguageTypeFromNSString(languages.firstObject);
|
||||
if (t_language == TFLanguageTypeDefault) return TF_Default_Language;
|
||||
return NSStringFromLocalizedLanguage(t_language);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSBundle *)languageBundle
|
||||
{
|
||||
if (!_languageBundle) {
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:self.userLanguageName ofType:@"lproj"];
|
||||
_languageBundle = [NSBundle bundleWithPath:path];
|
||||
}
|
||||
return _languageBundle;
|
||||
}
|
||||
|
||||
+ (NSString *)userLanguageName
|
||||
{
|
||||
NSString *userLanguage = [[NSUserDefaults standardUserDefaults] valueForKey:kUserLanguage];
|
||||
if (userLanguage) return userLanguage;
|
||||
return NSStringFromLocalizedLanguage(TFLanguageTypeDefault);
|
||||
}
|
||||
@end
|
||||
Reference in New Issue
Block a user