How to translate .po file

914 views Asked by At

I have a flask app and i wanted to add multiple languages to it. So i have using this demo on Flask_babel to do this. Flask Label Demo

config.py

DEBUG = True
LANGUAGES = ['en', 'de', 'fr']

This is the app.py

from flask import Flask, request, g
from flask_babel import Babel
from config import Config

# set up application
app = Flask(__name__)
app.config.from_object(Config)

# set up babel
babel = Babel(app)
@babel.localeselector
def get_locale():
    if not g.get('lang_code', None):
        g.lang_code = request.accept_languages.best_match(app.config['LANGUAGES'])
    return g.lang_code

babel.cfg

[python: app/**.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape, jinja2.ext.with_

To start the process i first used this command

pybabel extract -F babel.cfg -o messages.pot .

and then this

pybabel init -i messages.pot -d app/translations -l de

It generates messages.po file

# German translations for PROJECT.
# Copyright (C) 2021 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-05-28 19:07+0530\n"
"PO-Revision-Date: 2021-05-28 19:08+0530\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n"
"Language-Team: de <[email protected]>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.9.1\n"

#: app/blueprints/multilingual/routes.py:38
msgid "Beautiful day in Portland!"
msgstr ""

#: app/blueprints/multilingual/routes.py:42
msgid "The Avengers movie was so cool!"
msgstr ""

#: app/blueprints/multilingual/routes.py:45 app/templates/base.html:15
msgid "Home"
msgstr ""

#: app/blueprints/multilingual/routes.py:51
msgid "The Cake is a Lie"
msgstr ""

#: app/blueprints/multilingual/templates/multilingual/cake.html:4
msgid "Hi, User!"
msgstr ""

#: app/blueprints/multilingual/templates/multilingual/cake.html:6
msgid "I promise you that there will be "
msgstr ""

#: app/blueprints/multilingual/templates/multilingual/cake.html:6
msgid "cake"
msgstr ""

#: app/blueprints/multilingual/templates/multilingual/cake.html:6
msgid " at the end of this article, so keep on reading!"
msgstr ""

#: app/blueprints/multilingual/templates/multilingual/index.html:4
msgid "Hi, "
msgstr ""

#: app/blueprints/multilingual/templates/multilingual/index.html:6
msgid " says: "
msgstr ""

#: app/templates/base.html:6
msgid "Welcome to Microblog"
msgstr ""

#: app/templates/base.html:16
msgid "Cake"
msgstr ""

How do i translate each and every msgid. The demo says to do this manually, but this is a demo and it only contains 10 lines but my project would contain hundreds of translations in 10 languages, so what do i use for that? How do i convert the untranslated .po file to translated .po file by a library or program?

2

There are 2 answers

0
shiny On

You can set up your own automated translation via deepl.com or any other translation api or you need to do it all by yourself with a help of an po editor.

0
Rafael Gramoschi On

Someone made this tool online https://www.ajexperience.com/po-translator/ It allows you to paste .po-files contents and choose the source language and target language. Tested, working.