Skip to content

Commit e4a2a32

Browse files
bojun1995DenverCoder1
andauthored
feat: Added Chinese and support "Present" translations (DenverCoder1#245)
Co-authored-by: Jonah Lawrence <[email protected]>
1 parent 3cfd84b commit e4a2a32

File tree

4 files changed

+43
-3
lines changed

4 files changed

+43
-3
lines changed

src/card.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,9 @@ function generateCard(array $stats, array $params = null): string
121121
$translations = include "translations.php";
122122
// get requested locale, default to English
123123
$localeCode = $params["locale"] ?? "en";
124-
$localeTranslations = $translations[$localeCode] ?? $translations["en"];
124+
$localeTranslations = $translations[$localeCode] ?? [];
125+
// add missing translations from English
126+
$localeTranslations += $translations["en"];
125127

126128
// get date format
127129
// locale date formatter (used only if date_format is not specified)
@@ -133,7 +135,7 @@ function generateCard(array $stats, array $params = null): string
133135
// total contributions
134136
$totalContributions = $numFormatter->format($stats["totalContributions"]);
135137
$firstContribution = formatDate($stats["firstContribution"], $dateFormat, $localeCode);
136-
$totalContributionsRange = $firstContribution . " - Present";
138+
$totalContributionsRange = $firstContribution . " - " . $localeTranslations["Present"];
137139

138140
// current streak
139141
$currentStreak = $numFormatter->format($stats["currentStreak"]["length"]);

src/translations.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"Total Contributions" => "Total Contributions",
2525
"Current Streak" => "Current Streak",
2626
"Longest Streak" => "Longest Streak",
27+
"Present" => "Present",
2728
],
2829
"de" => [
2930
"Total Contributions" => "Gesamte Beiträge",
@@ -40,6 +41,7 @@
4041
"Total Contributions" => "総コントリビューション数",
4142
"Current Streak" => "現在のストリーク",
4243
"Longest Streak" => "最長のストリーク",
44+
"Present" => "",
4345
],
4446
"tr" => [
4547
"Total Contributions" => "Toplam Katkı",
@@ -51,4 +53,10 @@
5153
"Current Streak" => "Atual Sequência",
5254
"Longest Streak" => "Maior Sequência",
5355
],
56+
"zh" => [
57+
"Total Contributions" => "合计贡献",
58+
"Current Streak" => "最近连续贡献",
59+
"Longest Streak" => "最长连续贡献",
60+
"Present" => "至今",
61+
],
5462
];

tests/TranslationsTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use PHPUnit\Framework\TestCase;
6+
7+
// load functions
8+
require_once dirname(__DIR__, 1) . '/vendor/autoload.php';
9+
10+
final class TranslationsTest extends TestCase
11+
{
12+
/**
13+
* Test that all locales only contain phrases appearing for the locale "en"
14+
* or "date_format"
15+
*/
16+
public function testAllPhrasesValid(): void
17+
{
18+
$translations = include 'src/translations.php';
19+
$locales = array_keys($translations);
20+
$valid_phrases = array_merge(array_keys($translations['en']), ['date_format']);
21+
foreach ($locales as $locale) {
22+
$phrases = array_keys($translations[$locale]);
23+
$this->assertEquals(
24+
array_diff($phrases, $valid_phrases),
25+
[],
26+
"Locale $locale contains invalid phrases"
27+
);
28+
}
29+
}
30+
}

tests/expected/test_locale_ja_card.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)