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,然后加到工程中。?

?

最后祝大師的產品早日走向世界。

轉載于:https://www.cnblogs.com/rywx/archive/2013/01/22/2872308.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖卷積神經網絡_深度層次化圖卷積神經網絡

來源&#xff1a;IJCAI 2019論文地址&#xff1a;https://arxiv.org/abs/1902.06667代碼地址&#xff1a;https://github.com/CRIPAC-DIG/H-GCNIntroduction1、問題定義&#xff1a;什么是半監督的節點分類&#xff1f;圖1 半監督節點分類如圖1所示&#xff0c;在標記數據量很少…

計算機二級怎么測試c語言,全國計算機等級測試二級C語言視頻教程(完整版).doc...

第一章 程序設計的基本概念01-01.程序設計的基本概念(1)01-02.程序設計的基本概念(2)01-03.程序設計的基本概念(3)第二章 C語言基礎知識02-01.簡單C語言的構成和格式(1)02-02.簡單C語言的構成和格式(2)02-03.標識符的組成和分類02-04.整型數據和實型數據(1)02-05.整型數據和實型…

去掉Phoca Download的Powered By

進入components/com_phocadownload/views/ 這是Phoca Download的模板文件夾 打開category/tmpl/default.php 分類頁 //echo </div><div class"pd-cb"> </div> . $this->tmpl[phoca_download];echo </div> ; 打開file/tmpl/default.php …

如何居中div

div居中 博客分類&#xff1a;筆記csshtmldiv CSS中怎么讓div居中 CSS 如何使div層水平居中今天用CSS遇到個的問題,div本身沒有定義自己居中的屬性, 網上很多的方法都是介紹用上級的text-align: center然后嵌套一層div來解決問題. 可是事實上這樣的方法科學嗎? 經過網絡搜索…

c語言小數加分,求救:c語言課程設計 員工工資管理程序 有加分的。謝謝

#define SIZE 50/* 定義結構體 */struct date{int month;int day;int year;};typedef struct employee{char name[50] ,num[10],sex,edu[10],duty[15];int age,income;struct employee *next;}empl[SIZE];/* 逐項輸出鏈表中的內容 */void view (struct employee* head){struct …

老師能提供什么幫助

老師能提供什么幫助&#xff1f; 這篇本來想上周寫的&#xff0c;原計劃在感恩節推送&#xff0c;可惜太忙&#xff0c;計劃趕不上變化。 時隔十年&#xff0c;我又要給計算機系的同學們上課了&#xff0c;心里還是有些小激動的。我下學期要開一門大課叫程序設計與數據結構,涵蓋…

(轉)SystemProcessesAndThreadsInformation

http://hi.baidu.com/hanjdud8606/item/7a970408a95acc843d42e27f NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass,PVOID SystemInformation,ULONG SystemInformationLength,PULONG ReturnLength ); 第一個參數是一個枚舉類型&#xff0c;傳入的是你需…

12個Icon圖標資源網站

1.除了Icon以外&#xff0c;還有很多不錯的UI設計素材。 地址&#xff1a;http://worldui.com/2.除了免費Icon資源下載以外&#xff0c;還提供Icon定制的付費服務。地址&#xff1a;http://dryicons.com/3.很喜歡這個icon資源站的展示方式。地址&#xff1a;http://www.icotrip…

python列表split_Python-split()函數實例用法講解

在Python中&#xff0c;split() 方法可以實現將一個字符串按照指定的分隔符切分成多個子串&#xff0c;這些子串會被保存到列表中(不包含分隔符)&#xff0c;作為方法的返回值反饋回來。split函數用法split(sepNone, maxsplit-1)參數sep – 分隔符&#xff0c;默認為所有的空字…

go語言基礎 -- 閉包

什么是閉包 閉包的概念&#xff0c;在很多語言中都有&#xff0c;比如python&#xff0c;這里要介紹的go&#xff0c;閉包就是函數與其相關的環境組合的一個整體。 我們通過一個例子來理解閉包&#xff1a; func Addfunc() func (x int) int {var n int 0// 返回的是一個函數…

linux中解決SSH連接慢問題

2019獨角獸企業重金招聘Python工程師標準>>> 現在連接linux服務器一般都是使用SSH遠程連接的方式。最近新裝了一臺服務器&#xff0c;發現telnet時速度很快&#xff0c;ping時一切也正常&#xff0c;但SSH連接的時候卻很慢。經過網上資料查詢&#xff0c;大致是有以…

利用Theme自定義Activity進入退出動畫

有沒有覺得Activity的默認動畫太快了或者太難看了。。我原來使用Activity.overridePendingTransition來自定義Activity的進入動畫&#xff0c;卻發現沒法定義退出的動畫。結果就發現了強大的Theme和Style&#xff0c;之后還需要好好研究一下。具體是這樣子的&#xff1a;在Andr…

阿里云深圳數據中心正式開放

阿里云深圳數據中心正式開放 ? 8月29日&#xff0c;阿里云深圳數據中心正式開放運營&#xff0c;這是繼杭州、青島、北京、香港之后&#xff0c;我們在全球開放的第五個數據中心。 深圳數據中心主要輻射以深圳、廣州為中心的華南區域&#xff0c;以滿足這一區域內的商貿企業、…

vue 文件及描述信息一起上傳_用Vue實現一個大文件上傳和斷點續傳

前言這段時間面試官都挺忙的&#xff0c;頻頻出現在博客文章標題&#xff0c;雖然我不是特別想蹭熱度&#xff0c;但是實在想不到好的標題了-。-&#xff0c;蹭蹭就蹭蹭 :)事實上我在面試的時候確實被問到了這個問題&#xff0c;而且是一道在線 coding 的編程題&#xff0c;當時…

c語言函數聲明定義參數命名,C語言函數聲明與定義

C語言函數聲明與定義教程在C語言函數聲明與定義語法type funcName(paramType1 param1, paramType2 param2){// 執行語句...return val}參數參數描述type函數的返回值類型&#xff0c;如果沒有任何返回值&#xff0c;則寫 void&#xff0c;不可以死省略不寫。funcName函數名。pa…

gcc g++ Linux下動態庫_靜態庫

關于Unix靜態庫和動態庫的分析 基本概念 庫有動態與靜態兩種&#xff0c;動態通常用.so為后綴&#xff0c;靜態用.a為后綴。 例如&#xff1a;libhello.so libhello.a 為了在同一系統中使用不同版本的庫&#xff0c;可以在庫文件名后加上版本號為后綴,例如&#xff1a; libhell…

SNF開發平臺WinForm之五-高級查詢使用說明-SNF快速開發平臺3.3-Spring.Net.Framework

5.1運行效果&#xff1a; 5.2開發實現&#xff1a; 1、按上面效果來說&#xff0c;先來看一下在程序當中如果調用。第一步在頁面拖拽一個按鈕為“高級查詢”&#xff0c;事件上寫下如下代碼&#xff1a; 如果是單表查詢的話&#xff0c;只需要傳GridView就行&#xff0c;如果是…

【轉】PowerDesigner表結構和字段大小寫轉換

【轉自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法&#xff1a;進入PowerDesigner&#xff0c;打開一個PDM&#xff0c;在菜單欄找到&#xff1a;Tools – Excute Commands – Edit/Run Script&#xff0c;或者直接按CtrlShiftX調出腳本執行窗口&#x…

新唐c語言怎么計算指數運算,C語言位域精解

有些信息在存儲時&#xff0c;并不需要占用一個完整的字節&#xff0c; 而只需占幾個或一個二進制位。例如在存放一個開關量時&#xff0c;只有0和1 兩種狀態&#xff0c;用一位二進位即可。為了節省存儲空間&#xff0c;并使處理簡便&#xff0c;&#xff23;語言又提供了一種…

華為榮耀5cvs華為v9play_華為榮耀v9play和榮耀9哪個好_華為榮耀v9play和榮耀9對比評測_飛翔教程...

華為榮耀v9play是華為最新發布的手機&#xff0c;這款手機可以說是華為榮耀v9的青春版&#xff0c;把這款手機跟華為榮耀9對比起來哪款更好呢&#xff1f;下面就為大家帶來詳細的華為榮耀v9play和榮耀9對比評測&#xff01;榮耀9介紹&#xff1a;6.12日下午&#xff0c;榮耀在上…