似乎 messages.en
文件仅在我重新编译/重新启动应用程序时重新加载。如何在 Prod 模式下重新加载它而不重新启动。
我使用的是 Play 2.3
最佳答案
简短回答:绕过依赖注入(inject)的单例,并创建我们自己的 MessagesApi
:
implicit val messagesApi = new DefaultMessagesApi(Environment.simple(), current.configuration, new DefaultLangs(current.configuration))
长答案:
Play 的 MessagesApi
对象是一个单例,这意味着我们始终使用同一个实例:
@Singleton
class DefaultMessagesApi @Inject() (environment: Environment, configuration: Configuration, langs: Langs) extends MessagesApi { ...
及其保存所有消息的 messages
字段是不可变的。
val messages: Map[String, Map[String, String]] = loadAllMessages
我们无法修改它。
但是...我们可以创建自己的 MessagesApi
并使用它。例如:
implicit val messagesApi = new DefaultMessagesApi(Environment.simple(), current.configuration, new DefaultLangs(current.configuration))
关于scala - 如何在不重新启动的情况下重新加载 messages.en?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299665/