1. 程式人生 > >iOS實現多種語言具體步驟

iOS實現多種語言具體步驟

最近要做一個應用要實現本地化,因為使用的是xcode4,應用程式本地化的問題跟以前的版本還是有些不同,在網上找了些資料對於xcode4以上的版本資料還是相對較少,有些最後要通過手動建立檔案,這樣操作實在是太麻煩,所以經過一個下午的研究,總算是成功了一點點,還是慶幸一下。先給出結果。

英語:                                                                    中文:



              

                       

具體實現如下:

靜態本地化 : 載入的檔案,如xib檔案,影象檔案,還有實現應用程式名本地化

動態本地化: 顯示的字串本地化

一。先做準備:設定程式本地化

在xcode點選程式圖示:點選Info選項->Localizationn,點選“+”,選擇要新增的語言,簡體中文選擇Chinese(zh-Hans)

你會在你工程目錄下發現多了個資料夾,“zh-Hans.lproj",x-code使用.lproj作為其本地化資料夾的副檔名。


二。設定xib檔案本地化, 影象本地化的方法是一樣道理的,可以根據使用者的顯示語言載入不同的xib檔案

操作:點選xib檔案,在IB視窗中選擇選項選擇“File Inspecter",也就是第一個選項,選擇“Localization->"+"選擇新增的語言,

效果如下,原來的xib檔案就會出現三角形,其下有兩個檔案,因為我的為storyboard,但效果是一樣的。就可以實現將其本地化了,非常簡單吧


三。設定應用程式名本地化,

      設定應用程式名儲存在應用程式的Info.plist檔案中,我們例子實際上為Localize-Info.plist,選擇檔案,並不需要對檔案進行本地化,而是使"Info.strings"本地化就可以了,在Localize.Info.plist,空白處右鍵,選擇Show Raw Keys/Values,就會看到應用程式名實際為CFBundleDisplayName,我們只需要在對應的 Info.plist中新增以下程式碼就可以了

英文版:

C程式碼  收藏程式碼
  1. CFBundleDisplayName = "Localization";  

 中文版:

C程式碼  收藏程式碼
  1. CFBundleDisplayName = "本地化";  



 效果圖:


四、載入的字串本地化,

      原理:在程式碼中將加入的字串加入NSLocalizeString巨集中,啟動程式時,系統將根據語言載入相應的檔案得到其對應的字串檔案,這個字串可以通過系統將NSLocalizedString中的巨集生成名為“Localizable.strings”的檔案,當然你可以自己去建立這個檔案,然後手動是新增對應的字串。,

C程式碼  收藏程式碼
  1. labelName.text = NSLocalizedString(@"Name", @"The name is ");  
  2. labelPassword.text  = NSLocalizedString(@"Password:",@"The password is");  

 NSlocalizeString 第一個引數是內容,第二個引數將會轉化為字串檔案裡的註釋。

轉化方法如下 :先關閉專案,開啟終端,進入到專案的目錄,輸入genStrings 檔名.m就可以將該檔案中的巨集轉化為相應的字串檔案,


效果如下:會看到生成"Localizable.strings",

開啟檔案,就可以交給翻譯人員去翻譯了


===================

1、本地化字串,網上那些方法我就不說了,我只更正一點:如果你的Classes下面有子資料夾會報錯,使用下面的命令:

find . -name \*.m | xargs genstrings -o /Users/apple/(你目標的資料夾)

2、本地化軟體的名字:

(1)在info.plist檔案裡做如下設定:

 (2)建立一個InfoPlist.strings檔案,裡面寫如下內容:

"CFBundleDisplayName"="你軟體的名稱";

"CFBundleName"="你軟體的名稱";

(3)本地化這個檔案即可。

3、本地化資源,不必細說了,網上資料很多,這裡我只說下我的疑惑:圖片資源貌似只能用zh-Hans。

4、本地化icon,目前不支援,所以不要費勁的去本地化icon了。

5、商店的本地化,也不必細說了,很簡單,按照蘋果需要的填就可以了。

====================

應用genstrings和NSLocalizedString實現App文字的本地化


Admin
2012年3月20日

App本地化的須要不消講大師也都熟悉打聽,本文將介紹一種簡單的辦法來實現字串的本地化。


在不推敲本地化的景象下,我們若是在程式碼中給一個Button定義title,一般會如許寫:



btn.titleLable.text = @"Example Button";



也許我們已經寫了很長的程式碼才推敲到本地化的題目,大可不必頭疼,這時辰,我們要做的是把程式碼從頭掃一遍,然後把每個會顯示給使用者看的字串做如下批改:
(對於內部應用的字串就用不著本地化了)



btn.titleLable.text = NSLocalizedString(@"btn_title", nil);


NSLocalizedString是一個定義在NSBundle.h中的巨集,其用處是尋找當前體系說話對應的Localizable.strings檔案中的某個key的值。
第一個引數是key的名字,第二個引數是對這個“鍵值對”的註釋,在用genstrings物件生成Localizable.strings檔案時會主動加上去。



到今朝為止,我們還沒有生成Localizable.strings檔案。這是一個逆向的過程,也就是先寫好呼叫過程,再生成strings資料檔案。


當我們把所有的.m檔案都修發好了,就該genstrings物件出場了。
  1. 啟動終端,進入工程地點目次。
  2. 新建兩個目次,推薦放在資料目次下。
    目次名會感化到Localizable.strings檔案對應的說話,不克不及寫錯了。這裡zh-Hans指簡體中文,重視不克不及用zh.lproj默示。



mkdir zh-Hans.lproj
mkdir en.lproj


  3. 生成Localizable.strings檔案



genstrings -o zh-Hans.lproj *.m
genstrings -o en.lproj *.m


  -o <資料夾>,指定生成的Localizable.strings檔案放置的目次。
  *.m,掃描所有的.m檔案。這裡支撐的檔案還包含.h, .java等。


  4. 右鍵點選工程的Resources目次,選擇“New Group”,新增兩個目次zh-Hans.lproj和en.lproj。
  5. 在新建的group中新增方才生成的Localizable.strings檔案。
  6. 最後在Localizable.strings檔案中,批改每個key所對應的內容,就大功成功了。



說了一大堆,其實操縱起來還是很簡單的,總的來講就是兩條:
  1. 在程式碼裡用NSLocalizedString獲取要本地化的字串
  2. 用genstrings掃描程式碼檔案,生成Localizable.strings,然後加到工程中。 

相關推薦

iOS實現多種語言具體步驟

最近要做一個應用要實現本地化,因為使用的是xcode4,應用程式本地化的問題跟以前的版本還是有些不同,在網上找了些資料對於xcode4以上的版本資料還是相對較少,有些最後要通過手動建立檔案,這樣操作實在是太麻煩,所以經過一個下午的研究,總算是成功了一點點,還是慶幸一下。先

Java實現多種語言編譯執行

Java實現多種語言編譯執行 摘要:在Java開發過程中,經常會遇到使用Java實現某一個功能比其他語言要複雜,因此通常將該功能使用其他程式語言來完成後,再通過Java呼叫編譯程式編譯執行該指令碼,並將結果以字串形式傳給Java變數。本文將簡要介紹如何利用Java實現多種語言編譯執行

ios多種語言的本地化思路

其中 inf 其他 選擇 display 應該 shared 自己的 機會 多語言在應用程序中一般有兩種做法: 一、程序中提供給用戶自己選擇的機會; 二、根據當前用戶當前移動設備的語言自動將我們的app切換對應語言。 第一種做法比較簡單完全靠自己的發揮了,這裏主要講第二種做

系統管理模塊_崗位管理_實現CRUD功能的具體步驟並設計Role實體

xtend delet 實現 result action == b- actions asto 系統管理模塊_崗位管理_實現CRUD功能的具體步驟並設計Role實體 1,設計實體/表   設計實體 --> JavaBean --> hbm.xml -->

iOS開發 -- KVO的實現原理與具體應用

轉載連結:https://www.jianshu.com/p/e59bb8f59302 本文分為2個部分:概念與應用。概念部分旨在剖析 KVO 這一設計模式的實現原理;應用部分通過建立的專案,以說明 KVO 技術在 iOS 開發中所帶來的作用; 如果是作為剛接觸 KVO

歸併排序演算法及其C語言具體實現

本節介紹一種不同於插入排序和選擇排序的排序方法——歸併排序,其排序的實現思想是先將所有的記錄完全分開,然後兩兩合併,在合併的過程中將其排好序,最終能夠得到一個完整的有序表。 例如對於含有 n 個記錄的無序表,首先預設表中每個記錄各為一個有序表(只不過表的長度都為 1),然後進行兩兩合併,使 n 個有序表變為

iOS元件化之具體實現

隨著應用需求逐步迭代,應用的程式碼體積將會越來越大,為了更好的管理應用工程,我們開始藉助CocoaPods版本管理工具對原有應用工程進行拆分。但是僅僅完成程式碼拆分還不足以解決業務之間的程式碼耦合,為了更好的讓拆分出去的業務工程能夠獨立執行,必須進行元件拆分並且

Android RecyclerView-使用Itemdecoration實現粘性頭部功能,詳細到具體步驟.

一 前言 該文詳細的介紹了RecyclerView.ItemDecoration實現分組粘性頭部的功能,讓我們自己生產程式碼,告別程式碼搬運工的時代.另外文末附有完整Demo的連線.看下效果: 二 知識準備 RecyclerView.ItemDec

springboot 過濾器實現具體步驟

過濾器,顧名思義,能夠過濾一切請求(而攔截器只能過濾action請求),包括靜態資源的請求。 實現很簡單: (1)寫一個過濾器。過濾實現在doFilter方法裡面。chain.doFilter(request, response)  表示過濾通過,能夠往下執行。所以過濾操作

C語言實現多種型別變數的混合輸出

來源:大工慕課 連結 作者:Caleb Sung 題目要求 練習各種型別變數的輸出。 解答示範 #include <stdio.h> int main () {

IOS編程語言 Swift 新編譯器Xcode6

xid line 編程 uid https release 頁面 cep pro https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Progra

ionic2 基於ngx-translate實現語言切換,翻譯

click create -a fault template con 設置 切換 使用 介紹 ngx-translate 是Angular 2+的國際化(i18n)庫,在github的地址是箭頭 https://github.com/ngx-translate/core 將

iOS 實現QQ界面

mov end 點擊 gre blog state 數據 track prop 應師傅要求編寫個QQ界面來不吝賜教下我的代碼問題。 編寫個QQ界面。有三個組,每一個組有人。並顯示在線不在線。 先看一下效果圖 這裏省了事由於我的圖片僅僅用了一張。假設要依據人的不同設置,

iOS 實現簡單的毛玻璃效果

rec 毛玻璃效果 實現簡單 ges 導航欄 view設置 with 技術 簡單 最近在整理導航欄的漸隱漸現效果,整理過程中偶然學會了圖片的毛玻璃效果實現,很簡單,不多說了,先上圖看看效果對比, 這是原圖, 這是加了效果後的,創建圖片的代碼就不上了,下面看下添加效果的代碼

OPENWRT中SSH免密鑰登陸(具體步驟

文件 登陸 如果 roo article 能夠 -m zed track 通過使用ssh-keygen生成公鑰,在兩臺機器之間互相建立新人通道極客。 如果本地機器是client,遠程機器為server。 1、使用ssh-keygen生成rsa k

iOS開發核心語言Objective C —— 面向對象思維、setter和getter方法及點語法

才幹 各路 alt .net 行為 變量的作用域 fadein 格式 讀取 本分享是面向有意向從事iOS開發的夥伴們。或者已經從事了iOS的開發人員。假設您對iOS開發有極高的興趣,能夠與我一起探討iOS開發。一起學習,共同進步。假設您是零基礎,建議您先

Linux內核裁剪的具體步驟

啟動盤 cti man eth 不常用 lan drivers direct ket 在menuconfig中配置: 詳細介紹內核配置選項及刪改情況 第一部分:全部刪除 Code maturity level options ---> 代碼成熟等級選項 []Prom

個人小程序實現自然語言對話工程查詢--快遞,身份證,詞典,天氣等功能完整代碼解析

ref 統一 開放平臺 ebs 對話 各種功能 參數 src i/o 這個小程序旨在通過自然語言對話查詢快遞、身份證、天氣、詩歌、詞典等等的功能。 自然語言對話,即使用中文語言直接對程序下命令,比如:‘查一下天氣’,“幫我查一下1

AndroidStudio項目提交(更新)到github最具體步驟

完整 用戶 nbsp request 文件 success imp height 界面 在使用studio開發的項目過程中有時候我們想將項目公布到github上。曾經都是用一種比較麻煩的方式(cmd)進行提交。近期發現studio事實上是自帶這樣的功能的,最終能夠擺

scp出現ssh port 22: Connection refused 問題解決具體步驟

his download http all left ron pos sudo .sh [root(0)@sys11 09:20:29 /home/work/Code_release/bj]# scp ./release.sh [email protected]