Author: haszi (haszi) Committer: GitHub (web-flow) Pusher: Girgias Date: 2024-10-14T11:41:38+01:00
Commit: https://github.com/php/web-php/commit/83705efdd0e217090aaa7b06d98dfcc8aacb8445 Raw diff: https://github.com/php/web-php/commit/83705efdd0e217090aaa7b06d98dfcc8aacb8445.diff Add function for translation of UI elements (#1057) Co-authored-by: haszi <haszik...@gmail.com> Changed paths: A include/ui_translation/de.ini A include/ui_translation/en.ini A include/ui_translation/es.ini A include/ui_translation/fr.ini A include/ui_translation/it.ini A include/ui_translation/ja.ini A include/ui_translation/pt_br.ini A include/ui_translation/ru.ini A include/ui_translation/tr.ini A include/ui_translation/zh.ini M include/shared-manual.inc Diff: diff --git a/include/shared-manual.inc b/include/shared-manual.inc index d14d6c4565..f104d1549d 100644 --- a/include/shared-manual.inc +++ b/include/shared-manual.inc @@ -30,7 +30,9 @@ use phpweb\UserNotes\UserNote; * * @param array<string, UserNote> $notes */ -function manual_notes($notes, $repo = 'en'):void { +function manual_notes($notes):void { + global $LANG; + // Get needed values list($filename) = $GLOBALS['PGI']['this']; @@ -42,6 +44,7 @@ function manual_notes($notes, $repo = 'en'):void { $sorter = new Sorter(); $sorter->sort($notes); + $addNote = autogen('add_a_note', $LANG); // Link target to add a note to the current manual page, // and it's extended form with a [+] image $addnotelink = '/manual/add-note.php?sect=' . $filename . @@ -49,7 +52,7 @@ function manual_notes($notes, $repo = 'en'):void { '&redirect=' . $_SERVER['BASE_HREF']; $addnotesnippet = make_link( $addnotelink, - "+<small>add a note</small>", + "+<small>$addNote</small>", ); $num_notes = count($notes); @@ -58,17 +61,19 @@ function manual_notes($notes, $repo = 'en'):void { $noteCountHtml = "<span class=\"count\">$num_notes note" . ($num_notes == 1 ? '' : 's') . "</span>"; } + $userContributedNotes = autogen('user_contributed_notes', $LANG); echo <<<END_USERNOTE_HEADER <section id="usernotes"> <div class="head"> <span class="action">{$addnotesnippet}</span> - <h3 class="title">User Contributed Notes {$noteCountHtml}</h3> + <h3 class="title">$userContributedNotes {$noteCountHtml}</h3> </div> END_USERNOTE_HEADER; // If we have no notes, then inform the user if ($num_notes === 0) { - echo "\n <div class=\"note\">There are no user contributed notes for this page.</div>"; + $noUserContributedNotes = autogen('no_user_notes', $LANG); + echo "\n <div class=\"note\">$noUserContributedNotes</div>"; } else { // If we have notes, print them out echo '<div id="allnotes">'; @@ -334,7 +339,7 @@ PAGE_TOOLS; } function manual_language_chooser($currentlang, $currentpage) { - global $ACTIVE_ONLINE_LANGUAGES; + global $ACTIVE_ONLINE_LANGUAGES, $LANG; // Prepare the form with all the options $othersel = ' selected="selected"'; @@ -350,10 +355,11 @@ function manual_language_chooser($currentlang, $currentpage) { $out[] = "<option value='help-translate.php'{$othersel}>Other</option>"; $format_options = implode("\n" . str_repeat(' ', 6), $out); + $changeLanguage = autogen('change_language', $LANG); $r = <<<CHANGE_LANG <form action="/manual/change.php" method="get" id="changelang" name="changelang"> <fieldset> - <label for="changelang-langs">Change language:</label> + <label for="changelang-langs">$changeLanguage:</label> <select onchange="document.changelang.submit()" name="page" id="changelang-langs"> {$format_options} </select> @@ -364,7 +370,7 @@ CHANGE_LANG; } function manual_footer($setup): void { - global $USERNOTES, $__RELATED; + global $USERNOTES, $__RELATED, $LANG; $id = substr($setup['this'][0], 0, -4); $repo = strtolower($setup["head"][1]); // pt_BR etc. @@ -393,18 +399,23 @@ function manual_footer($setup): void { $contributors = '<a href="?contributors">All contributors.</a>'; } + $improveThisPage = autogen('improve_this_page', $LANG); + $howToImproveThisPage = autogen('how_to_improve_this_page', $LANG); + $contributionGuidlinesOnGithub = autogen('contribution_guidlines_on_github', $LANG); + $submitPullRequest = autogen('submit_a_pull_request', $LANG); + $reportBug = autogen('report_a_bug', $LANG); echo <<<CONTRIBUTE <div class="contribute"> - <h3 class="title">Improve This Page</h3> + <h3 class="title">$improveThisPage</h3> <div> $lastUpdate $contributors </div> <div class="edit-bug"> - <a href="https://github.com/php/doc-base/blob/master/README.md" title="This will take you to our contribution guidelines on GitHub." target="_blank" rel="noopener noreferrer">Learn How To Improve This Page</a> + <a href="https://github.com/php/doc-base/blob/master/README.md" title="$contributionGuidlinesOnGithub" target="_blank" rel="noopener noreferrer">$howToImproveThisPage</a> • - <a href="{$edit_url}">Submit a Pull Request</a> + <a href="{$edit_url}">$submitPullRequest</a> • - <a href="https://github.com/php/doc-{$repo}/issues/new?body=From%20manual%20page:%20https:%2F%2Fphp.net%2F$id%0A%0A---">Report a Bug</a> + <a href="https://github.com/php/doc-{$repo}/issues/new?body=From%20manual%20page:%20https:%2F%2Fphp.net%2F$id%0A%0A---">$reportBug</a> </div> </div> CONTRIBUTE; @@ -459,3 +470,35 @@ CONTRIBUTORS; manual_footer($setup); exit; } + +function autogen(string $text, string $lang) { + static $translations = []; + + $lang = ($lang === "") ? "en" : $lang; + if (isset($translations[$lang])) { + if (isset($translations[$lang][$text]) && $translations[$lang][$text] !== "") { + return $translations[$lang][$text]; + } + if ($lang !== "en") { + // fall back to English if text is not defined for the given language + return autogen($text, "en"); + } + // we didn't find the English text either + throw new \InvalidArgumentException("Cannot autogenerate text for '$text'"); + } + + $translationFile = __DIR__ . \DIRECTORY_SEPARATOR . "ui_translation" . \DIRECTORY_SEPARATOR . $lang . ".ini"; + + if (!\file_exists($translationFile)) { + if ($lang !== "en") { + // fall back to English if translation file is not found + return autogen($text, "en"); + } + // we didn't find the English file either + throw new \Exception("Cannot find translation files"); + } + + $translations[$lang] = \parse_ini_file($translationFile); + + return autogen($text, $lang); +} diff --git a/include/ui_translation/de.ini b/include/ui_translation/de.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/de.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/en.ini b/include/ui_translation/en.ini new file mode 100644 index 0000000000..32ae383609 --- /dev/null +++ b/include/ui_translation/en.ini @@ -0,0 +1,9 @@ +change_language = "Change language" +improve_this_page = "Improve This Page" +how_to_improve_this_page = "Learn How To Improve This Page" +contribution_guidlines_on_github = "This will take you to our contribution guidelines on GitHub" +submit_a_pull_request = "Submit a Pull Request" +report_a_bug = "Report a Bug" +add_a_note = "add a note" +user_contributed_notes = "User Contributed Notes" +no_user_notes = "There are no user contributed notes for this page." diff --git a/include/ui_translation/es.ini b/include/ui_translation/es.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/es.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/fr.ini b/include/ui_translation/fr.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/fr.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/it.ini b/include/ui_translation/it.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/it.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/ja.ini b/include/ui_translation/ja.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/ja.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/pt_br.ini b/include/ui_translation/pt_br.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/pt_br.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/ru.ini b/include/ui_translation/ru.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/ru.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/tr.ini b/include/ui_translation/tr.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/tr.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = "" diff --git a/include/ui_translation/zh.ini b/include/ui_translation/zh.ini new file mode 100644 index 0000000000..e24fe76b9e --- /dev/null +++ b/include/ui_translation/zh.ini @@ -0,0 +1,9 @@ +change_language = "" +improve_this_page = "" +how_to_improve_this_page = "" +contribution_guidlines_on_github = "" +submit_a_pull_request = "" +report_a_bug = "" +add_a_note = "" +user_contributed_notes = "" +no_user_notes = ""