【问题标题】:How to get the selected language in the backend from JHipster如何从 JHipster 在后端获取所选语言
【发布时间】:2021-05-06 17:01:12
【问题描述】:

从 JHipster 应用程序在后端获取所选语言的首选方式是什么?

我找到了this answer,但所描述的方法不再起作用,因为语言服务不存在。

我尝试的另一种方法是 LocaleConfiguration 类,它使用 cookie 来获取语言。但我不得不发现,cookie 没有被设置。所以这个类是没用的。

此外,如果语言发生更改,则不会向后端发送任何请求。唯一发生的事情是语言被存储在 SessionStorageService 中。

在后端获取语言的首选方式是什么? 我应该手动设置 cookie 并使用上述类还是以某种方式访问​​会话存储? 我是否应该在每次更改语言时发送请求并将其存储在数据库中(jhipster 用户实体有一个语言列)? 还是我应该做一些不同的事情?

【问题讨论】:

  • 您应该在每次更改语言时发送一个请求并将其存储在数据库中
  • 感谢您的回复。我想我会尝试在前端处理所有特定于语言环境的内容,所以我根本不需要发送请求。
  • 好的,但是区域设置更改不会是永久性的。发送请求更简单更好
  • 我添加了一个答案,描述了我目前对此的解决方案。这不完全是问题的答案,但它对我有用。

标签: angular spring-boot jhipster


【解决方案1】:

我的用例是为一些实体属性添加翻译,所以这个属性是本地化的。

这是一个例子:

entity MyEntity {
    name String unique required
    // other fields
}

entity MyEntityTranslation {
    localizedName String
    language Language
}

relationship OneToMany {
    MyEntity{translation} to MyEntityTranslation{myEntity(name) required}
}

我的解决方案可能不是最好的,但对我有用,因为只涉及几种语言。

我已经为翻译表激活了 Eager fetching,所以总是会加载所有翻译。然后我将所有翻译添加到基本实体视图中,仅显示具有当前语言的翻译。这样,每种语言切换只显示和隐藏适当的字段,而无需与后端通信。

如果所有字段都正确填写,则保存按钮会将主要实体连同翻译一起发送到后端,将所有内容保存在一个事务中(级联所有)。

【讨论】:

    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2022-08-13
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多