Multi-Language Support (German translation of the webinterface)

Good morning, evening,
I´m using Pi-hole since 2,5 years and really happy with it. I want to thank you all for your great work and this great project. But now to my FR, I´ve read, that a similar FR was opened a little long time ago, but since this thread was opened no german translation was integrated. I want to ask for the current status. I know it´s a hobby and you can´t do all FR at the same time. So I want to help, when it's the time to translate that is missing. My mother tongue is German and I am very good at it. Another idea is the website Crowdin, where others can translate the code for you. I also registered there and help with the German translation in other projects.
Many thanks and a happy new year to you all.
Best Greetings Leon

I'm bumping this...

Now that the CrowdIn page is "abandoned", I want to know what the new location is.
Is it a Weblate, manual translation, or something else?

1 Like

There is no new location. We don't have plans nor backend-infrastructure at the moment to implement multi-language support.

That's a pity. I just stumbled on this after I was thinking: Heee, why not have a Dutch version of the webinterface? Came upon a thread started over 5 years ago with a link which didn't work anymore. Is there a way to bring this to live again? Might not have priority but with a little help from others you/we might get somewhere.

As I said above:

The link above was for an experimental web interface based on React, which has been abandoned because of lack of developer's experience with it.

If we had a backend supporting multi-language, we certainly need

to actually translate everything.

I know.
And ofrcourse I can imagine that it has no priority. A working pihole is way more required than some language-stuff. And actually I guess most of the people using Pihole will understand English.

But still couldn't resist and I started to give it a try where index.php will look for the browser-language and based on that uses a language-file. And if none found uses English. But it's a heck of a job to replace all text-parts with

<?php echo ($langtext['text_item']) ?>

where all the entries are stored in a language-file. In my fork I only translated some stuff on the main admin-page and it will work. My browser is in Dutch and if nl.php (in the language-directory) isn't found it will use English.

This is a huge job, but it's just the visible tip of a bigger iceberg.

Some items to have in mind (and I didn't even start to think about this):

  • some texts would need to be changed/adjusted as not all languages use the same sentence structures (it isn't just a replace).
  • the interface must be correctly adapted for Right-to-Left languages;
  • make sure the whole interface (including graphs and javascript plugins) works with all posible character sets;
  • translate all error messages (coming from PHP functions, javascript functions, FTL calls and pihole commands);
    ...
1 Like

That's true. Didn't think about the things you mention as well

Now my quick and dirty test-case-language-files looked like this:

<?php
$langtext['total_queries'] = 'Total queries';
$langtext['queries_blocked'] = 'Queries blocked';
$langtext['percentage_blocked'] = 'Percentage blocked';
$langtext['active_clients'] = 'Active clients';
$langtext['domains_on_adlist'] = 'Domains on Adlists';
$langtext['list_blocked_queries'] = 'List blocked queries';
$langtext['list_all_queries'] = 'List all queries';
$langtext['manage_adlists'] = 'Manage adlists';
$langtext['total_queries_over_last_24hrs'] = 'Total queries over last 24 hours';
$langtext['client_activity_over_last_24hrs'] = 'Client activity over last 24 hours';
$langtext['top_permitted_domains'] = 'Top Permitted Domains';
$langtext['top_blocked_domains'] = 'Top Blocked Domains';
$langtext['hours'] = 'hours';
?>

which in Dutch would be:

<?php
$langtext['total_queries'] = 'Totaal aantal queries';
$langtext['queries_blocked'] = 'Queries geblokt';
$langtext['percentage_blocked'] = 'Percentage geblokt';
$langtext['active_clients'] = 'Actieve clients';
$langtext['domains_on_adlist'] = 'Domeinen in Adlists';
$langtext['list_blocked_queries'] = 'Toon geblokte queries';
$langtext['list_all_queries'] = 'Toon alle queries';
$langtext['manage_adlists'] = 'Beheer adlists';
$langtext['total_queries_over_last_24hrs'] = 'Totaal aantal queries van de afgelopen 24 uur';
$langtext['client_activity_over_last_24hrs'] = 'Client activiteit gedurende de laatste 24 uur';
$langtext['top_permitted_domains'] = 'Top Toegestane Domeeinen';
$langtext['top_blocked_domains'] = 'Top Geblokte Domeinen';
$langtext['hours'] = 'uren';
?>

And ofcourse translations aren't perfect. And seeing things in Dutch doesn't always look that nice. :slight_smile:

Actually I wouldn't bother translating the whole pihole-interface.