在Typescript中使用C#-Ressources(ResX文件)的最佳方法?

时间:2016-11-07 10:00:52

标签: javascript c# typescript resx

我们当前的项目是使用Razor的ASP.Net MVC。 我们使用ResX文件进行一些翻译。 在C#和Asp.net Razor中,使用HTML非常简单:

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

现在,当我编写JavaScript时,我正常使用razor在cshtml文件中执行此操作:

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

哪个有效,但看起来有点难看......

几个星期前,我们使用Typescript进行了标记,当然也将(几乎所有)javascript代码排除在ts文件之外。

我们在这里找到的唯一解决方案,从C#获取资源到Typescript是通过“hack”:

我们制作了一个ressources.cshtml文件,其中只包含了javascript变量:

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

我们首先在_layout.cshtml中加载此ressource.cshtml。 另外,我们需要一个自制的声明,让这个变量从我们的projectDeclarions.d.ts中的javascript跳转到typescript:

var ressourceTest:string;

现在我们可以在我们的打字稿文件test.ts中使用ressource:

alert(ressourceTest);

正如你所看到的那样,这是一个有效的“黑客”或“解决方法”,但它似乎很可能会杀死我们的一些资源...这是手工制作,维护持续时间和工作量很高......

有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

我已经看到了一些好主意。

您可以在MVC应用程序中提供JSON端点,以便为您提供大量的翻译。您可以决定制作它的粒度,但基本上JSON序列化一个翻译或一组翻译并将其发回。这样就可以避免在数百种事物中形成大观点。

另一种方法是在视图中放置翻译以使其可用,但在上下文中。因此,如果你有一个按钮用于触发对服务器的一些AJAX调用,你需要说&#34;更新工作&#34;或者&#34;更新失败&#34;你可以把属性放在内联......

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

您可以使用您的资源填充这些属性。