diff --git a/README.md b/README.md
index d8649a07..6378e3e8 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,13 @@
3. Star the repo 😄
-> **Note** See below for customization options and about deploying the app on your own.
+Check out the [Demo Site](https://streak-stats.demolab.com) or [Options](https://github.com/DenverCoder1/github-readme-streak-stats?tab=readme-ov-file#-options) below for available customizations.
+
+> It is recommended to self-host the project more better reliability.
+>
+> [][herokudeploy] [][verceldeploy]
+>
+> See [Deploying it on your own](https://github.com/DenverCoder1/github-readme-streak-stats?tab=readme-ov-file#-deploying-it-on-your-own) for more details.
## ⚙ Demo Site
@@ -96,7 +102,7 @@ The following are the locales that have labels translated in Streak Stats. The `
-
en - English
 | am - አማርኛ
 | ca - català
 | da - dansk
 | de - Deutsch
 |
el - Ελληνικά
 | es - español
 | fr - français
 | he - עברית
 | hu - magyar
 |
id - Indonesia
 | it - italiano
 | kn - ಕನ್ನಡ
 | ko - 한국어
 | ne - नेपाली
 |
nl - Nederlands
 | pt_BR - português (Brasil)
 | sa - संस्कृत भाषा
 | sr - српски
 | su - Basa Sunda
 |
tr - Türkçe
 | uk - українська
 | ur_PK - اردو (پاکستان)
 | vi - Tiếng Việt
 | yo - Èdè Yorùbá
 |
zh_Hans - 中文(简体)
 | zh_Hant - 中文(繁體)
 | ar - العربية
 | bg - български
 | bn - বাংলা
 |
fa - فارسی
 | hi - हिन्दी
 | ht - Haitian Creole
 | hy - հայերեն
 | ja - 日本語
 |
mr - मराठी
 | pl - polski
 | ps - پښتو
 | ru - русский
 | rw - Kinyarwanda
 |
sv - svenska
 | sw - Kiswahili
 | ta - தமிழ்
 | | |
+en - English
 | am - አማርኛ
 | ar - العربية
 | ca - català
 | ceb - Binisaya
 |
da - dansk
 | de - Deutsch
 | el - Ελληνικά
 | es - español
 | fil - Filipino
 |
fr - français
 | he - עברית
 | hi - हिन्दी
 | hu - magyar
 | id - Indonesia
 |
it - italiano
 | ja - 日本語
 | kn - ಕನ್ನಡ
 | ko - 한국어
 | ms - Melayu
 |
ne - नेपाली
 | nl - Nederlands
 | pt_BR - português (Brasil)
 | ru - русский
 | sa - संस्कृत भाषा
 |
sr - српски
 | su - Basa Sunda
 | th - ไทย
 | tr - Türkçe
 | uk - українська
 |
ur_PK - اردو (پاکستان)
 | vi - Tiếng Việt
 | yo - Èdè Yorùbá
 | zh_Hans - 中文(简体)
 | zh_Hant - 中文(繁體)
 |
bg - български
 | bn - বাংলা
 | fa - فارسی
 | ht - Haitian Creole
 | hy - հայերեն
 |
mr - मराठी
 | pl - polski
 | ps - پښتو
 | rw - Kinyarwanda
 | sv - svenska
 |
sw - Kiswahili
 | ta - தமிழ்
 | | | |
@@ -144,68 +150,98 @@ The current streak is the number of consecutive days ending with the current day
## 📤 Deploying it on your own
-If you can, it is preferable to host the files on your own server.
+It is preferable to host the files on your own server and it takes less than 2 minutes to set up.
Doing this can lead to better uptime and more control over customization (you can modify the code for your usage).
-You can deploy the PHP files on any website server with PHP installed or as a Heroku app.
+You can deploy the PHP files on any website server with PHP installed including Heroku and Vercel.
The Inkscape dependency is required for PNG rendering, as well as Segoe UI font for the intended rendering. If using Heroku, the buildpacks will install these for you automatically.
-### Deploy Streak Stats instantly
+### [][verceldeploy]
+
+Vercel is the recommended option for hosting the files since it is **free** and easy to set up. Watch the video below or expand the instructions to learn how to deploy to Vercel.
+
+> **Note** PNG mode is not supported since Inkscape will not be installed but the default SVG mode will work.
-[](https://heroku.com)
+### 📺 [Click here for a video tutorial on how to self-host on Vercel](https://www.youtube.com/watch?v=maoXtlb8t44)
- Instructions for Deploying to Heroku ($5-$7/month)
-
- ### Step-by-step instructions for deploying to Heroku
-
- 1. Sign in to **Heroku** or create a new account at
- 2. Visit [this link](https://github.com/settings/tokens/new?description=GitHub%20Readme%20Streak%20Stats) to create a new Personal Access Token (no scopes required)
- 3. Scroll to the bottom and click **"Generate token"**
- 4. Click the Deploy button below
+ Instructions for deploying to Vercel
+
+### Step-by-step instructions for deploying to Vercel
+
+#### Option 1: Deploy to Vercel quickly with the Deploy button (recommended)
+
+1. Click the Deploy button below
-[](#) [](https://heroku.com/deploy?template=https://github.com/DenverCoder1/github-readme-streak-stats/tree/main "Deploy to Heroku")
+[](#) [][verceldeploy]
+2. Create your repository by filling in a Repository Name and clicking "Create"
+3. Visit [this link](https://github.com/settings/tokens/new?description=GitHub%20Readme%20Streak%20Stats) to create a new Personal Access Token (no scopes required)
+4. Scroll to the bottom and click **"Generate token"**
5. **Add the token** as a Config Var with the key `TOKEN`:
-
+
-6. Click **"Deploy App"** at the end of the form
-7. Once the app is deployed, you can use `.herokuapp.com` in place of `streak-stats.demolab.com`
+6. Click **"Deploy"** at the end of the form
+7. Once the app is deployed, click the screenshot of your app or continue to the dashboard to find your domain to use in place of `streak-stats.demolab.com`
+
+
+
+#### Option 2: Deploy to Vercel manually
+
+1. Sign in to **Vercel** or create a new account at
+2. Use the following command to clone the repository: `git clone https://github.com/DenverCoder1/github-readme-streak-stats.git`. If you plan to make changes, you can also fork the repository and clone your fork instead. If you do not have Git installed, you can download it from .
+3. Navigate to the cloned repository's directory using the command `cd github-readme-streak-stats`
+4. Switch to the "vercel" branch using the command `git checkout vercel`
+5. Make sure you have the Vercel CLI (Command Line Interface) installed on your system. If not, you can download it from .
+6. Run the command `vercel` and follow the prompts to link your Vercel account and choose a project name
+7. After successful deployment, your app will be available at `.vercel.app`
+8. Open [this link](https://github.com/settings/tokens/new?description=GitHub%20Readme%20Streak%20Stats) to create a new Personal Access Token on GitHub. You don't need to select any scopes for the token.
+9. Scroll to the bottom of the page and click on **"Generate token"**
+10. Visit the Vercel dashboard at and select your project. Then, click on **"Settings"** and choose **"Environment Variables"**.
+11. Add a new environment variable with the key `TOKEN` and the value as the token you generated in step 9, then save your changes
+12. To apply the new environment variable, you need to redeploy the app. Run `vercel --prod` to deploy the app to production.
+
+
+
+> **Note** To set up automatic Vercel deployments from GitHub, make sure to turn **off** "Include source files outside of the Root Directory" in the General settings and use `vercel` as the production branch in the Git settings.
-[](https://vercel.com)
+### [][herokudeploy]
+
+Heroku is another great option for hosting the files. All features are supported on Heroku and it is where the default domain is hosted. Heroku is not free, however, and you will need to pay between \$5 and \$7 per month to keep the app running. Expand the instructions below to learn how to deploy to Heroku.
- Instructions for Deploying to Vercel (Free)
+ Instructions for deploying to Heroku
-### Step-by-step instructions for deploying to Vercel
+### Step-by-step instructions for deploying to Heroku
+
+1. Sign in to **Heroku** or create a new account at
+2. Visit [this link](https://github.com/settings/tokens/new?description=GitHub%20Readme%20Streak%20Stats) to create a new Personal Access Token (no scopes required)
+3. Scroll to the bottom and click **"Generate token"**
+4. Click the Deploy button below
-> **Note** PNG mode is not supported since Inkscape will not be installed.
+[](#) [][herokudeploy]
-1. Sign in to **Vercel** or create a new account at
-2. Clone this repository with `git clone https://github.com/DenverCoder1/github-readme-streak-stats.git`
- - You may also fork the repository and clone your fork instead if you intend to make changes
-3. Enter the directory with `cd github-readme-streak-stats`
-4. Switch branches to the `vercel` branch with `git checkout vercel`
-5. Make sure you have the [Vercel CLI](https://vercel.com/download) installed
-6. Run `vercel` and follow the prompts to link your Vercel account and select a project name
-7. The app will be deployed to `.vercel.app`
-8. Visit [this link](https://github.com/settings/tokens/new?description=GitHub%20Readme%20Streak%20Stats) to create a new Personal Access Token (no scopes required)
-9. Scroll to the bottom and click **"Generate token"**
-10. Visit the [Vercel dashboard](https://vercel.com/dashboard) and select your project, then click **"Settings"**, then **"Environment Variables"**.
-11. Add a new variable with the key `TOKEN` and the value as your token from step 9 and click "Save".
-12. For the environment variable to be available, you will need to redeploy the app. Run `vercel --prod` to deploy to production.
+5. **Add the token** as a Config Var with the key `TOKEN`:
-
+
-> **Note** To set up automatic Vercel deployments from GitHub, make sure to turn **off** "Include source files outside of the Root Directory" in the General settings and use `vercel` as the production branch in the Git settings.
+6. Click **"Deploy App"** at the end of the form
+7. Once the app is deployed, you can use `.herokuapp.com` in place of `streak-stats.demolab.com`
+### 
+
+You can transfer the files to any webserver using FTP or other means, then refer to [CONTRIBUTING.md](/CONTRIBUTING.md) for installation steps.
+
+[verceldeploy]: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDenverCoder1%2Fgithub-readme-streak-stats%2Ftree%2Fvercel&env=TOKEN&envDescription=GitHub%20Personal%20Access%20Token%20(no%20scopes%20required)&envLink=https%3A%2F%2Fgithub.com%2Fsettings%2Ftokens%2Fnew%3Fdescription%3DGitHub%2520Readme%2520Streak%2520Stats&project-name=streak-stats&repository-name=github-readme-streak-stats
+[herokudeploy]: https://heroku.com/deploy?template=https://github.com/DenverCoder1/github-readme-streak-stats/tree/main
+
## 🤗 Contributing
Contributions are welcome! Feel free to [open an issue](https://github.com/DenverCoder1/github-readme-streak-stats/issues/new/choose) or submit a [pull request](https://github.com/DenverCoder1/github-readme-streak-stats/compare) if you have a way to improve this project.
diff --git a/app.json b/app.json
index 0bc56f3b..5e568a8f 100644
--- a/app.json
+++ b/app.json
@@ -8,13 +8,13 @@
"env": {
"TOKEN": {
"description": "GitHub personal access token obtained from https://github.com/settings/tokens/new",
- "required": false
+ "required": true
}
},
"formation": {
"web": {
"quantity": 1,
- "size": "free"
+ "size": "basic"
}
},
"buildpacks": [
diff --git a/composer.json b/composer.json
index 8bcf3cf4..db93c9bc 100644
--- a/composer.json
+++ b/composer.json
@@ -10,7 +10,7 @@
"stats"
],
"license": "MIT",
- "version": "1.2.0",
+ "version": "1.3.0",
"homepage": "https://github.com/DenverCoder1/github-readme-streak-stats",
"autoload": {
"classmap": [
diff --git a/composer.lock b/composer.lock
index ecf14102..7feb833d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "855174c5240dc5308c365f2d6f15fd9f",
+ "content-hash": "3995196aa043b2648635de89283124c5",
"packages": [
{
"name": "graham-campbell/result-type",
@@ -775,16 +775,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.27",
+ "version": "9.2.29",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1"
+ "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1",
- "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+ "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
"shasum": ""
},
"require": {
@@ -841,7 +841,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.27"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29"
},
"funding": [
{
@@ -849,7 +849,7 @@
"type": "github"
}
],
- "time": "2023-07-26T13:44:30+00:00"
+ "time": "2023-09-19T04:57:46+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -1094,16 +1094,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.11",
+ "version": "9.6.13",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "810500e92855eba8a7a5319ae913be2da6f957b0"
+ "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/810500e92855eba8a7a5319ae913be2da6f957b0",
- "reference": "810500e92855eba8a7a5319ae913be2da6f957b0",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
+ "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
"shasum": ""
},
"require": {
@@ -1118,7 +1118,7 @@
"phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
- "phpunit/php-code-coverage": "^9.2.13",
+ "phpunit/php-code-coverage": "^9.2.28",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.3",
@@ -1177,7 +1177,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.11"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13"
},
"funding": [
{
@@ -1193,7 +1193,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-19T07:10:56+00:00"
+ "time": "2023-09-19T05:39:22+00:00"
},
{
"name": "sebastian/cli-parser",
diff --git a/docs/faq.md b/docs/faq.md
index 8570404e..1cf4d3a1 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -1,5 +1,9 @@
# FAQ
+## How do I create a Readme for my profile?
+
+A profile readme appears on your profile page when you create a repository with the same name as your username and add a `README.md` file to it. For example, the repository for the user [`DenverCoder1`](https://github.com/DenverCoder1) is located at [`DenverCoder1/DenverCoder1`](https://github.com/DenverCoder1/DenverCoder1).
+
## How do I include GitHub Readme Streak Stats in my Readme?
Markdown files on GitHub support embedded images using Markdown or HTML. You can customize your Streak Stats image on the [demo site](https://streak-stats.demolab.com/demo/) and use the image source in either of the following ways:
@@ -71,6 +75,10 @@ You can [specify theme context](https://github.blog/changelog/2022-05-19-specify
```
-## How do I create a Readme for my profile?
+## Why and how do I self-host GitHub Readme Streak Stats?
-A profile readme appears on your profile page when you create a repository with the same name as your username and add a `README.md` file to it. For example, the repository for the user [`DenverCoder1`](https://github.com/DenverCoder1) is located at [`DenverCoder1/DenverCoder1`](https://github.com/DenverCoder1/DenverCoder1).
+Self-hosting the code can be done online and only takes a couple minutes. The benefits include better uptime since it will use your own access token so will not run into ratelimiting issues and it allows you to customize the deployment for your own use case.
+
+### [📺 Click here for a video tutorial on how to self-host on Vercel](https://www.youtube.com/watch?v=maoXtlb8t44)
+
+See [Deploying it on your own](https://github.com/DenverCoder1/github-readme-streak-stats?tab=readme-ov-file#-deploying-it-on-your-own) in the Readme for detailed instructions.
diff --git a/docs/themes.md b/docs/themes.md
index f50e9391..2d0a5bec 100644
--- a/docs/themes.md
+++ b/docs/themes.md
@@ -6,137 +6,150 @@ You can also try out and customize these themes on the [Demo Site](https://strea
Note: Theme names provided are case-insensitive and any use of underscores will be treated the same as hyphens.
-| Theme | Preview |
-| :---------------------------: | :--------------------------------------------------------------------------------------------------------------: |
-| `default` |  |
-| `dark` |  |
-| `highcontrast` |  |
-| `transparent` |  |
-| `radical` |  |
-| `merko` |  |
-| `gruvbox` |  |
-| `gruvbox-duo` |  |
-| `tokyonight` |  |
-| `tokyonight-duo` |  |
-| `onedark` |  |
-| `onedark-duo` |  |
-| `cobalt` |  |
-| `synthwave` |  |
-| `dracula` |  |
-| `prussian` |  |
-| `monokai` |  |
-| `vue` |  |
-| `vue-dark` |  |
-| `shades-of-purple` |  |
-| `nightowl` |  |
-| `buefy` |  |
-| `buefy-dark` |  |
-| `blue-green` |  |
-| `algolia` |  |
-| `great-gatsby` |  |
-| `darcula` |  |
-| `bear` |  |
-| `solarized-dark` |  |
-| `solarized-light` |  |
-| `chartreuse-dark` |  |
-| `nord` |  |
-| `gotham` |  |
-| `material-palenight` |  |
-| `graywhite` |  |
-| `vision-friendly-dark` |  |
-| `ayu-mirage` |  |
-| `midnight-purple` |  |
-| `calm` |  |
-| `flag-india` |  |
-| `omni` |  |
-| `react` |  |
-| `jolly` |  |
-| `maroongold` |  |
-| `yeblu` |  |
-| `blueberry` |  |
-| `blueberry-duo` |  |
-| `slateorange` |  |
-| `kacho-ga` |  |
-| `ads-juicy-fresh` |  |
-| `black-ice` |  |
-| `soft-green` |  |
-| `blood` |  |
-| `blood-dark` |  |
-| `green-nur` |  |
-| `neon-dark` |  |
-| `neon-palenight` |  |
-| `dark-smoky` |  |
-| `monokai-metallian` |  |
-| `city-lights` |  |
-| `blux` |  |
-| `earth` |  |
-| `deepblue` |  |
-| `holi-theme` |  |
-| `ayu-light` |  |
-| `javascript` |  |
-| `javascript-dark` |  |
-| `noctis-minimus` |  |
-| `github-dark` |  |
-| `github-dark-blue` |  |
-| `github-light` |  |
-| `elegant` |  |
-| `leafy` |  |
-| `navy-gear` |  |
-| `hacker` |  |
-| `garden` |  |
-| `github-green-purple` |  |
-| `icegray` |  |
-| `neon-blurange` |  |
-| `yellowdark` |  |
-| `java-dark` |  |
-| `android-dark` |  |
-| `deuteranopia-friendly-theme` |  |
-| `windows-dark` |  |
-| `git-dark` |  |
-| `python-dark` |  |
-| `sea` |  |
-| `sea-dark` |  |
-| `violet-dark` |  |
-| `horizon` |  |
-| `material` |  |
-| `modern-lilac` |  |
-| `modern-lilac2` |  |
-| `halloween` |  |
-| `violet-punch` |  |
-| `submarine-flowers` |  |
-| `rising-sun` |  |
-| `gruvbox-light` |  |
-| `outrun` |  |
-| `ocean-dark` |  |
-| `discord-old-blurple` |  |
-| `aura-dark` |  |
-| `panda` |  |
-| `cobalt2` |  |
-| `swift` |  |
-| `aura` |  |
-| `apprentice` |  |
-| `moltack` |  |
-| `codestackr` |  |
-| `rose-pine` |  |
-| `date-night` |  |
-| `one-dark-pro` |  |
-| `rose` |  |
-| `neon` |  |
-| `sunset-gradient` |  |
-| `ocean-gradient` |  |
-| `ambient-gradient` |  |
-| `catppuccin-latte` |  |
-| `catppuccino-frappe` |  |
-| `catppuccino-macchiato` |  |
-| `catppuccino-mocha` |  |
-| `burnt-neon` |  |
-| `humoris` |  |
-| `shadow-red` |  |
-| `shadow-green` |  |
-| `shadow-blue` |  |
-| `shadow-orange` |  |
-| `shadow-purple` |  |
-| `shadow-brown` |  |
+| Theme | Preview |
+| :---------------------------: | :-----------------------------------------------------------------------------------------------------------------------: |
+| `default` |  |
+| `dark` |  |
+| `highcontrast` |  |
+| `transparent` |  |
+| `radical` |  |
+| `merko` |  |
+| `gruvbox` |  |
+| `gruvbox-duo` |  |
+| `tokyonight` |  |
+| `tokyonight-duo` |  |
+| `onedark` |  |
+| `onedark-duo` |  |
+| `cobalt` |  |
+| `synthwave` |  |
+| `dracula` |  |
+| `prussian` |  |
+| `monokai` |  |
+| `vue` |  |
+| `vue-dark` |  |
+| `shades-of-purple` |  |
+| `nightowl` |  |
+| `buefy` |  |
+| `buefy-dark` |  |
+| `blue-green` |  |
+| `algolia` |  |
+| `great-gatsby` |  |
+| `darcula` |  |
+| `bear` |  |
+| `solarized-dark` |  |
+| `solarized-light` |  |
+| `chartreuse-dark` |  |
+| `nord` |  |
+| `gotham` |  |
+| `material-palenight` |  |
+| `graywhite` |  |
+| `vision-friendly-dark` |  |
+| `ayu-mirage` |  |
+| `midnight-purple` |  |
+| `calm` |  |
+| `flag-india` |  |
+| `omni` |  |
+| `react` |  |
+| `jolly` |  |
+| `maroongold` |  |
+| `yeblu` |  |
+| `blueberry` |  |
+| `blueberry-duo` |  |
+| `slateorange` |  |
+| `kacho-ga` |  |
+| `ads-juicy-fresh` |  |
+| `black-ice` |  |
+| `soft-green` |  |
+| `blood` |  |
+| `blood-dark` |  |
+| `green-nur` |  |
+| `neon-dark` |  |
+| `neon-palenight` |  |
+| `dark-smoky` |  |
+| `monokai-metallian` |  |
+| `city-lights` |  |
+| `blux` |  |
+| `earth` |  |
+| `deepblue` |  |
+| `holi-theme` |  |
+| `ayu-light` |  |
+| `javascript` |  |
+| `javascript-dark` |  |
+| `noctis-minimus` |  |
+| `github-dark` |  |
+| `github-dark-blue` |  |
+| `github-light` |  |
+| `elegant` |  |
+| `leafy` |  |
+| `navy-gear` |  |
+| `hacker` |  |
+| `garden` |  |
+| `github-green-purple` |  |
+| `icegray` |  |
+| `neon-blurange` |  |
+| `yellowdark` |  |
+| `java-dark` |  |
+| `android-dark` |  |
+| `deuteranopia-friendly-theme` |  |
+| `windows-dark` |  |
+| `git-dark` |  |
+| `python-dark` |  |
+| `sea` |  |
+| `sea-dark` |  |
+| `violet-dark` |  |
+| `horizon` |  |
+| `material` |  |
+| `modern-lilac` |  |
+| `modern-lilac2` |  |
+| `halloween` |  |
+| `violet-punch` |  |
+| `submarine-flowers` |  |
+| `rising-sun` |  |
+| `gruvbox-light` |  |
+| `outrun` |  |
+| `ocean-dark` |  |
+| `discord-old-blurple` |  |
+| `aura-dark` |  |
+| `panda` |  |
+| `cobalt2` |  |
+| `swift` |  |
+| `aura` |  |
+| `apprentice` |  |
+| `moltack` |  |
+| `codestackr` |  |
+| `rose-pine` |  |
+| `date-night` |  |
+| `one-dark-pro` |  |
+| `rose` |  |
+| `neon` |  |
+| `sunset-gradient` |  |
+| `ocean-gradient` |  |
+| `ambient-gradient` |  |
+| `catppuccin-latte` |  |
+| `catppuccino-frappe` |  |
+| `catppuccino-macchiato` |  |
+| `catppuccino-mocha` |  |
+| `burnt-neon` |  |
+| `humoris` |  |
+| `shadow-red` |  |
+| `shadow-green` |  |
+| `shadow-blue` |  |
+| `shadow-orange` |  |
+| `shadow-purple` |  |
+| `shadow-brown` |  |
+| `github-dark-dimmed` |  |
+| `blue-navy` |  |
+| `calm-pink` |  |
+| `whatsapp-light` |  |
+| `whatsapp-dark` |  |
+| `carbonfox` |  |
+| `dawnfox` |  |
+| `dayfox` |  |
+| `duskfox` |  |
+| `nightfox` |  |
+| `nordfox` |  |
+| `terafox` |  |
+| `iceberg` |  |
### Can't find the theme you like?
diff --git a/scripts/translation-progress.php b/scripts/translation-progress.php
index 030fff9c..b8c343db 100644
--- a/scripts/translation-progress.php
+++ b/scripts/translation-progress.php
@@ -17,7 +17,7 @@ function getProgress(array $translations): array
"Week Streak",
"Longest Week Streak",
"Present",
- "Excluding",
+ "Excluding {days}",
];
$translations_file = file(__DIR__ . "/../src/translations.php");
diff --git a/src/card.php b/src/card.php
index b38ec9b7..d5ddc6d9 100644
--- a/src/card.php
+++ b/src/card.php
@@ -84,6 +84,21 @@ function translateDays(array $days, string $locale): array
return $translatedDays;
}
+/**
+ * Get the excluding days text
+ *
+ * @param array $excludedDays List of excluded days
+ * @param array $localeTranslations Translations for the locale
+ * @param string $localeCode Locale code
+ * @return string Excluding days text
+ */
+function getExcludingDaysText($excludedDays, $localeTranslations, $localeCode)
+{
+ $separator = $localeTranslations["comma_separator"] ?? ", ";
+ $daysCommaSeparated = implode($separator, translateDays($excludedDays, $localeCode));
+ return str_replace("{days}", $daysCommaSeparated, $localeTranslations["Excluding {days}"]);
+}
+
/**
* Normalize a theme name
*
@@ -412,13 +427,13 @@ function generateCard(array $stats, array $params = null): string
// if days are excluded, add a note to the corner
$excludedDays = "";
if (!empty($stats["excludedDays"])) {
- $daysCommaSeparated = implode(", ", translateDays($stats["excludedDays"], $localeCode));
$offset = $direction === "rtl" ? $cardWidth - 5 : 5;
+ $excludingDaysText = getExcludingDaysText($stats["excludedDays"], $localeTranslations, $localeCode);
$excludedDays = "
- * {$localeTranslations["Excluding"]} {$daysCommaSeparated}
+ * {$excludingDaysText}
";
@@ -697,6 +712,9 @@ function convertSvgToPng(string $svg, int $cardWidth): string
// remove style and animations
$svg = removeAnimations($svg);
+ // replace newlines with spaces
+ $svg = str_replace("\n", " ", $svg);
+
// escape svg for shell
$svg = escapeshellarg($svg);
diff --git a/src/themes.php b/src/themes.php
index d09449db..12d6b5d9 100644
--- a/src/themes.php
+++ b/src/themes.php
@@ -1679,4 +1679,173 @@
"dates" => "#747474",
"excludeDaysLabel" => "#BB9863",
],
+ "github-dark-dimmed" => [
+ "background" => "#24292F",
+ "border" => "#373E47",
+ "stroke" => "#539BF5",
+ "ring" => "#539BF5",
+ "currStreakNum" => "#ADBAC7",
+ "fire" => "#539BF5",
+ "sideNums" => "#ADBAC7",
+ "currStreakLabel" => "#539BF5",
+ "sideLabels" => "#539BF5",
+ "dates" => "#ADBAC7",
+ "excludeDaysLabel" => "#78818A",
+ ],
+ "blue-navy" => [
+ "background" => "#000000",
+ "border" => "#FFFFFF",
+ "stroke" => "#82AAFF",
+ "ring" => "#82AAFF",
+ "currStreakNum" => "#82AAFF",
+ "fire" => "#82AAFF",
+ "sideNums" => "#82AAFF",
+ "currStreakLabel" => "#82AAFF",
+ "sideLabels" => "#82AAFF",
+ "dates" => "#82AAFF",
+ "excludeDaysLabel" => "#82AAFF",
+ ],
+ "calm-pink" => [
+ "background" => "#2B2D40",
+ "border" => "#E1BC29",
+ "stroke" => "#E07A5F",
+ "ring" => "#E07A5F",
+ "currStreakNum" => "#EBCFB2",
+ "fire" => "#E07A5F",
+ "sideNums" => "#EBCFB2",
+ "currStreakLabel" => "#E07A5F",
+ "sideLabels" => "#E07A5F",
+ "dates" => "#E1BC29",
+ "excludeDaysLabel" => "#EBCFB2",
+ ],
+ "whatsapp-light" => [
+ "background" => "#FFFFFF",
+ "border" => "#E4E2E2",
+ "stroke" => "#008069",
+ "ring" => "#008069",
+ "fire" => "#121B22",
+ "currStreakNum" => "#16D351",
+ "sideNums" => "#16D351",
+ "currStreakLabel" => "#121B22",
+ "sideLabels" => "#121B22",
+ "dates" => "#73828A",
+ "excludeDaysLabel" => "#73828A",
+ ],
+ "whatsapp-dark" => [
+ "background" => "#121B22",
+ "border" => "#1B2832",
+ "stroke" => "#273741",
+ "ring" => "#273741",
+ "fire" => "#E3E7EA",
+ "currStreakNum" => "#00A884",
+ "sideNums" => "#00A884",
+ "currStreakLabel" => "#E3E7EA",
+ "sideLabels" => "#E3E7EA",
+ "dates" => "#888D90",
+ "excludeDaysLabel" => "#888D90",
+ ],
+ "carbonfox" => [
+ "background" => "#161616",
+ "border" => "#282828",
+ "stroke" => "#EE5396",
+ "ring" => "#25BE6AC8",
+ "fire" => "#25BE6A",
+ "currStreakNum" => "#78A9FF",
+ "sideNums" => "#33B1FF",
+ "currStreakLabel" => "#DFDFE0",
+ "sideLabels" => "#DFDFE0",
+ "dates" => "#08BDBA",
+ "excludeDaysLabel" => "#EE5396",
+ ],
+ "dawnfox" => [
+ "background" => "#FAF4ED",
+ "border" => "#E5E9F0",
+ "stroke" => "#B4637A",
+ "ring" => "#618774C8",
+ "fire" => "#618774",
+ "currStreakNum" => "#286983",
+ "sideNums" => "#56949F",
+ "currStreakLabel" => "#575279",
+ "sideLabels" => "#575279",
+ "dates" => "#EA9D34",
+ "excludeDaysLabel" => "#B4637A",
+ ],
+ "dayfox" => [
+ "background" => "#F6F2EE",
+ "border" => "#F2E9E1",
+ "stroke" => "#A5222F",
+ "ring" => "#396847C8",
+ "fire" => "#396847",
+ "currStreakNum" => "#2848A9",
+ "sideNums" => "#287980",
+ "currStreakLabel" => "#352C24",
+ "sideLabels" => "#352C24",
+ "dates" => "#AC5402",
+ "excludeDaysLabel" => "#A5222F",
+ ],
+ "duskfox" => [
+ "background" => "#232136",
+ "border" => "#393552",
+ "stroke" => "#EB6F92",
+ "ring" => "#A3BE8CC8",
+ "fire" => "#A3BE8C",
+ "currStreakNum" => "#569FBA",
+ "sideNums" => "#9CCFD8",
+ "currStreakLabel" => "#E0DEF4",
+ "sideLabels" => "#E0DEF4",
+ "dates" => "#F6C177",
+ "excludeDaysLabel" => "#EB6F92",
+ ],
+ "nightfox" => [
+ "background" => "#192330",
+ "border" => "#393B44",
+ "stroke" => "#C94F6D",
+ "ring" => "#6C9581C8",
+ "fire" => "#81B29A",
+ "currStreakNum" => "#719CD6",
+ "sideNums" => "#63CDCF",
+ "currStreakLabel" => "#DFDFE0",
+ "sideLabels" => "#DFDFE0",
+ "dates" => "#DBC074",
+ "excludeDaysLabel" => "#C94F6D",
+ ],
+ "nordfox" => [
+ "background" => "#2E3440",
+ "border" => "#3B4252",
+ "stroke" => "#BF616A",
+ "ring" => "#A3BE8CC8",
+ "fire" => "#A3BE8C",
+ "currStreakNum" => "#81A1C1",
+ "sideNums" => "#88C0D0",
+ "currStreakLabel" => "#E5E9F0",
+ "sideLabels" => "#E5E9F0",
+ "dates" => "#EBCB8B",
+ "excludeDaysLabel" => "#BF616A",
+ ],
+ "terafox" => [
+ "background" => "#152528",
+ "border" => "#2F3239",
+ "stroke" => "#E85C51",
+ "ring" => "#7AA4A1C8",
+ "fire" => "#7AA4A1",
+ "currStreakNum" => "#5A93AA",
+ "sideNums" => "#A1CDD8",
+ "currStreakLabel" => "#EBEBEB",
+ "sideLabels" => "#EBEBEB",
+ "dates" => "#FDA47F",
+ "excludeDaysLabel" => "#E85C51",
+ ],
+ "iceberg" => [
+ "background" => "#1E2132",
+ "border" => "#33374C",
+ "stroke" => "#33374C",
+ "ring" => "#84A0C6",
+ "fire" => "#84A0C6",
+ "currStreakNum" => "#D2D4DE",
+ "sideNums" => "#327698",
+ "currStreakLabel" => "#D2D4DE",
+ "sideLabels" => "#D2D4DE",
+ "dates" => "#327698",
+ "excludeDaysLabel" => "#84A0C6",
+ ],
];
diff --git a/src/translations.php b/src/translations.php
index f5ed199d..f84069ed 100644
--- a/src/translations.php
+++ b/src/translations.php
@@ -22,6 +22,10 @@
* ------------------------------
* To enable right-to-left language support, add `"rtl" => true` to the locale array (see "he" for an example).
*
+ * Comma Separator
+ * ---------------
+ * To change the comma separator in the enumeration of excluded days, add `"comma_separator" => ", "` to the locale array with the desired separator as the value.
+ *
* Aliases
* -------
* To add an alias for a locale, add the alias as a key to the locale array with the locale it should redirect to as the value.
@@ -37,7 +41,7 @@
"Week Streak" => "Week Streak",
"Longest Week Streak" => "Longest Week Streak",
"Present" => "Present",
- "Excluding" => "Excluding",
+ "Excluding {days}" => "Excluding {days}",
],
// Locales below are sorted alphabetically
"am" => [
@@ -47,7 +51,7 @@
"Week Streak" => "የሳምንት ድግግሞሽ",
"Longest Week Streak" => "በጣም ረጅሙ የሳምንት ድግግሞሽ",
"Present" => "ያሁኑ",
- "Excluding" => "ሳይጨምር",
+ "Excluding {days}" => "ሳይጨምር {days}",
],
"ar" => [
"rtl" => true,
@@ -57,6 +61,8 @@
"Week Streak" => "السلسلة المتتالية الأُسبوعية",
"Longest Week Streak" => "أُطول سلسلة متتالية أُسبوعية",
"Present" => "الحاضر",
+ "Excluding {days}" => "باستثناء {days}",
+ "comma_separator" => "، ",
],
"bg" => [
"Total Contributions" => "Общ принос",
@@ -81,7 +87,16 @@
"Week Streak" => "Ratxa setmanal",
"Longest Week Streak" => "Ratxa setmanal més llarga",
"Present" => "Actual",
- "Excluding" => "Excloent",
+ "Excluding {days}" => "Excloent {days}",
+ ],
+ "ceb" => [
+ "Total Contributions" => "Kinatibuk-ang Kontribusyon",
+ "Current Streak" => "Kasamtangan nga Streak",
+ "Longest Streak" => "Pinakataas nga Streak",
+ "Week Streak" => "Sinemana nga Streak",
+ "Longest Week Streak" => "Pinakataas nga Semana nga Streak",
+ "Present" => "Karon",
+ "Excluding {days}" => "Wala'y Labot {days}",
],
"da" => [
"Total Contributions" => "Samlet antal bidrag",
@@ -90,7 +105,7 @@
"Week Streak" => "Ugentlige bidrag i træk",
"Longest Week Streak" => "Flest ugentlige bidrag i træk",
"Present" => "Nuværende",
- "Excluding" => "Ekskluderer",
+ "Excluding {days}" => "Ekskluderer {days}",
],
"de" => [
"Total Contributions" => "Gesamte Beiträge",
@@ -99,7 +114,7 @@
"Week Streak" => "Wochenserie",
"Longest Week Streak" => "Längste Wochenserie",
"Present" => "Heute",
- "Excluding" => "Ausgenommen",
+ "Excluding {days}" => "Ausgenommen {days}",
],
"el" => [
"Total Contributions" => "Συνολικές Συνεισφορές",
@@ -108,7 +123,7 @@
"Week Streak" => "Εβδομαδιαία Σειρά",
"Longest Week Streak" => "Μεγαλύτερη Εβδομαδιαία Σειρά",
"Present" => "Σήμερα",
- "Excluding" => "Εξαιρούνται",
+ "Excluding {days}" => "Εξαιρούνται {days}",
],
"es" => [
"Total Contributions" => "Contribuciones Totales",
@@ -117,7 +132,7 @@
"Week Streak" => "Racha Semanal",
"Longest Week Streak" => "Racha Semanal Más Larga",
"Present" => "Presente",
- "Excluding" => "Excluyendo",
+ "Excluding {days}" => "Excluyendo {days}",
],
"fa" => [
"rtl" => true,
@@ -127,6 +142,16 @@
"Week Streak" => "پیرفت هفته",
"Longest Week Streak" => "طولانی ترین پیرفت هفته",
"Present" => "اکنون",
+ "comma_separator" => "، ",
+ ],
+ "fil" => [
+ "Total Contributions" => "Kabuuang Kontribusyon",
+ "Current Streak" => "Kasalukuyang Streak",
+ "Longest Streak" => "Pinakamahabang Streak",
+ "Week Streak" => "Linggong Streak",
+ "Longest Week Streak" => "Pinakamahabang Linggong Streak",
+ "Present" => "Kasalukuyan",
+ "Excluding {days}" => "Hindi Kasama {days}",
],
"fr" => [
"Total Contributions" => "Contributions totales",
@@ -135,7 +160,7 @@
"Week Streak" => "Séquence de la semaine",
"Longest Week Streak" => "Plus longue séquence hebdomadaire",
"Present" => "Aujourd'hui",
- "Excluding" => "À l'exclusion de",
+ "Excluding {days}" => "À l'exclusion de {days}",
],
"he" => [
"rtl" => true,
@@ -145,7 +170,7 @@
"Week Streak" => "רצף שבועי",
"Longest Week Streak" => "רצף שבועי הכי ארוך",
"Present" => "היום",
- "Excluding" => "לא כולל",
+ "Excluding {days}" => "לא כולל {days}",
],
"hi" => [
"Total Contributions" => "कुल योगदान",
@@ -154,6 +179,7 @@
"Week Streak" => "सप्ताहिक योगदान",
"Longest Week Streak" => "दीर्घ साप्ताहिक योगदान",
"Present" => "आज तक",
+ "Excluding {days}" => "के सिवा {days}",
],
"ht" => [
"Total Contributions" => "kontribisyon total",
@@ -170,7 +196,7 @@
"Week Streak" => "Heti sorozat",
"Longest Week Streak" => "Leghosszabb heti sorozat",
"Present" => "Jelen",
- "Excluding" => "Kivéve",
+ "Excluding {days}" => "Kivéve {days}",
],
"hy" => [
"Total Contributions" => "Ընդհանուր\nներդրումը",
@@ -187,7 +213,7 @@
"Week Streak" => "Aksi Mingguan",
"Longest Week Streak" => "Aksi Mingguan Terpanjang",
"Present" => "Sekarang",
- "Excluding" => "Tidak termasuk",
+ "Excluding {days}" => "Tidak termasuk {days}",
],
"it" => [
"Total Contributions" => "Contributi Totali",
@@ -196,7 +222,7 @@
"Week Streak" => "Serie Settimanale",
"Longest Week Streak" => "Serie Settimanale più Lunga",
"Present" => "Presente",
- "Excluding" => "Escludendo",
+ "Excluding {days}" => "Escludendo {days}",
],
"ja" => [
"date_format" => "[Y.]n.j",
@@ -206,6 +232,8 @@
"Week Streak" => "週間ストリーク",
"Longest Week Streak" => "最長の週間ストリーク",
"Present" => "今",
+ "Excluding {days}" => "{days}を除く",
+ "comma_separator" => "・",
],
"kn" => [
"Total Contributions" => "ಒಟ್ಟು ಕೊಡುಗೆ",
@@ -214,7 +242,7 @@
"Week Streak" => "ವಾರದ ಸ್ಟ್ರೀಕ್",
"Longest Week Streak" => "ಅತ್ಯಧಿಕ ವಾರದ ಸ್ಟ್ರೀಕ್",
"Present" => "ಪ್ರಸ್ತುತ",
- "Excluding" => "ಹೊರತುಪಡಿಸಿ",
+ "Excluding {days}" => "ಹೊರತುಪಡಿಸಿ {days}",
],
"ko" => [
"Total Contributions" => "총 기여 수",
@@ -223,7 +251,7 @@
"Week Streak" => "주간 기여 수",
"Longest Week Streak" => "최대 주간 기여 수",
"Present" => "현재",
- "Excluding" => "제외된 날",
+ "Excluding {days}" => "제외된 날 {days}",
],
"mr" => [
"Total Contributions" => "एकूण योगदान",
@@ -233,6 +261,15 @@
"Longest Week Streak" => "दीर्घकालीन साप्ताहिक सातत्यता",
"Present" => "आज पर्यंत",
],
+ "ms" => [
+ "Total Contributions" => "Jumlah Sumbangan",
+ "Current Streak" => "Tindakan Semasa",
+ "Longest Streak" => "Tindakan Terpanjang",
+ "Week Streak" => "Tindakan Setiap Minggu",
+ "Longest Week Streak" => "Tindakan Setiap Minggu Terpanjang",
+ "Present" => "Sekarang",
+ "Excluding {days}" => "Mengecualikan {days}",
+ ],
"ne" => [
"Total Contributions" => "कुल योगदान",
"Current Streak" => "हालको दैनिक योगदान",
@@ -240,7 +277,7 @@
"Week Streak" => "सप्ताहिक योगदान",
"Longest Week Streak" => "सबैभन्दा लामो साप्ताहिक योगदान",
"Present" => "आज सम्म",
- "Excluding" => "बाहेक",
+ "Excluding {days}" => "बाहेक {days}",
],
"nl" => [
"Total Contributions" => "Totale Bijdrage",
@@ -249,7 +286,7 @@
"Week Streak" => "Week Serie",
"Longest Week Streak" => "Langste Week Serie",
"Present" => "Vandaag",
- "Excluding" => "Exclusief",
+ "Excluding {days}" => "Exclusief {days}",
],
"pl" => [
"Total Contributions" => "Suma Kontrybucji",
@@ -267,6 +304,7 @@
"Week Streak" => "د اونۍ پرمختګ",
"Longest Week Streak" => "د اونۍ تر ټولو اوږد پرمختګ",
"Present" => "اوس",
+ "comma_separator" => "، ",
],
"pt_BR" => [
"Total Contributions" => "Total de Contribuições",
@@ -275,7 +313,7 @@
"Week Streak" => "Sequência Semanal",
"Longest Week Streak" => "Maior Sequência Semanal",
"Present" => "Presente",
- "Excluding" => "Exceto",
+ "Excluding {days}" => "Exceto {days}",
],
"ru" => [
"Total Contributions" => "Общий вклад",
@@ -284,6 +322,7 @@
"Week Streak" => "Текущая серия недель",
"Longest Week Streak" => "Самая длинная серия недель",
"Present" => "Сейчас",
+ "Excluding {days}" => "Не включая {days}",
],
"rw" => [
"Total Contributions" => "Imisanzu yose",
@@ -300,7 +339,7 @@
"Week Streak" => "निरन्तरसप्ताहाः",
"Longest Week Streak" => "दीर्घतमाः निरन्तरसप्ताहाः",
"Present" => "वर्तमान",
- "Excluding" => "बहिष्करणम्",
+ "Excluding {days}" => "बहिष्करणम् {days}",
],
"sr" => [
"Total Contributions" => "Укупно додавања",
@@ -309,16 +348,16 @@
"Week Streak" => "Недељна серија",
"Longest Week Streak" => "Најдужа недељена серија",
"Present" => "Данас",
- "Excluding" => "Искључујући",
+ "Excluding {days}" => "Искључујући {days}",
],
"su" => [
"Total Contributions" => "Total Kontribusi",
"Current Streak" => "Aksi Ayeuna",
"Longest Streak" => "Aksi Pangpanjangna",
- "Week Streak" => "Aksi Minggonan",
- "Longest Week Streak" => "Aksi Minggonan Pangpanjangna",
+ "Week Streak" => "Aksi Unggal Minggon",
+ "Longest Week Streak" => "Aksi Unggal Minggon Pangpanjangna",
"Present" => "Ayeuna",
- "Excluding" => "Teu Kalebet",
+ "Excluding {days}" => "Teu Kaasup {days}",
],
"sv" => [
"Total Contributions" => "Totalt antal uppladningar",
@@ -344,6 +383,15 @@
"Longest Week Streak" => "நீண்ட வார\nபங்களிப்புகள்",
"Present" => "இன்றுவரை",
],
+ "th" => [
+ "Total Contributions" => "คอนทริบิ้วต์ทั้งหมด",
+ "Current Streak" => "สตรีคปัจจุบัน",
+ "Longest Streak" => "สตรีคที่ยาวนานที่สุด",
+ "Week Streak" => "สตรีคประจำสัปดาห์",
+ "Longest Week Streak" => "สตรีคประจำสัปดาห์\nที่ยาวนานที่สุด",
+ "Present" => "ปัจจุบัน",
+ "Excluding {days}" => "ยกเว้น {days}",
+ ],
"tr" => [
"Total Contributions" => "Toplam Katkı",
"Current Streak" => "Güncel Seri",
@@ -351,7 +399,7 @@
"Week Streak" => "Haftalık Seri",
"Longest Week Streak" => "En Uzun Haftalık Seri",
"Present" => "Şu an",
- "Excluding" => "Hariç",
+ "Excluding {days}" => "Hariç {days}",
],
"uk" => [
"Total Contributions" => "Загальний вклад",
@@ -360,7 +408,7 @@
"Week Streak" => "Діяльність за тиждень",
"Longest Week Streak" => "Найбільша к-сть тижнів",
"Present" => "Наразі",
- "Excluding" => "Виключаючи",
+ "Excluding {days}" => "Виключаючи {days}",
],
"ur_PK" => [
"rtl" => true,
@@ -370,7 +418,8 @@
"Week Streak" => "ہفتہ وار تسلسل",
"Longest Week Streak" => "طویل ترین ہفتہ وار تسلسل",
"Present" => "حاظر",
- "Excluding" => "خارج",
+ "Excluding {days}" => "خارج {days}",
+ "comma_separator" => "، ",
],
"vi" => [
"Total Contributions" => "Tổng số đóng góp",
@@ -379,7 +428,7 @@
"Week Streak" => "Chuỗi tuần",
"Longest Week Streak" => "Chuỗi tuần lớn nhất",
"Present" => "Hiện tại",
- "Excluding" => "Ngoại trừ",
+ "Excluding {days}" => "Ngoại trừ {days}",
],
"yo" => [
"Total Contributions" => "Lapapọ ilowosi",
@@ -388,7 +437,7 @@
"Week Streak" => "ṣiṣan ọsẹ",
"Longest Week Streak" => "gunjulo ọsẹ ṣiṣan",
"Present" => "lọwọlọwọ",
- "Excluding" => "Yato si",
+ "Excluding {days}" => "Yato si {days}",
],
"zh" => "zh_Hans",
"zh_Hans" => [
@@ -398,7 +447,8 @@
"Week Streak" => "周连续贡献",
"Longest Week Streak" => "最长周连续贡献",
"Present" => "至今",
- "Excluding" => "除外",
+ "Excluding {days}" => "除外 {days}",
+ "comma_separator" => "、",
],
"zh_Hant" => [
"Total Contributions" => "合計貢獻",
@@ -407,6 +457,7 @@
"Week Streak" => "周連續貢獻",
"Longest Week Streak" => "最常周連續貢獻",
"Present" => "至今",
- "Excluding" => "除外",
+ "Excluding {days}" => "除外 {days}",
+ "comma_separator" => "、",
],
];
diff --git a/tests/TranslationsTest.php b/tests/TranslationsTest.php
index f662c2ce..d8937b18 100644
--- a/tests/TranslationsTest.php
+++ b/tests/TranslationsTest.php
@@ -25,7 +25,8 @@ public function testAllPhrasesValid(): void
"Week Streak",
"Longest Week Streak",
"Present",
- "Excluding",
+ "Excluding {days}",
+ "comma_separator",
];
foreach ($locales as $locale) {
// if it is a string, assert that the alias exists in the translations file
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy