如何在 PDF.js 中强制/设置语言环境
How to force / set locale in PDF.js
我正在从旧版本 PDF.JS (1.9.426) 升级到最新的稳定版 (2.5.207)。
以前,强制语言环境与您的应用程序当前语言环境相匹配非常简单。
您只需将它作为参数传递给 URL;
/PDFJS/web/viewer.html?file=example.pdf #locale=zh-CN
但是,在升级时,我看到这是 no longer recommended。
尽管文档仍然 mentioning it.
在我的应用程序中,用户可以覆盖他们的首选语言环境,因此它可能与浏览器不匹配。
我调查过 embed / object, which seemed like the solution, until I realised Android browsers don't support embedded PDF viewing。
我一直在寻找实现它的正确方法,但到目前为止我还没有找到好的或推荐的答案。
似乎 PDF.js 仍然是最好的全面解决方案,但我想不出使用它来简单地将现有 PDF 呈现为 div.
的正确方法
据我所知,开发人员只是删除了该选项,没有升级文档,并建议在 viewer.js 中对语言环境进行硬编码(对我来说,这有点违背了重点)。
我希望有人能给我指出正确的方向,并可能帮助遇到此问题的其他人。
对于任何想要让它正常工作的人(直到出现更好的答案),这是一个修复程序;
在viewer.js中找到方法“_initializeL10n”(v2.5.207中的第552行);
async _initializeL10n() {
this.l10n = this.externalServices.createL10n({
locale: _app_options.AppOptions.get("locale")
});
const dir = await this.l10n.getDirection();
document.getElementsByTagName("html")[0].dir = dir;
}
改成这样;
async _initializeL10n() {
var hash = document.location.hash.substring(1);
var hashParams = (0, _ui_utils.parseQueryString)(hash);
this.l10n = this.externalServices.createL10n({
locale: ('locale' in hashParams) ? hashParams['locale'] : _app_options.AppOptions.get("locale")
});
const dir = await this.l10n.getDirection();
document.getElementsByTagName("html")[0].dir = dir;
}
这从旧版本中获取了我们需要的代码并使 #locale= 工作。
我希望在某个时候被告知正确的方法。
我正在从旧版本 PDF.JS (1.9.426) 升级到最新的稳定版 (2.5.207)。
以前,强制语言环境与您的应用程序当前语言环境相匹配非常简单。 您只需将它作为参数传递给 URL; /PDFJS/web/viewer.html?file=example.pdf #locale=zh-CN
但是,在升级时,我看到这是 no longer recommended。 尽管文档仍然 mentioning it.
在我的应用程序中,用户可以覆盖他们的首选语言环境,因此它可能与浏览器不匹配。
我调查过 embed / object, which seemed like the solution, until I realised Android browsers don't support embedded PDF viewing。
我一直在寻找实现它的正确方法,但到目前为止我还没有找到好的或推荐的答案。 似乎 PDF.js 仍然是最好的全面解决方案,但我想不出使用它来简单地将现有 PDF 呈现为 div.
的正确方法据我所知,开发人员只是删除了该选项,没有升级文档,并建议在 viewer.js 中对语言环境进行硬编码(对我来说,这有点违背了重点)。
我希望有人能给我指出正确的方向,并可能帮助遇到此问题的其他人。
对于任何想要让它正常工作的人(直到出现更好的答案),这是一个修复程序;
在viewer.js中找到方法“_initializeL10n”(v2.5.207中的第552行);
async _initializeL10n() {
this.l10n = this.externalServices.createL10n({
locale: _app_options.AppOptions.get("locale")
});
const dir = await this.l10n.getDirection();
document.getElementsByTagName("html")[0].dir = dir;
}
改成这样;
async _initializeL10n() {
var hash = document.location.hash.substring(1);
var hashParams = (0, _ui_utils.parseQueryString)(hash);
this.l10n = this.externalServices.createL10n({
locale: ('locale' in hashParams) ? hashParams['locale'] : _app_options.AppOptions.get("locale")
});
const dir = await this.l10n.getDirection();
document.getElementsByTagName("html")[0].dir = dir;
}
这从旧版本中获取了我们需要的代码并使 #locale= 工作。
我希望在某个时候被告知正确的方法。