2017-06-20 67 views
0

我目前正在做一個具有語言更改功能的應用程序。然而,對於每一個我希望有當選擇不同的語言來進行更改字符串,我必須執行以下代碼更好的方法來做迅速的語言3

"Hello world".localize() 

然而,隨着應用程序變得更大,代碼成爲的樣子很凌亂在其各自的視圖控制器中的所有字符串都有這個.localize()追加到它。

有沒有一種方法可以在一箇中心位置做這個.localize()事情?

編輯:我試圖創建一個Strings.swift文件,並把所有的字符串裏面。我做了這樣的事情。

static let relevantString = "hello world".localize() 

然後在視圖控制器我打電話

let myString = relevantString 

然而,這並不好。字符串只會在我終止應用程序並重新啓動後纔會更改。

+2

難道你看看蘋果的[國際化和本地化指南(https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html) ? –

+0

@MartinR看看這個圖書館https://github.com/marmelroy/Localize-Swift。必須比自定義的方式更好......而且我個人認爲,從故事板獲取所有字符串並在用戶更改語言時在本地更改它是處理語言的更好方法。 – progammingBeignner

+0

''Hello world「.localize()'是最基本的代碼。沒有選擇。 – Jack

回答

2

您嘗試使用static let僅僅因爲使用常量而無法產生您想要的動態行爲。你可以使用一個只讀計算的屬性,而不是,是這樣的:

var relevantString : String { return "Hello World".localize() } 

作爲替代方案,你似乎更關注在雜亂,你可以定義一個簡單的前綴或後綴一元運算符,它名爲localize()其論據。 Swift允許一些符號被用作操作符,所以操作符可以是單個字符。例如,您可以定義§,以便§"Hello World"生成本地化的字符串。

HTH