我们当前的项目是使用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);
正如你所看到的那样,这是一个有效的“黑客”或“解决方法”,但它似乎很可能会杀死我们的一些资源...这是手工制作,维护持续时间和工作量很高......
有更好的想法吗?
答案 0 :(得分:0)
我已经看到了一些好主意。
您可以在MVC应用程序中提供JSON端点,以便为您提供大量的翻译。您可以决定制作它的粒度,但基本上JSON序列化一个翻译或一组翻译并将其发回。这样就可以避免在数百种事物中形成大观点。
另一种方法是在视图中放置翻译以使其可用,但在上下文中。因此,如果你有一个按钮用于触发对服务器的一些AJAX调用,你需要说&#34;更新工作&#34;或者&#34;更新失败&#34;你可以把属性放在内联......
<button ... data-msg-success="Saved OK" data-msg-failed="A problem occurred" />
您可以使用您的资源填充这些属性。