From e1e504f5338d40f24cdc0f3a26eb1386c9c5a36c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ula=C5=9F=20Bayraktar?= Date: Sun, 7 Sep 2025 13:37:41 +0300 Subject: [PATCH 1/3] Add i18n support and Turkish translations Introduces internationalization (i18n) for the frontend, adds English and Turkish translation files for UI components, navbar, and footer. Refactors components to use Docusaurus Translate for all user-facing strings, updates server and partner pages for translation, and removes unused locales from config. --- frontend/i18n/tr/code.json | 209 ++++++++++++++++++ .../tr/docusaurus-theme-classic/footer.json | 43 ++++ .../tr/docusaurus-theme-classic/navbar.json | 22 ++ .../src/components/HomepageFeatures/index.tsx | 86 ++++--- frontend/src/components/LoadingBanner.tsx | 10 +- frontend/src/components/ServerRow.tsx | 20 +- frontend/src/pages/index.tsx | 56 +++-- frontend/src/pages/partners.tsx | 55 ++++- frontend/src/pages/servers/index.tsx | 94 ++++++-- frontend/src/theme/navbar/index.tsx | 0 10 files changed, 515 insertions(+), 80 deletions(-) create mode 100644 frontend/i18n/tr/code.json create mode 100644 frontend/i18n/tr/docusaurus-theme-classic/footer.json create mode 100644 frontend/i18n/tr/docusaurus-theme-classic/navbar.json create mode 100644 frontend/src/theme/navbar/index.tsx diff --git a/frontend/i18n/tr/code.json b/frontend/i18n/tr/code.json new file mode 100644 index 00000000000..253239b2deb --- /dev/null +++ b/frontend/i18n/tr/code.json @@ -0,0 +1,209 @@ +{ + "homepage.heroDescription": { + "message": "Grand Theft Auto: San Andreas için, {samp} ile {compatibility}, yepyeni bir çok oyunculu mod.", + "description": "Hero section description for open.mp homepage" + }, + "homepage.heroDescription.compatibility": { + "message": "tamamen geriye dönük uyumlu", + "description": "Fully backwards compatible bold text" + }, + "homepage.downloadLauncher": { + "message": "Başlatıcıyı İndir 🎮", + "description": "Launcher indirme butonu" + }, + "homepage.downloadServer": { + "message": "Sunucu Dosyalarını İndir 🖥️", + "description": "Server indirme butonu" + }, + "homepage.documentation": { + "message": "Dokümantasyon 📜", + "description": "Dokümantasyon butonu" + }, + "announcement.title": { + "message": "open.mp sunucu dosyalarının ve başlatıcısının yeni sürümü çıktı!", + "description": "Announcement: new version title" + }, + "announcement.serverVersion": { + "message": "{version} sürümüne sahip open.mp birçok hata düzeltmesi, performans artışı ve yeni özelliklerle çıktı!", + "description": "Announcement: server version and features" + }, + "announcement.changelog": { + "message": "Değişiklikler", + "description": "Announcement: changelog link" + }, + "announcement.download": { + "message": "İndir", + "description": "Announcement: download link" + }, + "announcement.launcherUpdate": { + "message": "Başlatıcı güncellendi!", + "description": "Announcement: launcher update" + }, + "announcement.seeWhatsNew": { + "message": "Yenilikleri Gör", + "description": "Announcement: see what's new link" + }, + "announcement.dismiss": { + "message": "Bu mesajı kapat", + "description": "Announcement: dismiss button" + }, + "feature.fullyBackwardsCompatible.title": { + "message": "Mevcut scriptler ve istemcilerle tamamen geriye dönük uyumlu", + "description": "Feature title: Fully backwards compatible" + }, + "feature.fullyBackwardsCompatible.description": { + "message": "Elinde eski bir AMX mi var? Hiçbir ayar gerektirmeden open.mp sunucusunda çalıştır ve SA:MP istemcisiyle arkadaşlarına katıl. Kodunuzu geliştirmek istediğinde dokümantasyonumuza göz at.", + "description": "Feature description: Fully backwards compatible" + }, + "feature.fullyBackwardsCompatible.linkText": { + "message": "Başlangıç Rehberi", + "description": "Link text: Getting Started" + }, + "feature.scriptingSystem.title": { + "message": "Yeni ve geliştirilmiş script sistemi", + "description": "Feature title: New and improved scripting system" + }, + "feature.scriptingSystem.description": { + "message": "Pawn ile devam ettik, ancak kodunuzu daha sağlam hale getiren yeni bir derleyici ve sunucu ile istemciyi yönetmek için daha fazla fonksiyon ekledik.", + "description": "Feature description: New and improved scripting system" + }, + "feature.scriptingSystem.linkText": { + "message": "Yenilikleri öğrenin", + "description": "Link text: Learn about the improvements" + }, + "feature.communityDevelopment.title": { + "message": "Topluluk odaklı geliştirme", + "description": "Feature title: Community driven development" + }, + "feature.communityDevelopment.description": { + "message": "Sunucu tamamen açık kaynak ve büyük küçük tüm katkılara açığız. Bir sonraki sürümü yazmaya yardım edebilir veya bulduğunuz sorunları bildirebilirsiniz. Mükemmel kod için uğraşsak da hatalar olabilir, geri bildiriminiz değerli.", + "description": "Feature description: Community driven development" + }, + "feature.communityDevelopment.linkText": { + "message": "GitHub organizasyonunu ziyaret et", + "description": "Link text: Visit the GitHub organization" + }, + "feature.cppApi.title": { + "message": "Genişletilebilir C++ API", + "description": "Feature title: Extensible C++ API" + }, + "feature.cppApi.description": { + "message": "Pawn'da bulunan tüm sunucu özelliklerine ve C++ kütüphaneleri ile framework evrenine erişim sağlayın. Ustalaştıktan sonra GitHub'daki açık katkı sürecimizle sunucuyu geliştirmeye yardımcı olabilirsiniz.", + "description": "Feature description: Extensible C++ API" + }, + "feature.cppApi.linkText": { + "message": "SDK deposunu incele", + "description": "Link text: Check out SDK repository" + }, + "loadingBanner.followingTrain": { + "message": "Lanet tren takip ediliyor...", + "description": "Loading bar text" + }, + "servers.title": { + "message": "Sunucular", + "description": "Servers page title" + }, + "servers.sort.relevance": { + "message": "Alaka Düzeyi", + "description": "Sort by relevance" + }, + "servers.sort.players": { + "message": "Oyuncu Sayısı", + "description": "Sort by players" + }, + "servers.search.placeholder": { + "message": "IP veya İsim ile Ara", + "description": "Search input placeholder" + }, + "servers.stats": { + "message": "{servers} sunucuda toplam {players} oyuncu bulunuyor, sunucu başına ortalama {average} oyuncu düşüyor.", + "description": "Server stats" + }, + "servers.addServer.button": { + "message": "Sunucu Ekle", + "description": "Add server button" + }, + "servers.checkbox.showEmpty": { + "message": "Boş sunucuları göster", + "description": "Show empty servers checkbox label" + }, + "servers.checkbox.showOmpOnly": { + "message": "Sadece open.mp sunucularını göster", + "description": "Show only open.mp servers checkbox label" + }, + "servers.checkbox.showPartnersOnly": { + "message": "Sadece partnerleri göster", + "description": "Show only partners checkbox label" + }, + "servers.modal.addServerTitle": { + "message": "Sunucu Ekle", + "description": "Add server button" + }, + "servers.modal.ipOrDomain": { + "message": "IP veya Alan Adı", + "description": "IP or Domain label" + }, + "servers.addServer.input": { + "message": "IP/Alan Adı", + "description": "IP or Domain placeholder" + }, + "servers.modal.ipFormat": { + "message": "{ipport} formatında olmalı", + "description": "IP format helper text with bold ip:port" + }, + "serverRow.copied": { + "message": "KOPYALANDI", + "description": "Server row copied badge" + }, + "serverRow.copy": { + "message": "KOPYALA", + "description": "Server row copy badge" + }, + "serverRow.players": { + "message": "oyuncu", + "description": "Server row players label" + }, + + "serverRow.partnerTitle": { + "message": "Partner sunucu!", + "description": "Partner Title" + }, + + "serverRow.ompTitle": { + "message": "open.mp sunucusu", + "description": "OMP Server Title" + }, + "servers.addServer.success": { + "message": "{hn} bekleme listemize eklendi. Eğer maksimum 48 saat içinde aktif olmazsa, Discord üzerinden bizimle iletişime geçebilirsiniz!", + "description": "Server added to pending list message" + }, + + "servers.addServer.successTitle": { + "message": "Sunucu gönderildi!", + "description": "Server submitted toast title" + }, + "servers.addServer.failedTitle": { + "message": "Gönderim başarısız!", + "description": "Server submission failed toast title" + }, + + "servers.addServer.errorMessage": { + "message": "Sunucu gönderilirken bir hata oluştu", + "description": "Server submission error message" + }, + "servers.addServer.errorTitle": { + "message": "Hata", + "description": "Server submission error toast title" + }, + + "partners.note": { + "message": "Not: Ortaklık programı başvurusu, söz verildiği üzere geçici olarak kapatılmıştır. Daha önce slot ayırtmış sunucular hâlâ katılabilir, ancak şu anda yeni başvuruları kabul etmiyoruz. Sorularınız olursa Discord sunucumuzda sormaktan çekinmeyin. Fakat eğer sorunuz listeye eklenmenin yeni yolları ile ilgiliyse, şu anda böyle bir planımız bulunmamaktadır.ata", + "description": "Partnership note" + }, + + "partners.server.stats": { + "message": "{servers} sunucuda toplam {players} oyuncu bulunuyor, sunucu başına ortalama {average} oyuncu düşüyor.", + "description": "Server stats" + } + +} \ No newline at end of file diff --git a/frontend/i18n/tr/docusaurus-theme-classic/footer.json b/frontend/i18n/tr/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000000..a7357325071 --- /dev/null +++ b/frontend/i18n/tr/docusaurus-theme-classic/footer.json @@ -0,0 +1,43 @@ +{ + "link.title.Documentations": { + "message": "Dokümanlar", + "description": "Footer item with label Docs" + }, + "link.item.label.Introduction": { + "message": "Giriş", + "description": "Footer item with label Docs" + }, + "link.item.label.open.mp Migration": { + "message": "open.mp Taşınma", + "description": "Footer item with label open mp Migration" + }, + + "link.title.Community": { + "message": "Topluluk", + "description": "Footer item with label Community" + }, + + "link.title.More": { + "message": "Diğer", + "description": "Footer item with label More" + }, + + "link.item.label.Donate": { + "message": "Bağış Yap", + "description": "Footer item with label Donate" + }, + + "link.item.label.Servers": { + "message": "Sunucular", + "description": "Footer item with label Servers" + }, + "link.item.label.UID Generator": { + "message": "UID Oluşturucu", + "description": "Footer item with label UID Generator" + }, + + "copyright": { + "message": "Telif Hakkı © 2025 open.mp. Docusaurus ile oluşturuldu.", + "description": "Footer copyright text" + } +} \ No newline at end of file diff --git a/frontend/i18n/tr/docusaurus-theme-classic/navbar.json b/frontend/i18n/tr/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000000..ee4aedeb1fd --- /dev/null +++ b/frontend/i18n/tr/docusaurus-theme-classic/navbar.json @@ -0,0 +1,22 @@ +{ + "item.label.Docs": { + "message": "Dokümanlar", + "description": "Navbar item with label Docs" + }, + "item.label.Forums": { + "message": "Forum", + "description": "Navbar item with label Forum" + }, + "item.label.Servers": { + "message": "Sunucular", + "description": "Navbar item with label Servers" + }, + "item.label.Partners": { + "message": "Partnerler", + "description": "Navbar item with label Partners" + }, + "item.label.Donate": { + "message": "Bağış Yap", + "description": "Navbar item with label Donate" + } +} \ No newline at end of file diff --git a/frontend/src/components/HomepageFeatures/index.tsx b/frontend/src/components/HomepageFeatures/index.tsx index 11f1d0dca9a..f4e733dc3ad 100644 --- a/frontend/src/components/HomepageFeatures/index.tsx +++ b/frontend/src/components/HomepageFeatures/index.tsx @@ -5,66 +5,100 @@ import Image from "@theme/ThemedImage"; import styles from "./styles.module.css"; import Link from "@docusaurus/Link"; +import Translate from '@docusaurus/Translate'; + type FeatureItem = { - title: string; + title: ReactNode; Img: string; description: ReactNode; link: string; - linkText: string; + linkText: ReactNode; }; const FeatureList: FeatureItem[] = [ { - title: "Fully backwards compatible with existing scripts and clients", + title: ( + + Fully backwards compatible with existing scripts and clients + + ), Img: "images/assets/f1.png", description: ( - <> - Got an old AMX lying about? Load it up on the open.mp server straight - out of the box and join your friends playing on the SA:MP client. Then + + Got an old AMX lying about? Load it up on the open.mp server straight + out of the box and join your friends playing on the SA:MP client. Then when you want to enhance your code look in our docs. - + ), link: "/docs", - linkText: "Getting Started", + linkText: ( + + Getting Started + + ), }, { - title: "New and improved scripting system", + title: ( + + New and improved scripting system + + ), Img: "images/assets/f5.png", description: ( - <> - We've stuck with pawn, but with a new compiler engineered to make your - code more robust, and more functions to manipulate the server and + + We've stuck with pawn, but with a new compiler engineered to make your + code more robust, and more functions to manipulate the server and client. - + ), link: "https://github.com/openmultiplayer/omp-stdlib/#openmp-includes", - linkText: "Learn about the improvements", + linkText: ( + + Learn about the improvements + + ), }, { - title: "Community driven development", + title: ( + + Community driven development + + ), Img: "images/assets/github.png", description: ( - <> - The server is fully open source, and we welcome all contributions big or - small. Help write the next version, or just post about any problems you + + The server is fully open source, and we welcome all contributions big + or small. Help write the next version, or just post about any problems you find, despite our attempts to have perfect code, bugs happen and your feedback is valuable. - + ), link: "https://github.com/openmultiplayer", - linkText: "Visit the GitHub organization", + linkText: ( + + Visit the GitHub organization + + ), }, { - title: "Extensible C++ API", + title: ( + + Extensible C++ API + + ), Img: "images/assets/f4.png", description: ( - <> - Get access to all the server features available in pawn, plus the - universe of C++ libraries and frameworks. Once you've mastered this why + + Get access to all the server features available in pawn, plus the + universe of C++ libraries and frameworks. Once you've mastered this why not help improve the server via our open contribution process on GitHub. - + ), link: "https://github.com/openmultiplayer/open.mp-sdk", - linkText: "Check out SDK repository", + linkText: ( + + Check out SDK repository + + ), }, ]; diff --git a/frontend/src/components/LoadingBanner.tsx b/frontend/src/components/LoadingBanner.tsx index 4503fefaf93..00b5f9e0e03 100644 --- a/frontend/src/components/LoadingBanner.tsx +++ b/frontend/src/components/LoadingBanner.tsx @@ -1,10 +1,18 @@ import React from "react"; +import Translate from "@docusaurus/Translate"; const LoadingBanner = () => { return (
-

Following the damn train...

+

+ + Following the damn train... + +

); }; diff --git a/frontend/src/components/ServerRow.tsx b/frontend/src/components/ServerRow.tsx index 02fd1a97ea7..176d781e1a4 100644 --- a/frontend/src/components/ServerRow.tsx +++ b/frontend/src/components/ServerRow.tsx @@ -1,4 +1,12 @@ import { useState } from "react"; +import Translate from "@docusaurus/Translate"; +import { renderToStaticMarkup } from "react-dom/server"; + + const translate = (id: string, message: string, description?: string) => { + return renderToStaticMarkup( + {message} + ); + }; const CopyBadge = ({ text }) => { const [hasCopied, setHasCopied] = useState(false); @@ -16,7 +24,11 @@ const CopyBadge = ({ text }) => { className={`copy-badge-button ${hasCopied ? "copied" : ""}`} onClick={onCopy} > - {hasCopied ? "COPIED" : "COPY"} + {hasCopied ? ( + COPIED + ) : ( + COPY + )} ); @@ -34,7 +46,7 @@ const ServerRow = ({ server }) => { partner server )} @@ -42,7 +54,7 @@ const ServerRow = ({ server }) => { open.mp server )} @@ -56,7 +68,7 @@ const ServerRow = ({ server }) => {
{server.pc}/{server.pm}
- players + players diff --git a/frontend/src/pages/index.tsx b/frontend/src/pages/index.tsx index a1e24b7aef0..aa94b7e7c0b 100644 --- a/frontend/src/pages/index.tsx +++ b/frontend/src/pages/index.tsx @@ -9,6 +9,8 @@ import { useState } from "react"; import Admonition from "../components/Admonition"; import styles from "./index.module.css"; +import Translate from '@docusaurus/Translate'; + const socials = [ { alt: "Discord icon", @@ -91,30 +93,39 @@ const HomepageHeader = () => { + A new version of open.mp server and launcher is out now! + + } > - Version 1.4.0.2779 of open.mp server is out with many fixes, - performance boosts, and new features!{" "} + 1.4.0.2779 }} + > + {'Version {version} of open.mp server is out with many fixes, performance boosts, and new features!'} + {" "} - Changelog + Changelog |{" "} - Download + Download .
- The launcher also got an update!{" "} + The launcher also got an update!{" "} - See what's new + See what's new .
@@ -123,7 +134,7 @@ const HomepageHeader = () => { className={styles.dismissButton} aria-label="Dismiss announcement" > - Dismiss this message + Dismiss this message
@@ -136,9 +147,22 @@ const HomepageHeader = () => { Open Multiplayer

- A brand new multiplayer mod for Grand Theft Auto: San Andreas that - is fully backwards compatible with{" "} - San Andreas Multiplayer. + + + {"fully backwards compatible"} + + + ), + samp: San Andreas Multiplayer + }} + > + {'A brand new multiplayer mod for Grand Theft Auto: San Andreas that is {compatibility} with {samp}.'} +

@@ -148,22 +172,22 @@ const HomepageHeader = () => { title="Download open.mp launcher" to="https://github.com/openmultiplayer/launcher/releases/latest" > - Download Launcher 🎮 + Download Launcher 🎮 - + - Download Server 🖥️ + Download Server 🖥️ - + - Documentation 📜 + Documentation 📜 diff --git a/frontend/src/pages/partners.tsx b/frontend/src/pages/partners.tsx index 89c15deacbd..cfc8b5a2ba8 100644 --- a/frontend/src/pages/partners.tsx +++ b/frontend/src/pages/partners.tsx @@ -1,5 +1,6 @@ import Layout from "@theme/Layout"; import { ReactNode, useEffect, useMemo, useState } from "react"; +import Translate from '@docusaurus/Translate'; import { FixedSizeList } from "react-window"; import LoadingBanner from "../components/LoadingBanner"; import ServerRow from "../components/ServerRow"; @@ -9,6 +10,14 @@ import { CoreServerData } from "../types"; const API_SERVERS = `${API_ADDRESS}/servers/`; +import { renderToStaticMarkup } from "react-dom/server"; + +const translate = (id: string, message: string, description?: string) => { + return renderToStaticMarkup( + {message} + ); +}; + const getServers = async () => { try { const r: Response = await fetch(API_SERVERS); @@ -63,9 +72,17 @@ const StatsComponent = ({ stats: { players, servers } }: { stats: Stats }) => { return (

- {players} players on {servers} servers - with an average of {(players / servers).toFixed(1)}{" "} - players per server. + {players}, + servers: {servers}, + average: {(players / servers).toFixed(1)} + }} + > + {'{players} players on {servers} servers with an average of {average} players per server.'} +

); @@ -105,13 +122,25 @@ const List = ({ data }: { data: CoreServerData[] }) => { onChange={(e) => setSort(e.target.value as SortBy)} className="servers-select" > - - + + {

- Note: The partnership program application is temporarily closed as - promised. Servers that have already reserved a slot can still - join, but we are not accepting new requests at this time. If you - have any questions, feel free to ask on our Discord. However, if - your question is about new ways to get on the list, we currently - have no plans for that. + + Note: The partnership program application is temporarily closed as + promised. Servers that have already reserved a slot can still + join, but we are not accepting new requests at this time. If you + have any questions, feel free to ask on our Discord. However, if + your question is about new ways to get on the list, we currently + have no plans for that. +

{loading ? : } diff --git a/frontend/src/pages/servers/index.tsx b/frontend/src/pages/servers/index.tsx index 45946ef301c..c52c69f134d 100644 --- a/frontend/src/pages/servers/index.tsx +++ b/frontend/src/pages/servers/index.tsx @@ -15,8 +15,17 @@ import { API_ADDRESS } from "../../constants"; import { CoreServerData, ServerAllData } from "../../types"; import ServerInfoPage from "../../components/ServerInfoPage"; +import Translate from "@docusaurus/Translate"; +import { renderToStaticMarkup } from "react-dom/server"; + const API_SERVERS = `${API_ADDRESS}/servers/`; +const translate = (id: string, message: string, description?: string) => { + return renderToStaticMarkup( + {message} + ); +}; + const getServers = async () => { try { const r: Response = await fetch(API_SERVERS); @@ -86,9 +95,17 @@ const StatsComponent = ({ stats: { players, servers } }: { stats: Stats }) => { return (

- {players} players on {servers} servers - with an average of {(players / servers).toFixed(1)}{" "} - players per server. + {players}, + servers: {servers}, + average: {(players / servers).toFixed(1)} + }} + > + {'{players} players on {servers} servers with an average of {average} players per server.'} +

); @@ -118,22 +135,30 @@ const AddServer = ({ onAdd }: { onAdd: (server: ServerAllData) => void }) => { const server = (await response.json()) as ServerAllData; onAdd(server); showToast({ - message: `${server.core.hn} is added to our pending list. If it's not available after maximum 48 hours, you can contact us on Discord!`, - title: "Server Submitted!", + message: renderToStaticMarkup( + + {'{hn} is added to our pending list. If it\'s not available after maximum 48 hours, you can contact us on Discord!'} + + ), + title: translate("servers.addServer.successTitle", "Server Submitted!", "Server submitted toast title"), type: "success", }); } else { const error = (await response.json()) as { error: string }; showToast({ message: `Status ${response.statusText}: ${error?.error}`, - title: "Submission failed!", + title: translate("servers.addServer.failedTitle", "Submission failed!", "Server submission failed toast title"), type: "error", }); } } catch (error) { showToast({ - message: "An error occurred while submitting the server", - title: "Error", + message: translate("servers.addServer.errorMessage", "An error occurred while submitting the server", "Server submission error message"), + title: translate("servers.addServer.errorTitle", "Error", "Server submission error toast title"), type: "error", }); } finally { @@ -141,6 +166,7 @@ const AddServer = ({ onAdd }: { onAdd: (server: ServerAllData) => void }) => { } }; + return (
void }) => { setValue(e.target.value)} className="servers-input" />
@@ -227,13 +257,25 @@ const List = ({ data }: { data: CoreServerData[] }) => { onChange={(e) => setSort(e.target.value as SortBy)} className="servers-select" > - - + + { onClick={() => setIsModalOpen(true)} className="button button--primary button--md2" > - Add server + Add server @@ -258,7 +300,7 @@ const List = ({ data }: { data: CoreServerData[] }) => { onChange={(e) => setShowEmpty(e.target.checked)} className="servers-checkbox" /> - Show empty servers + Show empty servers @@ -297,7 +339,9 @@ const List = ({ data }: { data: CoreServerData[] }) => { setIsModalOpen(false)}>
-

Add a server

+

+ Add a server +

- + { setIsModalOpen(false); }} />

- IP must be in format ip:port + ip:port }} + > + {'IP must be in format {ipport}'} +

@@ -323,7 +375,7 @@ const List = ({ data }: { data: CoreServerData[] }) => { onClick={() => setIsModalOpen(false)} className="button button--primary button--md2" > - Close + Close
diff --git a/frontend/src/theme/navbar/index.tsx b/frontend/src/theme/navbar/index.tsx new file mode 100644 index 00000000000..e69de29bb2d From 525c83eef3cdaa2e4762d5bd26de0a9776c3c38f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ula=C5=9F=20Bayraktar?= Date: Sun, 7 Sep 2025 13:40:29 +0300 Subject: [PATCH 2/3] Update code.json --- frontend/i18n/tr/code.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/i18n/tr/code.json b/frontend/i18n/tr/code.json index 253239b2deb..b5e7677ddde 100644 --- a/frontend/i18n/tr/code.json +++ b/frontend/i18n/tr/code.json @@ -197,7 +197,7 @@ }, "partners.note": { - "message": "Not: Ortaklık programı başvurusu, söz verildiği üzere geçici olarak kapatılmıştır. Daha önce slot ayırtmış sunucular hâlâ katılabilir, ancak şu anda yeni başvuruları kabul etmiyoruz. Sorularınız olursa Discord sunucumuzda sormaktan çekinmeyin. Fakat eğer sorunuz listeye eklenmenin yeni yolları ile ilgiliyse, şu anda böyle bir planımız bulunmamaktadır.ata", + "message": "Not: Ortaklık programı başvurusu, söz verildiği üzere geçici olarak kapatılmıştır. Daha önce slot ayırtmış sunucular hâlâ katılabilir, ancak şu anda yeni başvuruları kabul etmiyoruz. Sorularınız olursa Discord sunucumuzda sormaktan çekinmeyin. Fakat eğer sorunuz listeye eklenmenin yeni yolları ile ilgiliyse, şu anda böyle bir planımız bulunmamaktadır.", "description": "Partnership note" }, From b5887c976c679e02c1bf214005ac16bd45ea1dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ula=C5=9F=20Bayraktar?= Date: Sun, 7 Sep 2025 13:41:15 +0300 Subject: [PATCH 3/3] Update code.json --- frontend/i18n/tr/code.json | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/i18n/tr/code.json b/frontend/i18n/tr/code.json index b5e7677ddde..b5536cfbf6b 100644 --- a/frontend/i18n/tr/code.json +++ b/frontend/i18n/tr/code.json @@ -205,5 +205,4 @@ "message": "{servers} sunucuda toplam {players} oyuncu bulunuyor, sunucu başına ortalama {average} oyuncu düşüyor.", "description": "Server stats" } - } \ No newline at end of file