顯示具有 xcode 標籤的文章。 顯示所有文章
顯示具有 xcode 標籤的文章。 顯示所有文章

2012年10月1日 星期一

IOS多國語系規劃與開發-ios multi language design and imeplementation

多國語系是在APP的規劃與開發設計中是一個很重要的一環,很簡單的一個原因就是「市場」!其實說簡單也算是簡單,因為 SDK 本身就提供了多國語系的功能,我們只需要簡單的幾個步驟就可以達到,下面是簡單的步驟:

多國語系的規劃
  1. 規劃好哪些產出需要多國語系: UI, Message, Mail Template ..ext
  2. 決定好上面的東西要怎樣做,例如:是否要將XIB, infos.plist 變成多國語系, 是否要對圖檔做多國語系, 是否要將 Strings 與 Template 做成多國語系
  3. 作出一個 POC Template 與 Design Guideline for Multi-language 給 UI Design , Designer (Technical Designer), Programmer。
一個方式
個人喜歡的方式是將所有文字抽出來做成多國語系檔,因為這樣你只需要維護的是各種語系的文字檔案,但是這樣需要考慮到的是:
  1. 所有圖片不能含有文字,UI設計師只能使用IOS內建的字型,並且必續要產出 Design Guideline 讓開發人員清楚地知道每個UI的字形大小, 字型種類, 文字的色碼, 最多支援行數
  2. UI設計師必須在設計的時候清楚知道有多少種語言需要被支援,並且在設計所有 UI 元件的時候考慮到「文字長度」,並且在視覺設計上儘量在不破壞美觀下定義長寬的最大值
  3. Designer必須要將所有文字的 KEY 值作名稱規劃,並且需要讓所有 Programmer能藉由KEY值就能知道文字的用途。
這樣的設計方式可以達到多國語系的設計而且可以將所有語系的內容框在 Localizable.strings 與 Template File 裡,解由修改修改語系檔案或是 Mail or Publish template就可以快速地達到修改多國語內容的目的。

SDK也支援 XIB的多國語系設計方式,只是當 View component 跟多國語系攪在一起,那可想而知的是修改的 Effort 太大了。

開發步驟
  1. 建立 Localizable.strings Files, New 一個 File , 選擇 Resource > Strings File, 將它命名為 Localizable.strings
  2. 點選左側 Navigator 中的「專案名字」> 右側點選 Info , 右邊的 Localizations 可以增加你要支援的語言, 點選後會有詢問你哪些檔案要變成多國語系,以上面的例子因為我的方式只有用到 Localizable.strings 所以只要選擇 Localizable.strings就可以
  3. 編輯 Localizable.strings , 基本我將所有的 strings 分為下面幾個類別
    // button
    "Done" = "Done";
    "Close" = "Close";
    "Tutorials" = "Tutorial";
    // message
    "Please insert valid information" = "Please insert valid information";
    // label string
    "You’ve traveled" = "You’ve traveled";

    // exception string
    "The hardware does not support" = "The hardware does not support";
  4. 在程式裡取用所有的 strings 只需要如下的寫法
    cell.value.text = NSLocalizedString(@"You’ve traveled"nil);
  5. 若需要在 UI 上顯示現在使用者所選用的語言, 你可以使用下面的方法顯示出各國語言表現的語言文字, 像當選擇日文時會顯示「日本語」
     NSLocale *locale=[NSLocale currentLocale];
     NSString *langName= [locale displayNameForKey:NSLocaleIdentifier
                                                            value:[[NSLocale preferredLanguages] objectAtIndex:0]];

結論
很多種方式可以達道不同程度的多國語系方式,只是需要注意的層面不同,這樣做法上很簡單,但是對於設計來說會需要注意的地方很多,一不注意就會讓文字超出UI或是變成...。在開發上唯一需要注意的是 Key 的命名規則,否則平行開發下 Programmer 若看不懂語系檔那只會有兩種情形:一種是花很多時間去搞清楚什麼是什麼,第二種就是會多出很多同樣的文字參數。

2011年11月23日 星期三

IOS Cocoa Touch Static Library 開發教學

提升軟體開發效率最有效的方式就是建立可重用的元件,基本上只要在一個專案中被重復使用兩次以上的功能都可以被納入元件設計的範圍中,這樣的概念是通用於所有開發語言的。

在IOS的開發中這樣的概念在XCode中就已經有支援了,因此今天這篇文章就使用一個簡單的範例來展示一下如何達到。

開發環境

  1. XCode 4.1 build 4B110
  2. iPhone 4.3 Simulator
下面會使用XCode建立一個 Cocoa Touch Static Library Project 與一個 View-based Application,先建立一個static library然後引入到 view-based application中進行開發使用。

建立靜態元件(Static Library)
建立Cocoa Touch Static Library Project
File > New > New Project > Framework & Library > Cocoa Touch Static Library
(這裡建立的專案名稱為: BikeLibrary)

編輯BikeLibrary.h 加入功能宣告

編輯BikeLibrary.h 並實作功能

選擇目標裝置 iPhone 4.3 Simulator & 編譯 (Product > Build)


建立一個新的資料夾 BikeLibrary 將 libBikeLibrary.a + BikeLibrary.h 複製到目錄中就完成了共用元件的製作。


建立專案並使用靜態元件
建立一個View-based Application Project
File > New > New Project > Application > View-based Application
(這裡建立的專案名稱為: BikeController)

複製靜態元件到專案目錄中


編輯 BikeControllerViewController.h 加入 BikeLibrary.h


編輯 BikeControllerViewController.m 呼叫靜態元件

執行模凝器 iPhone 4.3 Simulator 並且觀察 Output Console 是否正確輸出 debug訊息

Comment 
好的元件設計能夠替開發人員省去寶貴的開發時間,在面臨需求變更與效能調教時也能夠很快速地達成。省下來的時間拿來增進自己的知識或是研究更好的技術這才是根本的解決之道。