Angular-gettext 不更新代码中生成的字符串

Angular-gettext doesn't update strings generated in code

当我像这样设置语言时 gettextCatalog.setCurrentLanguage(langString); 它对我的侧边导航菜单不起作用。我的侧边菜单可以处于两种状态之一:展开或折叠,因此我将 ng-include 用于侧边菜单并在切换状态时更改它。

当我使用setCurrentLanguage时,菜单中的字符串没有改变。它只会在页面重新加载后更改(我将当前语言保存在 localStorage 中)。因此,setCurrentLanguage 可以在应用程序启动时应用到我的侧边菜单,但它不能动态工作。

编辑:

可能与我使用 gettextCatalog.getString('somestring') 生成菜单项的名称这一事实有关,因此,名称将在启动时使用正确的语言创建,但我无法在更改语言时更新它们,因为`gettextCatalog.getString('somestring') 的结果现在只是存储在变量中。所以,那里不再有 angular 观察者了。

那么,如何更新从代码创建的字符串?

不要使用gettextCatalog.getString(),而是使用gettext()

$scope.myVar = gettext("Something");

在您看来,使用 translate 过滤器:

{{ myVar | translate}}

这将在您更改语言时正确更新。

更多信息在这里:https://angular-gettext.rocketeer.be/dev-guide/annotate-js/