Jhipster 为用户更新 i18n 语言

Jhipster update i18n language for a user

我有一个 Jhipster 应用程序,并且已经将应用程序中的默认语言更改为使用法语。

app.js:

$translateProvider.preferredLanguage('fr');

但我无法更改为用户设置的语言。我正在使用通过应用程序创建的默认用户帐户:"user"。 当我登录应用程序并将语言更改为法语并保存用户信息时,默认用户 table 没有更改。所以当我再次登录时,语言是英语。

lang_key字段在table.

中仍然是en

您知道如何更改用户的语言吗?

谢谢,

如果你想为每个用户设置语言,你可以在liquibase中设置,users.csv。并在此文件中找到列 - "lang_key"。并设置语言。默认为 "en"。

我做到了,那总是只有一种语言。在任何角色和任何用户。 在 app.js:

中找到这个块
$translateProvider.useLoader('$translatePartialLoader', {
            urlTemplate: 'i18n/{lang}/{part}.json'
        });

并更改行

urlTemplate: 'i18n/{lang}/{part}.json'

urlTemplate: 'i18n/fr/{part}.json'

在这种情况下始终是法语

Jhipster 中似乎没有实现。因此 lang_key 仅在您创建新用户时设置。 我通过执行以下操作将其添加到我的应用程序中:

注意:这是通过应用程序中使用的当前语言设置来更改当前用户的语言。

UserService.java

将 langKey 添加到方法中:

public void updateUserInformation(String firstName, String lastName, String email, String langKey) {
  ...
  currentUser.setLangKey(langKey);
  ...
}

AccountResource.java

在Post请求中(通过从userDTO获取添加langKey):

userService.updateUserInformation(userDTO.getFirstName(), userDTO.getLastName(), userDTO.getEmail(), userDTO.getLangKey());

settings.controller.js

最后在设置控制器中设置使用的语言(在获取帐户之后)

$scope.settingsAccount = account;
$scope.settingsAccount.langKey = $translate.use();

您需要在控制器的功能参数中添加$translate