问题标签 [i18next-http-backend]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
239 浏览

javascript - 使用 i18next-http-backend 延迟加载翻译时页面闪烁

我不确定这是否真的是插件和我的配置的问题,或者它是否只是标准行为。

我正在使用 react-i18next 和 i18next-http-backend 从公共文件夹加载翻译文件。延迟加载是一个不错的奖励,但我实际上使用的是后端插件,因为文件是在外部管理的(由非程序员),我无法预先知道哪些文件存在。我不是在服务器端工作,所以我不能直接从文件系统中读取。

问题:我有一个可折叠部分,其内容仅在展开部分时呈现。当该内容需要以前未加载的翻译文件时,文件的获取似乎会触发页面重新加载:它会闪烁并向上滚动。

由于获取文件,页面闪烁对我来说似乎很奇怪。我想 i18next 正在更新,因为它正在加载一个新的命名空间并导致闪烁。那有意义吗?如果是这样,有没有办法告诉 http-backend 所有的命名空间(即 /public/locales 中的所有文件名),仍然保持延迟加载?我的配置中是否缺少某些内容?

这是我的配置:

谢谢你的帮助!

0 投票
0 回答
84 浏览

fallback - 如何使用 i18next-chained-backend 插件来丢失关键级别的回退?

如果在我使用 HTTPBackend 加载路径作为密钥传递的远程 URL 中没有找到翻译,则默认情况下 Reacti18next 似乎回退到翻译密钥,例如 // 尚未为bill_type_blank定义翻译i18next.t(' bill_type_blank ') // Returns ' bill_type_blank ' 如果在 Remote LoadPath 上找不到键的翻译,我更愿意从语言环境路径“locales/{{lng}}/translation.json”获取相同的键。我已经在使用 ChainedBackend 进行网络回退我想要相同的密钥回退,如何使用 i18next 库实现类似的功能?

0 投票
0 回答
152 浏览

node.js - i18next-http-backend 缓存请求选项

default除了库的缓存选项之外,还有其他选项i18next-http-backend吗?

我们需要将我们的设置为

0 投票
0 回答
213 浏览

javascript - i18next 翻译是 404 Not Found in Storybook with i18next-http-backend

我尝试i18next与我的 Storybook集成i18next-http-backend,它正在尝试从中加载翻译文件,http://localhost:6006/public/locales/en/translation.json但得到 404。我的目录中有我的语言文件app/publicappstories.storybook目录的兄弟)

文件结构

我的故事书i18next.js如下所示,

我也尝试添加loadPath配置(在 [this][2] 之后),但仍然遇到问题。


以下是我的.storybook/preview.js样子

我的故事书package.js有以下内容scripts

0 投票
1 回答
613 浏览

reactjs - React i18next 从前端(例如 localhost:3000)和后端(例如 localhost:5000)加载翻译文件

我正在制作一个从后端获取数据并显示在浏览器中的反应应用程序。为了更改静态名称的语言(如页眉、页脚),如果我在公共文件夹中设置 locales 文件夹,并为所需的语言代码创建所有 json 文件,则会更改。

现在,我也想从后端加载翻译文件,因为从后端获取的数据总是随机的,后端会发送相应的翻译文件。

我对如何实现这一目标感到非常困惑。

我经历了很多 stackoverflow 解决方案,建议使用自定义后端插件。但是,我很困惑如何创建自定义后端插件。

这是我的 i18next.js 配置的代码部分:

从上面的代码中,我只能加载前端的翻译文件。如果我将“后端”行更改为:

它将从 localhost:5000 的后端服务器加载翻译文件。但是,位于公共文件夹中的翻译文件现在未加载。

谁能帮忙举个例子,如何加载两个路径,以便前端和后端的翻译文件都能正常工作。

0 投票
0 回答
34 浏览

i18next - 如何配置 i18n.config.js 以便 `preact build --prerenderUrls ./prerender-urls.js` 成功?

我有一个前端项目设置preact-cli,它利用i18next-backend http。此配置是为了便于从 CDN 按需提供翻译服务,该应用程序将在生产环境中运行。到目前为止,我可以通过以下方式使其工作:

  • npx preact build --no-prerender

随后部署到AWS Cloudfront

现在我想静态prerender一些主要的路线,但很遗憾,一个幼稚的:preact build --prerenderUrls ./prerender-urls.js行不通。这样做的原因是,一旦要执行这些路由的步骤,它就会在没有运行 http 服务器的情况下prerender尝试利用。i18next-http-backend在这一点上,preact build继续挂起(好像我在做一个preact build --analyze)。

因此,对于该步骤,我需要i18next-fs-backend改用。遗憾的是,虽然这适用于在 CI/CD 服务器上为这些prerendered路由捆绑翻译,但它不适用于需要通过http-backend.

对于这个问题,我只看到两种类型的解决方案:

  1. 分两步进行构建。首先 with --no-prerenderani18n.config.js利用.http-backend然后--prerenderwith ani18n.config.js利用fs-backend. 这里的问题是两个构建之间的哈希值不同,所以我不能简单地用另一个构建复制预渲染的路由。
  2. 在构建期间设置一个可以提供这些翻译的 http 服务器。这本身是可能的,但这是一个相当脆弱的解决方法。

有一个链式后端的概念,i18next它允许我定义一个回退,但在浏览器的上下文中,i18next-fs-backend作为主要来源有什么意义?

在这个阶段对我有很大帮助的是,如果有人能指出

  1. 要么我没有考虑第三种可行的选择
  2. 要么我误解了一些做链式后端的方式
  3. 要么确认我是正确的,要么可以提出一个强有力的案例,preact-cli需要允许我们分两部分进行构建。
0 投票
0 回答
89 浏览

angular - 后端翻译在 SSR Spartacus 中不起作用

我已经按照本指南实施了翻译的延迟加载。如果我运行应用程序 SSR 模式,即使我将超时时间增加到 1 分钟以上,它总是会退回到 CSR 中。如果我删除后端配置并恢复静态文件,SSR 工作正常。

Spartacus 的 4.1 和 4.2 版本都会出现此问题。

后端翻译和 SSR 是否存在一些已知问题?它可能与 i18next 库有关吗?

我已经检查过了:https ://github.com/SAP/spartacus/issues/6030和https://github.com/SAP/spartacus/issues/6307 它们似乎都是固定的。

问候菲利波

0 投票
0 回答
13 浏览

node.js - 使用 i18next 库的多语言问题

我在实施多语言方面面临问题。我们正在使用 i18next 库(NPM 模块)。

要求是我们在后端和前端都有翻译文件,所以我们将在后端有一些翻译,在前端有每种语言的后备翻译文件。

谁能帮我这个?

0 投票
0 回答
18 浏览

i18next - React i18Next -> 如何使用 saveMissing 功能忽略命名空间

如何使用 saveMissing(或 updateMissing)参数将 i18Next 配置为 true 并忽略特定命名空间(我不希望更新命名空间 'foo')?

0 投票
1 回答
43 浏览

react-native - i18next 和 locize - 未在 18next.init() 上下载翻译 -> 网络请求失败(反应原生)

使用 Locize 后端初始化 i18next 时,在 android 设备上存在问题,其中 Locize 后端插件i18next::backendConnector: loading namespace translation for language en failed [TypeError: Network request failed]在加载时返回,但在 IOS 设备上正确加载翻译。

这是我用来在应用加载时初始化翻译的代码:

包.json