真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開發(fā)語言切換,IOS開發(fā)語言

iOS 主要語言切換問題

上架時需要把主要語言切換成英文,存儲時一直提示“因?yàn)槟仨毾葹槭褂眠@種語言的每個版本提供所有必需的截屏”錯誤。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),友好企業(yè)網(wǎng)站建設(shè),友好品牌網(wǎng)站建設(shè),網(wǎng)站定制,友好網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,友好網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

解決辦法:刪除掉英文的所有截屏,構(gòu)建版本不要選擇內(nèi)容,重新進(jìn)入APP信息頁面,主要語言選擇英文,存儲,存儲成功

如何在iOS開發(fā)中切換顯示語言實(shí)現(xiàn)國際化

1.在Project設(shè)置,添加中英兩種語言:

2.新建Localizable.strings文件,作為多語言對應(yīng)的詞典,存儲多種語言,點(diǎn)擊右側(cè)Localization,勾選中英:

3.添加一個字段,

在English中,添加:SUBMIT_BTN_TITLE = Go;

在Chinese中,添加:SUBMIT_BTN_TITLE = 開始;

4.一個工具類GDLocalizableController,用來切換本地語言:

//

// GDLocalizableController.h

// guide-book

//

// Created by why on 7/16/14.

// Copyright (c) 2014 why. All rights reserved.

//

#import

@interface GDLocalizableController : NSObject

+(NSBundle *)bundle;//獲取當(dāng)前資源文件

+(void)initUserLanguage;//初始化語言文件

+(NSString *)userLanguage;//獲取應(yīng)用當(dāng)前語言

+(void)setUserlanguage:(NSString *)language;//設(shè)置當(dāng)前語言

@end

//

// GDLocalizableController.m

// guide-book

//

// Created by why on 7/16/14.

// Copyright (c) 2014 why. All rights reserved.

//

#import GDLocalizableController.h

@implementation GDLocalizableController

static NSBundle *bundle = nil;

+ ( NSBundle * )bundle{

return bundle;

}

+(void)initUserLanguage{

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

NSString *string = [def valueForKey:@userLanguage];

if(string.length == 0){

//獲取系統(tǒng)當(dāng)前語言版本

NSArray* languages = [def objectForKey:@AppleLanguages];

NSString *current = [languages objectAtIndex:0];

string = current;

[def setValue:current forKey:@userLanguage];

[def synchronize];//持久化,不加的話不會保存

}

//獲取文件路徑

NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@lproj];

bundle = [NSBundle bundleWithPath:path];//生成bundle

}

+(NSString *)userLanguage{

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

NSString *language = [def valueForKey:@userLanguage];

return language;

}

+(void)setUserlanguage:(NSString *)language{

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

//1.第一步改變bundle的值

NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@lproj ];

bundle = [NSBundle bundleWithPath:path];

//2.持久化

[def setValue:language forKey:@userLanguage];

[def synchronize];

}

@end

5. 自定義一個宏方便處理:

// ----- 多語言設(shè)置

#define CHINESE @zh-Hans

#define ENGLISH @en

#define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@ table:nil]

6.使用:

[GDLocalizableController setUserlanguage:CHINESE];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

[GDLocalizableController setUserlanguage:ENGLISH];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

iOS多語言-跟隨系統(tǒng)/應(yīng)用內(nèi)切換

結(jié)果:

Localizable.strings(Chinese, Simplified)

Localizable.strings(English)

PS: 使用[NSLocalizedString(@"TITLE", nil);]這種方式賦值的,多語言文件的名字必須是Localizable,否則只會顯示它的key

手機(jī)系統(tǒng)為英文時:

手機(jī)系統(tǒng)為中文時:

多語言文件名字不為Localizable,創(chuàng)建過程一致,只是名字換成其他的,結(jié)果:

這時候仍然用NSLocalizedString給控件賦值,只會顯示對應(yīng)的key了

正確顯示:

啟動時,默認(rèn)語言:

ps: 沒有做什么封裝 只是大概思路和用法來理解一下

IOS多語言切換4-framework中的語言切換和資源使用

開發(fā)語言:Swift 5.0

開發(fā)環(huán)境:Xcode 11.5

發(fā)布平臺:IOS 13

在IOS多語言切換3文章中,我們已經(jīng)實(shí)現(xiàn)了用戶通過App手動設(shè)置語言,來設(shè)置程序文字和圖片的多語言化,但隨著App開發(fā)的需求,一旦引入了Framework,按照上一章實(shí)現(xiàn)的功能,所有在Framework中使用的文字和圖片資源,無法隨著用戶設(shè)置的語言進(jìn)行切換,原因在于每個Framework或者項(xiàng)目都有自己的獨(dú)立Bundle,上一章中,我們只對Bundle.main包進(jìn)行了處理,所以接下來,我們要對每個Framework的Bundle都進(jìn)行多語言的處理。

以以下demo為例,建立一個包含2個framework的項(xiàng)目。

在Main.Storyboard和SubRes.Storyboard中,已經(jīng)設(shè)置好文字的中文與英文,此時運(yùn)行程序可以通過切換IOS設(shè)備的語言來實(shí)現(xiàn)App的語言切換

在SubRes.Storyboard中,使用MainRes中一張圖片arrowblue。

但運(yùn)行程序后,圖片無法顯示,原因是ios中,每個不同的framework有著自己默認(rèn)的bundle,而加載SubRes.Storyboard時,使用的是SubRes的bundle,但是arrowblue存在于MainRes的bundle中,SubRes.Storyboard無法找到這個圖片。

此問題的解決辦法是在Target-SubRes-BuildPhases-CopyBundleResources中,點(diǎn)擊+號,添加MainRes的Assets.xcassets。

這樣程序在編譯時,會把MainRes的bundle中的資源,復(fù)制到SubRes的bundle內(nèi),這樣程序運(yùn)行就正常了

我們期待程序使用用戶指定的語言而非系統(tǒng)指定的語言,和前幾章相同,我們通過實(shí)現(xiàn)MyLanguage類來完成此功能,MyLanguage類中,維護(hù)了一個bundleDir,保存當(dāng)前所有framework的bundle,每次用戶切換語言,我們更新bundleDir,構(gòu)造并且記錄用戶指定語言的bundle。

同時我們必須重定義Bundle類。

最后,我們需要擴(kuò)展Bundle類,記錄當(dāng)前Bundle的名字,方便通過字典查找。

在AppDelegate中使用MyLanguage

此時,運(yùn)行程序,可以看到模擬器的語言是英文,但APP中的文字已經(jīng)成功設(shè)置為中文了。

在SubRes實(shí)現(xiàn)MyResource類,用于獲取此framework中的多語言文字和圖片,具體內(nèi)容前幾章有提到,就不多做介紹了


當(dāng)前題目:ios開發(fā)語言切換,IOS開發(fā)語言
分享路徑:http://weahome.cn/article/hoghpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部