2017-04-17 16 views
0

我所試圖做的RESX文件之間切換:如何(不使用文化)

我在一個聊天機器人服務,我有機會獲得不同的渠道工作。在一個頻道上,我想使用我的Customer.resx文件,在另一個頻道上我想使用我的Worker.resx文件。

問題:

我知道本地化是如何工作Worker.en-US.resx和Worker.es-MX.resx之間進行切換,但我不確定如何從一個普通的resx文件切換到完全不同的背景之一。這些將被翻譯成其他語言,所以我不能簡單地使用Customer.en-US.resx和Worker.es-MX.resx作爲解決方法。我知道我可以使用CultureAndRegionInfoBuilder構建自定義文化,但我寧願以比這更簡單的方式來完成此任務,這與您如何進行本地化有關。我目前正在使用這種方法構建自定義文化,並且我有Resources.worker-en-US.resx和類似的客戶,但這是一個循環的方式,我知道必須有更好的方法。

爲了澄清,我知道我可以抓住與ResXResourceSet資源文件,但當時的想法是,我想有本地化的每個(worker.en美國和customer.en-US)兩個獨立的資源文件。

回答

0

我會將這兩者合併爲一個,因爲resx的確與文化/語言有關。您可以使用策略模式在正確的時間獲取正確的字符串。

interface IStrings { string Foo { get; } } 
class WorkerStrings : IStrings { ... } 
class CustomerStrings : IStrings { ... } 
+0

所以基本上我也要做像customerWelcomeText和workerWelcomeText在我Resources.resx而不是分裂出來的還是走了一輪關於處理這個的呢? – Nox

+0

你可以將它們合併爲一個或拆分它們,但實現會請求正確的實例,並且「IString」的使用者將根據實例獲得正確的實例。 –

+0

從我發現的一切看來,這似乎是我唯一的選擇。我認爲這是我對c#的經驗不足,使我無法想象它,但顯然我不想這麼做。看來我將不得不構建一個方法來檢查當前的文化,並返回預期文件的字符串。 – Nox

相關問題