小说绘上架版本

This commit is contained in:
xtfei2011
2021-02-07 11:24:08 +08:00
commit ee5c1c8b12
1762 changed files with 115892 additions and 0 deletions
@@ -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