我正在尝试为i18next编写一个新的语言检测器插件,以便与hapi集成。现有的hapi-i18next插件已经很旧了(它使用的是i18next的极端版本1.7.10),因此几乎没有用。而且i18next API文档对于如何编写新插件以及确切的语言检测过程非常含糊。它是否在t()函数每次运行时运行?应该异步吗?最近有没有其他人将hapi与i18next集成在一起?我意识到这很笼统,但我不确定该向何处转向。
答案 0 :(得分:1)
到目前为止,从未使用过hapi,但自第8版(实际使用的here)以来,hapi似乎发展了很多
我不知道该项目是否仍在维护...
也许您可以尝试创建一个新的hapi-i18next插件...(code并不多)
要创建languageDetector插件,应该没什么大不了的……开始here并通过比较express language detection的工作方式继续
在i18next中,触发languageDetector here ...因此在初始化/加载以及潜在的语言更改上
我希望这会有所帮助。
答案 1 :(得分:0)
我最终要做的是编写一个hapi服务器扩展名 而不是一个插件,还有一个在启动时运行的模块,该模块用初始化的i18next
对象装饰hapi服务器对象。安装该扩展程序以运行onPreHandler
,它基本上会克隆i18next对象,将该实例附加到请求对象,并检测语言(从请求标头或从查询参数),然后将克隆的实例设置为语言。这样,每当路由处理程序使用附加到当前请求所附加的实例的t()
函数时,我们就知道将被翻译成正确的语言。请注意,这仍然适用于Hapi 16(我需要尽快移植到17/18)...