2013-02-25 66 views
12

本地化(也有類似的問題,有些導致,我試過的答案,發現不工作,其他人沒有得到迴應,我想是因爲querents沒有供應儘可能多的細節,我要)故事板+基地+本地化文件.strings不會在運行時

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

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

結果:這個工作;我在運行的應用程序中顯示了更改的字符串。

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

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

結果:該視圖使用基本(原本是英語)本地化,而不是加載法語字符串。

這並不令人滿意。我嘗試從模擬器中刪除應用程序,甚至刪除派生數據文件夾。錯誤依然存在。

正如我所說的,我不能把一個.storyboard文件轉移到非技術性的翻譯。我如何讓iOS接受來自.strings文件的故事板本地化版本?

+0

轉換故事板自動佈局了沒有效果。 – user698970 2013-02-25 20:00:52

+0

對另一個類似問題的迴應建議在基本故事板上運行ibtool,並將其用作.strings文件的啓動程序,而不是提供的一個Interface Builder。這兩個文件是相同的。 – user698970 2013-02-25 20:12:58

+0

下面是另一個變量:故事板上有很多無法訪問的場景:它們不是最初的控制器,它們沒有任何通向它們的路徑。 (不是我所做的;我必須和那些認爲這是個好主意的開發者交談。) 這可能會干擾.strings本地化嗎? – user698970 2013-02-25 21:57:13

回答

6

我與我的UISegmentedControl s有同樣的問題。事實證明,iOS 6中存在一個錯誤:.strings故事板本地化將無法在UISegmentedControl文本和UISearchBar佔位符上工作。 看到這個openradar:http://openradar.appspot.com/radar?id=2159402

您是否嘗試過本地化其他元素,如UILabel s?這應該工作。

+0

我有同樣的問題,只有一個UISearchBar沒有被本地化,而所有其他的東西沒有工作。下面的Susan Sabaria描述的解決方案是這個bug的一個很好的解決方法,它很容易很容易地擴展到範圍標題。 – ecotax 2013-07-22 13:57:33

8

這是我如何解決它:

在viewDidLoad中:

[self.segmentedControl setTitle:NSLocalizedString(@"Title", @"Your localize comment") forSegmentAtIndex:0]; 

你可以做的搜索佔位符相同:

[self.searchBar setPlaceholder:NSLocalizedString(@"Your string placeholder", @"Your comment for localizers")]; 

然後,只需創建一個Localizable.strings文件它會工作。

0

適用人羣爲iOS 7以上版本並搜索.strings格式的搜索欄發展,這是你應該如何轉化例如placeholder領域:

/* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */ 
"F3d-Ir-fni.placeholder" = "Nach Orten suchen"; 
相關問題