2013-02-26 74 views
7

的Xcode 4.6,目標iOS 6中,SDK的iOS 6.1基地+本地化+故事板.strings - >沒有本地化

我開始與我的應用程序正常工作的故事板;它包含的字符串是英文的。我想添加法語本地化。我這樣做:

  • 加入鹼國產化,其傳輸 MainStoryboard.storyboard從en.lproj到Base.lproj。
  • 添加了法語本地化,將InfoPlist.strings(英語) 和MainStoryboard.storyboard(Base)克隆到fr.lproj中。
  • 在法國的MainStoryboard.storyboard中更改了幾個字符串( UISegmentedControl中的段標題)。
  • 在模擬器中,將語言設置爲法語。
  • 從Xcode中運行應用程序。

結果:This worked;我在運行的應用程序中顯示了更改的字符串。

但我想成爲所有幻想。我想用.strings文件做法語本地化。 (這不只是一個被花哨的事;法國本地化將被移交給非技術性翻譯人員,誰也無法預料到主接口生成器)。所以:

  • 選擇的基站MainStoryboard.storyboard在Xcode項目 導航。
  • 在「文件」檢查器的「本地化」下,將法語 本地化從「Interface Builder Cocoa Touch Storyboard」更改爲 「Localizable Strings」。
  • 接受Xcode的警告:法語故事板將被丟棄 ,以支持出現在助手編輯器中的.strings文件。
  • 做了相同的兩個編輯;不存在他們錯誤的 字符串的問題,因爲它們都被註釋爲 IBUISegmentedControl ... segmentTitles;並且標籤文本不會在.strings文件的其他任何地方出現 。
  • 從模擬器中刪除應用程序的現有(工作)副本。
  • 運行應用程序。

結果:視圖使用底座(原英文)本地化,而不是加載法國字符串。

轉換爲Autolayout沒有效果。從模擬器中刪除應用程序無效。刪除派生產品目錄不起作用。堆棧溢出建議使用ibtool生成.strings文件而不是Xcode;兩個生成的文件是相同的。

這並不令人滿意。正如我所說的,我無法將.storyboard文件轉換爲非技術翻譯。我如何讓iOS接受.strings文件中的故事板本地化版本?

回答

4

我希望你已經解決了。 我有同樣的問題(在意大利語翻譯),我解決了它這種方式:

1)文件Localizable.string在it.lproj

2)使用NSLocalizedString(@ 「TEST」,@「的評論「)它需要的方法

3)在Build Phases-> Copy Bundle Resource中添加Localizable.string 最後一步在iOS 5.1中不是必須的。

我解決了由於Cocoanetics在[問題]響應:Base internationalization and multiple storyboard not working right

5

啓用英文本地化複選框,使用本地化字符串設置:

Localization settings

清潔你的build文件夾(⌥⇧ ⌘K)並重建。

+0

清理build文件夾解決了我的問題。 – Robert 2014-06-05 15:40:01

1

要添加到claymation關於乾淨構建的答案,它也有助於從iOS模擬器中刪除應用程序。

它可能與John Hess's answer describes有關。

1

不得不將我的字符串文件轉換成一個故事板然後回到一個字符串文件,以使其工作。荒謬。蘋果可以從微軟學到一些東西來創建更可靠的開發者工具。

+0

它發生在我身上。 :3 – 2017-07-27 00:49:01