【问题标题】:Problems with i18next language detection and integration with hapii18next 语言检测和与 hapi 集成的问题
【发布时间】:2018-11-06 16:50:38
【问题描述】:
我正在尝试为 i18next 编写一个新的语言检测器插件,以便与 hapi 集成。有一个现有的 hapi-i18next 插件很旧(它使用 i18next 的极旧版本, 1.7.10 ),因此几乎没用。 i18next API 文档对如何编写新插件以及语言检测过程的具体内容非常模糊。每次 t() 函数运行时它都会运行吗?它应该是异步的吗?最近有其他人将 hapi 与 i18next 集成吗?我意识到这是相当笼统的,但我不知道还能去哪里。
【问题讨论】:
标签:
internationalization
i18next
hapi
【解决方案1】:
到目前为止从未使用过 hapi,但自第 8 版以来似乎 hapi 发展了很多(实际使用了什么 here)
我不知道那个项目是否还在维护......
也许你可以尝试创建一个新的 hapi-i18next 插件...(没那么多code)
要创建一个 languageDetector 插件,这应该不是什么大事...从 here 开始,然后继续比较 express language detection 的工作原理
在 i18next 中,语言检测器被触发 here
...等等初始化/加载和潜在的语言更改
我希望这会有所帮助。
【解决方案2】:
我最终做的是编写一个 hapi 服务器扩展而不是一个插件,以及一个在启动时运行的模块,它用初始化的 i18next 对象装饰 hapi 服务器对象。安装扩展以运行onPreHandler,它基本上克隆 i18next 对象,将该实例附加到请求对象,并检测语言(从请求标头或查询参数),然后将克隆的实例设置为该语言。这样,每当路由处理程序使用附加到附加到当前请求的实例的t() 函数时,我们就知道我们将翻译成正确的语言。请注意,这仍然适用于 Hapi 16(我需要尽快移植到 17/18)...