2016-11-07 25 views
0

我們目前的項目是使用Razor的ASP.Net MVC。 我們使用ResX文件進行一些thousend翻譯。 在C#和Asp.net剃刀,這是用HTML很簡單:在Typescript中使用C#-Ressources(ResX文件)的最佳方法是什麼?

<div>@Ressources.Local.Test</div> 

現在,當我寫的JavaScript我normaly剃刀這樣做是在CSHTML文件中:

<script>alert('@Ressources.Local.Test');</script> 

哪些工作,但似乎有點難看...

幾個星期前,我們加入了Typescript,並且當然不包括(幾乎)所有JavaScript代碼到ts文件。

我們發現這裏唯一的解決方案,以獲得從C#到打字稿中ressources是通過「黑客」:

我們做了一個ressources.cshtml文件中,我們只包括JavaScript的變量:

var ressourceTest = "@Ressource.Local.Test"; 

我們首先在我們的_layout.cshtml中加載這個ressource.cshtml。 另外,我們有一個自我需要一個自制declarion這一變量從javascript跳躍在我們的projectDeclarions.d.ts以打字稿:

var ressourceTest:string; 

現在我們可以在我們的打字稿文件test.ts使用的ressource:

alert(ressourceTest); 

正如你可以看到它是一個工作「黑客」或「變通」,但它似乎likly殺死我們幾thousend ressources ...這是手工製作的,在保持持續時間和工作高...

有什麼更好的點子?

回答

0

我已經看到了一些很好的想法。

您可以在您的MVC應用程序中提供JSON端點,爲您提供大量的翻譯。你會決定你想要的粒度,但是你本質上是JSON序列化一個翻譯或一組翻譯並將其發回。這樣可以避免用數百個東西填滿大視野。

另一種替代方法是在視圖中放置翻譯以使其可用,但是在上下文中。所以,如果你有,你正在使用,以引發一些AJAX調用服務器一個按鈕,你需要說「更新是否成功」或「更新失敗」你可以把內嵌屬性...

<button ... data-msg-success="Saved OK" data-msg-failed="A problem occurred" /> 

你可以用您的資源填充這些屬性。

+0

謝謝,最後的想法與HTML渲染並不是很容易在所有的地方,但你的JSON想法聽起來很合理......你能解釋這將如何工作多一點? –

相關問題