Ⅰ android app開發中工具類怎麼國際化
工具類國際化的話,就要將裡面的文字在values加上不同的國家代號.string.xml這樣的形式,當別的國家使用就會去載入對應的文字
Ⅱ iOS App國際化
app有時需要同時支持多種語言,國際化分為應用名國際化和app內容國際化兩部分,接下來以中英兩種語言來介紹一下如何實現app國際化
一.應用名稱國際化
1.首先創建一個項目,然後執行以下操作
選擇語言後會有以下彈窗, 若項目中用到storyBoard並且裡面的文字也需要國際化,此處要如下圖勾選,然後店家Finish即可
2.創建一個Strings文件,命名為 InfoPlist.strings(此處名字不可以更改)
3.選中該文件
接下來,把所需要的語言都選中,如下圖:
選中後InfoPlist.strings文件下面會出現兩個文件,分別是英文和中文,如下圖:
4.在兩個文件中,分別寫入app的英文名和中文名,key-value方式。key 為CFBundleDisplayName
運行程序後,app名稱就會根據系統的語言來顯示中英文
二.內容國際化
1.內容國際化和app名稱國際化一樣,只是創建Strings文件的時候把名字改為Localizable.strings (此名字不許隨意更改)
2.把文字同樣以key-value的形式分別加入到Strings文件中
注意:這兩個文件裡面的key要保持一致
先導入Foundation,然後通過 NSLocalizedString 函數找到key對應的value, 這樣就可以實現語言根據系統語言來切換了
三.storyBoard和xib國際化
1.xib
選擇語言後,會自動形成一個key
這樣就可以實現語言切換
2.storyBorad和xib操作相同
Ⅲ Android國際化多語言切換
關於App國際化,之前有講到國際化資源、字元換、布局相關,想要了解的猛戳 用力抱一下APP國際化 。借著本次重構多語言想跟大家聊一下多語言切換,多語言切換對於一款國際化App來講是重中之重,並非難事,但是若要做好也是一件不容易的事情。
當我們做了系統的配置更改,比如說切換了系統導航或者說更改了深色模式,那麼我們一般的處理是也是要對Application作出處理。
如果項目中有用到ApplicationContext去getString(@StringRes int id)實現載入的提示語,那麼如果只是單純的重啟界面則無法讓當前的提示語跟隨當前切換的語言,所以我們要麼重啟整個應用,要麼對ApplicationContext中的Local也作出相應的更新方可,這里有一點問題,雖然Android N之後updateConfiguration是過時方法,官方給出使用createConfigurationContext代替,但是更新ApplicationContext的Local發現無效使用老版本updateConfiguration正常。
如果你發現你的應用廣播通知欄適配無效,那就是context中的Local在切換語言是並未及時更新Local,這里調試一下便知,如果是Applicaiton注冊的廣播,那麼多半情況下是沒有更新ApplicationContext的Local所導致的。
多語言適配基本步驟大概就是如此了,下面看一下適配的細節問題。
[圖片上傳失敗...(image-b42d06-1640685147639)]
還有一點Android N之後,手機系統的語言配置選項已經不是單選了,改為一個列表了,具體可以參考手機設置中的語言和輸入法,所以 setLocal(@Nullable Locale loc) 方法建議不要再使用了,我相信很多人還在用,正確的用法應該是 setLocals(@Nullable LocaleList locales) ,需要傳遞一個集合。
當你的應用使用的是androidx.appcompat:appcompat:1.2.0及以上時,BaseActivity中需要實現下面方法。
這套方案目前不在推薦,直接去替換attatchBaseContext()中的context則可,經過測試是完全正常的。
以下則是多語言操作的工具類,現在提供出來,需要的朋友可以自行進行改造。
Ⅳ Android如何實現國際化
只要在 res 文件夾下新建對應語言的 values 文件夾就好了, 如,英語環境下的,文件夾命名為:values-en 美國英文環境:values-en-rUS 中文環境為:values-zh 大陸地區中文環境: 在 eclipse 下新建 Android 項目時,會在 res 目錄下自動創建一個默認語言環境的文件夾 : values 當某一個資源沒有在語言環境的對應的資源集合中找到時,就會使用 values 下的資源。 若某一個語言環境沒有在項目中定義語言環境,那麼也會使用 values 下的資源。 圖片國際化同理。 在 res 下新建 drawable-zh 文件夾,存放中文環境下的圖片 新建 drawable-en 作為英語環境下的圖片 在 eclipse 下新建 Android 項目時,會在 res 目錄下自動創建三個默認語言環境的文件夾: drawable-hdpi drawable-ldpi drawable-mdpi 分別用於存放高、中。低解析度的圖片。Android 系統會根據手機的解析度,而自動從不同的對應的某一個文件夾下去載入圖片。 同樣,它們也可以國際化,命名規則如: drawable-zh-hdpi drawable-en-ldpi drawable-en-rUS-mdpi 使用,在 XML 中需要使用到圖片的地方用表達式: @drawable/icon 代碼中使用:R.drawable.icon。因為圖片資源同樣也會在 R 文件中生成一個索引
Ⅳ Android 國際化適配總結
只需要創建對應的values-xxx文件夾,再裡面創建string文件,這是最基本的適配國際化。
這也是比較細節的地方,首頁在設計布局的時候一定要有一種思維,去思考如果以後你這個布局要做國際化,方不方便擴展和優美的展示, 因為國外的語言比如英文,基本都會比中文長,如果你寫布局的時候基本都寫死寬高為多少dp,那就很難做適配
如果翻譯出來的結果實在太長,也可以使用一些技巧,例如使用中文的近義詞再翻譯,總之,你要站在老外的角度去看,你就會發現有些中文表現成其它語言的時候,可以換個簡短的詞。比如說你有個賬號密碼輸入提示框,有提示「請輸入您要設置的密碼」,那你是不是可以翻譯成「passwork」 (可能這個例子舉的不是很好,但是大概就是能做一個轉變的意思)
文字拼接翻譯的時候,一般如果做翻譯語序會混亂。比如說 「您已登陸了10天,總共虧損了6666元」。這種情況下最直接的方式是用String.format。
但是也會存在無法使用String.format的情況,我舉一個極端的例子,假如這個 10 和 6666 兩個數字的樣式和其它文字的樣式不同,比其他文字大啊,顏色不同之類的,甚至可能是圖片。這樣就不好用String.format,但我們也不能蠢到對 「您已登陸了」,「天,總共虧損了」,「元」這3段單獨做翻譯然後拼起來,這樣語序就不對的。
其實這種情況也簡單,做個思維的轉變,我們需要根據變數去做分割,這里變數就是 10 和 6666 ,能把整段話分割成3段(翻譯還是全部一起翻譯,只是做國際化拆段做)。
我們就可以在string文件中定義
拼接就 result = getString(R.string.xxx_paragraph_1) + 10 + getString(R.string.xxx_paragraph_2) + 6666 + getString(R.string.xxx_paragraph_3)
英文就是(我用機翻,英語不太好)
結論就是先整體翻譯再根據變數去拆,而不是先拆再翻。
後台返回的東西也要做國際化,如果是使用了第三方的東西,就要考慮別人有沒有提供,別人沒提供的話就只能自己寫一個邏輯的adapter來做個簡單的適配。如果不方向,可以把第三方返回的數據傳給自己的後台,由我們的後台做翻譯,就相當於多做了一步請求,但是方便修改。
這也是我做海外翻譯覺得最痛的點,比如說某些地方用了成語或者歇後語之類的,「新年你的運勢是:虎虎生威」。這虎虎生威怎麼翻譯,這是比較蛋疼的一個點。
其它資源我們也可以像文字一樣做適配,在values-xxx文件夾下創建相應的資源。
舉幾個我比較常用的做法:
(1)圖片,如果有些圖片存在中文,可以在這個文件夾下放一張名字一模一樣的圖片。缺點就是多佔內存嘛,所以正確的做法是開發這種需求的時候盡可能圖文分離,分離不了就放兩張。
(2)尺寸,上面我說了有些翻譯後的內容普遍比中文長,處理想辦法改文字長度的方法外,我們還可以設多套長度,在使用的時候引用資源,這樣不同語音展示出來的長度就不同。我覺得這個還是比較常用的。
Ⅵ Android的國際化語言適配(系統語言適配+APP內部適配)
Android國際化語言適配分為兩種
1.更改手機系統語言後,APP的語言也會跟著變化
2.只改變自己APP的語言,不受手機系統語言的影響,不影響其他APP的語言,可以參考微信的切換語言的效果。
只需要創建不同語言的values即可
具體操作參考 簡單的Android客戶端國際化(語言適配)方案
操作的時候要注意: 當選擇所要切換的語言後,則進行修改Config以及重啟APP,一定要將選擇的語言保存到SP中,且在activity中的oncreate中將SP中存儲的語言取出來重新設置Config,否則當重啟APP後,還是會跟系統語言一樣。
具體操作參考 Android應用程序內部切換語言及自定義語言
Ⅶ android的程序怎麼使資源文件隨著系統語言來進行語言改變,也就是實現android代碼的國際化。
這個很簡單,在res目錄下,新建對應語言的values文件夾
中文 : values-zh
中文簡體: values-zh-CN
英文 : values-en
英文(美式) : values-en-rUS
系統提供的values是默認語言環境,當象上面一樣提供了其它語言環境時,以提供的語言環境優先。
Ⅷ Android國際化之多語言(配置及應用內設置)✈️
Android系統通過判斷當前系統的Local配置,來使用對應的strings.xml文件
values-->strings.xml 默認語言(簡體中文)
values-zh-rHK-->strings.xml 繁體中文
values-en-->strings.xml 英語
在Android系統中,系統的配置大都通過 Configuration 來管理,包括strings等等。
onCreate() 中注冊
onDestroy() 中取消注冊
setLanguage() 方法
通過上面的設置,可以實現不重啟APP修改語言的效果
以上只是對Android多語言設置的一些小小的總結,可能有理解不周的情況,歡迎給我留言指出😄
Ⅸ 全棧項目開發3:應用國際化和許可權處理
對於現在的APP應用,國際化需求並不高,但是作為一項有用的功能,我們還是按部就班地去實現它,由於還未完成全局狀態管理和全局事件匯流排,暫時使用了一個全局變數Locale去定義,因此要完成切換就需要手動修改變數值後重啟應用(熱更新是不可以的),目前僅實現簡體中文和美式英文兩種語言
1.引入國際化需要的包。
2.在Flutter節點下添加generate,可以在重啟或者熱更新時實時更新翻譯文件。
3.在根目錄下增加l10n.yaml文件,用於配置實時更新的內容。
4.在根Widget的MaterialApp中增加如下配置,大多都是來自第三步自動更新的內容,如果編譯器不能自動識別,可以手動引入如下包:import 'package:flutter_gen/gen_l10n/app_localizations.dart'
5.編譯翻譯文件,在lib/I10n的目錄下新增app_zh.arb和app_en.arb兩個文件(如果要具體到國家代碼可以新建為app_zh_CN.arb和app_en_US.arb),文件採用Json的語法,Vscode等編輯器也有對應的語法插件,至於翻譯語法,大家可以自行了解,限於篇幅,僅做常用的展示。
註:app表示變數名,後續可以使用AppLocalizations.of(context)!.app調用,語言切換時就會按照對應的翻譯文件進行展示。
@app表示對app變數的描述,是給翻譯人員看的,與代碼運行無關。
模板語句,有時候需要實現類似「倒計時20秒」只有數字變化的語句,此時就形成了模板插值語句,在模板上插入數字,上述hit6即實現了這樣一個語法,最終會被翻譯為一個函數,讀者可自行嘗試。
關於iOS平台
嘗試過國際化的讀者可能發現在iOS平台無法順利完成切換(上述全局變數方式和使用全局狀態管理的實現方式有本質區別,注意區分),這是因為iOS應用程序有一套自建的語言環境管理機制,所以使用上面的方式適配國際化對於iOS應用程序是無效的,為了讓iOS應用程序也能支持國際化,還需要在原生iOS工程中進行額外的配置。 使用Xcode打開Flutter項目的iOS原生工程,切換到工程面板,然後在Localization選項配置中添加中文支持即可。
在Android/ios平台許可權處理是繞不開的內容,本應用作為demo應用,會盡可能地多索要許可權,但是設計為僅在用戶安裝後第一次打開時索取一次,後續不再主動索取,僅在用戶需要使用相關功能時引導用戶給予許可權即可。許可權管理的實現相對簡單,可以引用permission_handler包,並加入以下代碼,在APP啟動時調用一次requestAllPermission函數即可。
下章內容 : 主題切換,歡迎頁,引導頁,
小破站同名,同步文章且定時直播編程,有興趣可以移步
Ⅹ Android:應用多語言切換,國際化實現
生成多種語言的string.xml,裡面放置對應的語言,修改配置(Configuration),重啟之後就會載入對應語言的string.xml。
1:在res目錄下,生成對應的語言包,比如英語:
在res目錄下生成了可看到生成了:
<string name="hello">你好</string>
英語:
<string name="hello">hello</string>
之後就可以使用getResource.getString(R.string.hello),這個字元串會載入相對應的配置的語言。
3:修改語言配置
修改語言配置後,需要重新啟動進程,並且殺死進程。
1:有些手機是可以在設置里直接切換語言的,這個也就是Configuration改變。用戶重新設置系統語言導致應用的語言也會重新設置。Configuration改變,如果在Manifest中不設置android:configChanges忽略掉配置改變,Activity會重新創建,那麼我們就可以在Activity的onCreate中,重新修改語言配置。
2:切換語言後,退出應用,重新進來,你會發現又是系統設置的語言。所以需要在Application開啟時,需要再次切換語言配置。