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

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

编辑:

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

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

最佳答案

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

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


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

{{ myVar | translate}}


更改语言后,它将正确更新。

此处更多信息:https://angular-gettext.rocketeer.be/dev-guide/annotate-js/

10-06 15:42