簡體   English   中英

使用“用戶定義的運行時屬性”在故事板中本地化視圖

[英]Localize a view within a storyboard using “User Defined Runtime Attributes”

我目前有一種半自動化的方式來本地化我的觀點。 然而,今天我在IB中發現了一個有趣的部分,這似乎表明我可以在Interface Builder中本地化我的視圖。

因此,在IB中,您可以在Identity Inspector中為選定對象定義運行時屬性。 所以對於我的UILabel我可以將標簽的text鍵路徑設置為String Hello World

然而,當我選擇Type = Localized String ,然后一鍵在我的名字Localized.strings我沒有得到一個翻譯字符串而只是我在IB輸入值(因此鍵)。

我不明白,這種機制應該如何運作。 很想能夠翻譯我的看法是這樣,任何想法?

“Localized String”類型的目的是讓您定義將參與本地化過程的運行時屬性值(使用基本本地化)。 如果您定義自定義控件,將其包含在故事板中並希望將可本地化的字符串分配給其中一個屬性,則這很方便。 但是這僅適用於Mac OS,而不適用於iOS。

您可以通過以下實驗輕松確認:在故事板中放置UILabel / NSTextField,並使用用戶定義的運行時屬性設置“text”/“stringValue”屬性。 如果使用“String”作為屬性的類型並生成相應的字符串文件,則不會在文件中的任何位置看到它。 相反,如果您將類型更改為“Localized String”並生成字符串文件,您將找到如下條目:

/* Class = "IBUILabel"; wij-Kq-q92.ibExternalUserDefinedRuntimeAttributesLocalizableStrings[0] = "Localized value"; ObjectID = "wij-Kq-q92"; */
"wij-Kq-q92.ibExternalUserDefinedRuntimeAttributesLocalizableStrings[0]" = "Localized value";

然后,您可以在相應的語言字符串文件中本地化此值。 同樣,這適用於Mac OS,但不適用於iOS。

“用戶定義的運行時屬性”記錄很少。 從我讀過的一本書中我記得的是,UDRA最初是為MacOSX編程實現的,因此Type“Localized String”可能是目前iOS中尚未完全支持的功能。

有趣的是,他正在翻譯故事板預覽中的字符串(xCode 4.5.1),但后來在編譯的iOS應用程序中,他只是注入了密鑰字符串。

我現在正在考慮的一個解決方案是創建一個小幫助類,即在viewDidLoad上檢查視圖的標題/文本字符串以獲取關鍵字,如“key”,例如“XYControllerTitleKey”,然后在其上創建NSLocalizedString-Method 。

更新:在此期間,似乎有一種方法可以使用UDRA:

故事板/ XIB和本地化最佳實踐

並作為結果的教程( 鏈接

對我來說,使用iOS 6,如果你從你的基礎本地化故事板生成你的字符串(通過讓XCode生成它們或使用ibtool --generate-strings-file你將獲得看起來像這樣的自動生成的字符串(應該在MainStoryBoard.strings ,例如):

/* Class = "IBUITextField"; b4a-O4-bNZ.ibExternalUserDefinedRuntimeAttributesLocalizableStrings[0] = "Event Name"; ObjectID = "b4a-O4-bNZ"; */
"b4a-O4-bNZ.ibExternalUserDefinedRuntimeAttributesLocalizableStrings[0]" = "Event Name";

不幸的是,通過密鑰路徑識別它們會很好,但至少你有用戶定義的字符串應該被本地化的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM