i18next 语言检测和与 hapi 集成的问题

Problems with i18next language detection and integration with hapi

我正在尝试为 i18next 编写一个新的语言检测器插件,以便与 hapi 集成。有一个现有的 hapi-i18next 插件很旧(它使用 i18next 的一个非常旧的版本,1.7.10),所以几乎没用。 i18next API 文档对如何编写新插件以及语言检测过程的具体内容含糊不清。是否每次 t() 函数 运行 时都 运行?它应该是异步的吗?最近还有其他人将 hapi 与 i18next 集成在一起吗?我意识到这是相当笼统的,但我不确定还能转向哪里。

到目前为止从未使用过 hapi,但自版本 8 以来 hapi 似乎有了很大的发展(实际使用的是什么 here

不知道那个项目还有没有维护...

也许您可以尝试创建一个新的 hapi-i18next 插件...(没那么多 code

要创建一个 languageDetector 插件,应该不是什么大事...开始 here and continue by comparing how the express language detection 工作

在 i18next 中触发 languageDetector here ...等等 init/load 和潜在的语言变化

希望对您有所帮助。

我最终做的是编写一个 hapi 服务器 扩展 而不是一个插件,以及一个 运行 在启动时装饰 hapi 服务器的模块 object 与初始化的 i18next object。扩展安装到 运行 onPreHandler,它基本上克隆了 i18next object,将该实例附加到请求 object,并检测语言(来自请求 header 或来自查询参数),然后将克隆的实例设置为该语言。这样,每当路由处理程序使用附加到附加到当前请求的实例的 t() 函数时,我们知道我们将翻译成正确的语言。请注意,这仍然适用于 Hapi 16(我需要尽快移植到 17/18)...