2024-05-15 05:52:14 发布
网友
我有几个相同的静态html文件的翻译(到不同的语言)。这些文件是通过Sphinx-Python获得的,使用internationalization特性,最终生成mo文件。这一切都很好
但是,我不知道如何允许用户的浏览器选择与浏览器本身发送的Accept-Languages头相对应的正确翻译
Accept-Languages
静态文件将通过Flask的send_static_file提供
send_static_file
非常感谢您提供任何提示,说明如何强制浏览器从一堆静态文件中选择“好”的翻译
我想和大家分享一个解决方案
我遵循了here给出的说明,只要生产服务器是Apache,这些说明就适用。为相同Sphinx文件的每次翻译添加以下行
Alias /doc_en /location/of/sphinx/english_version/html <Directory /location/of/sphinx/english_version/html> Order deny,allow Allow from all </Directory>
从烧瓶的角度来看,可以借助Flask-Babel扩展将用户引导到最合适的翻译(由用户的浏览器定义):
app = Flask(__name__) app.config.from_pyfile('mysettings.cfg') babel = Babel(app) @babel.localeselector def get_locale(): bestl = request.accept_languages.best_match(['de', 'fr', 'en']) if bestl: return request.accept_languages.best_match(['de', 'fr', 'en']) else: return "en"
然后,通过send_static_file提供静态文件:
@app.route('/<dir>/<filename>', methods=['GET']) def doc(dir, filename): path = os.path.join(dir, filename) return app.send_static_file(path) @app.route('/help') def docs(): return redirect(url_for('doc', dir = 'doc_'+get_locale(), filename='index.html'))
我想和大家分享一个解决方案
我遵循了here给出的说明,只要生产服务器是Apache,这些说明就适用。为相同Sphinx文件的每次翻译添加以下行
从烧瓶的角度来看,可以借助Flask-Babel扩展将用户引导到最合适的翻译(由用户的浏览器定义):
然后,通过
send_static_file
提供静态文件:相关问题 更多 >
编程相关推荐