[英]Swift Formatting Localized Strings
我們使用OneSky來翻譯字符串。 我們在字符串文件中使用位置說明符。 我遇到的問題是在字符串中使用%s時。
我有一個字符串: "dist_unit_mask" = "%1$s %2$s";
我從Localization.strings
文件中讀取並嘗試格式化: String(format: NSLocalizedString(@"dist_unit_mask", comment: @"Distance and Units"), dist, unit)
這會導致應用程序崩潰,但是當我將字符串更改為"dist_unit_mask" = "%1$@ %2$@";
,該應用程序不會崩潰。 使用$s
而不是%@
時,可能導致應用崩潰的原因是什么? 從OneSky下載后,我不想修改字符串文件。
%s
格式(帶或不帶位置說明符)需要一個C字符串 ,即指向NUL終止的char
序列的指針,而不是Swift字符串。
如果你真的必須保持%s
格式
String(format: NSLocalizedString(...),
(dist as NSString).cStringUsingEncoding(NSUTF8StringEncoding),
(unit as NSString).cStringUsingEncoding(NSUTF8StringEncoding))
應該管用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.