diff --git a/frontend/i18n/pt-BR/code.json b/frontend/i18n/pt-BR/code.json new file mode 100644 index 00000000000..b0ae37bc48a --- /dev/null +++ b/frontend/i18n/pt-BR/code.json @@ -0,0 +1,337 @@ +{ + "feature.fullyBackwardsCompatible.title": { + "message": "Totalmente retrocompatível com scripts e clientes existentes" + }, + "feature.fullyBackwardsCompatible.description": { + "message": "Tem um AMX antigo por aí? Carregue-o no servidor open.mp diretamente e junte-se aos seus amigos jogando no cliente SA:MP. Então, quando quiser melhorar seu código, consulte nossa documentação." + }, + "feature.fullyBackwardsCompatible.linkText": { + "message": "Primeiros Passos" + }, + "feature.newScriptingSystem.title": { + "message": "Novo e melhorado sistema de scripting" + }, + "feature.newScriptingSystem.description": { + "message": "open.mp suporta todos os scripts e plugins SA-MP existentes. Mas também fornece uma nova API moderna e atualizada para escrever modos melhores. Estruturas de dados, rotinas de E/S assíncronas e muito mais!" + }, + "feature.newScriptingSystem.linkText": { + "message": "Saiba Mais" + }, + "feature.developerFriendly.title": { + "message": "Amigável ao desenvolvedor" + }, + "feature.developerFriendly.description": { + "message": "Estamos escrevendo open.mp com a experiência do desenvolvedor em mente. Isso significa uma API consistente, documentação atualizada, uma comunidade útil e código-fonte totalmente aberto! Contribuições são sempre bem-vindas." + }, + "feature.developerFriendly.linkText": { + "message": "Contribuir" + }, + "feature.scriptingSystem.title": { + "message": "Novo e melhorado sistema de scripting" + }, + "feature.scriptingSystem.description": { + "message": "Continuamos com pawn, mas com um novo compilador projetado para tornar seu código mais robusto, e mais funções para manipular o servidor e o cliente." + }, + "feature.scriptingSystem.linkText": { + "message": "Saiba sobre as melhorias" + }, + "feature.communityDevelopment.title": { + "message": "Desenvolvimento impulsionado pela comunidade" + }, + "feature.communityDevelopment.description": { + "message": "O servidor é totalmente open source, e recebemos todas as contribuições, grandes ou pequenas. Ajude a escrever a próxima versão, ou apenas poste sobre qualquer problema que encontrar, apesar de nossas tentativas de ter um código perfeito, bugs acontecem e seu feedback é valioso." + }, + "feature.communityDevelopment.linkText": { + "message": "Visite a organização GitHub" + }, + "feature.cppApi.title": { + "message": "API C++ extensível" + }, + "feature.cppApi.description": { + "message": "Tenha acesso a todos os recursos do servidor disponíveis em pawn, além do universo de bibliotecas e frameworks C++. Depois de dominar isso, por que não ajudar a melhorar o servidor através de nosso processo de contribuição aberto no GitHub." + }, + "feature.cppApi.linkText": { + "message": "Confira o repositório do SDK" + }, + "partners.server.stats": { + "message": "{players} jogadores em {servers} servidores com uma média de {average} jogadores por servidor." + }, + "servers.sort.relevance": { + "message": "Relevância" + }, + "servers.sort.players": { + "message": "Jogadores" + }, + "servers.search.placeholder": { + "message": "Buscar por IP ou Nome" + }, + "partners.note": { + "message": "Nota: O programa de parceria está temporariamente fechado conforme prometido. Servidores que já reservaram um slot ainda podem entrar, mas não estamos aceitando novos pedidos no momento. Se você tiver alguma dúvida, sinta-se à vontade para perguntar em nosso Discord. No entanto, se sua pergunta for sobre novas formas de entrar na lista, atualmente não temos planos para isso." + }, + "announcement.title": { + "message": "Uma nova versão do servidor e launcher open.mp está disponível agora!" + }, + "announcement.link": { + "message": "Leia mais sobre isso aqui" + }, + "theme.ErrorPageContent.title": { + "message": "Esta página travou.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.NotFound.title": { + "message": "Página Não Encontrada", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "Não foi possível encontrar o que você estava procurando.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Entre em contato com o proprietário do site que lhe trouxe ao URL original e informe que o link está quebrado.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.admonition.note": { + "message": "nota", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "dica", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "perigo", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "informação", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "cuidado", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Voltar ao topo", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Arquivo", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Arquivo", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Navegação da página de listagem do blog", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Entradas Mais Recentes", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Entradas Mais Antigas", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.readingTime.plurals": { + "message": "{readingTime} min de leitura", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + }, + "announcement.serverVersion": { + "message": "A versão {version} do servidor open.mp está disponível com muitas correções, melhorias de desempenho e novos recursos!" + }, + "announcement.changelog": { + "message": "Registro de Alterações" + }, + "announcement.download": { + "message": "Baixar" + }, + "announcement.launcherUpdate": { + "message": "O launcher também recebeu uma atualização!" + }, + "announcement.seeWhatsNew": { + "message": "Veja as novidades" + }, + "announcement.dismiss": { + "message": "Dispensar esta mensagem" + }, + "homepage.heroDescription": { + "message": "Um novo mod multiplayer para Grand Theft Auto: San Andreas que é {compatibility} com {samp}." + }, + "homepage.heroDescription.compatibility": { + "message": "totalmente retrocompatível" + }, + "homepage.downloadLauncher": { + "message": "Baixar Launcher 🎮" + }, + "homepage.downloadServer": { + "message": "Baixar Servidor 🖥️" + }, + "homepage.documentation": { + "message": "Documentação 📜" + }, + "animations.title": { + "message": "Visualizador de Animações open.mp" + }, + "animations.library": { + "message": "Biblioteca:" + }, + "animations.selectLibrary": { + "message": "Selecione uma biblioteca..." + }, + "animations.animation": { + "message": "Animação:" + }, + "animations.selectAnimation": { + "message": "Selecione uma animação..." + }, + "animations.index": { + "message": "Índice:" + }, + "animations.frames": { + "message": "Quadros:" + }, + "animations.duration": { + "message": "Duração:" + }, + "animations.seconds": { + "message": "segundos" + }, + "animations.description": { + "message": "Descrição:" + }, + "animations.notes": { + "message": "Notas:" + }, + "animations.videoCredits": { + "message": "Créditos do vídeo:" + }, + "animations.usageExamples": { + "message": "Exemplos de Uso:" + }, + "animations.selectAnimationPrompt": { + "message": "Selecione uma animação no menu suspenso acima para ver a pré-visualização." + }, + "animations.browsePrompt": { + "message": "Navegue e visualize todas as animações disponíveis." + }, + "animations.usedByFunctions": { + "message": "Estas são usadas pelas funções ApplyAnimation/ApplyActorAnimation." + }, + "loadingBanner.followingTrain": { + "message": "Seguindo o maldito trem..." + }, + "serverRow.copied": { + "message": "COPIADO" + }, + "serverRow.copy": { + "message": "COPIAR" + }, + "serverRow.partnerTitle": { + "message": "Tem parceria!" + }, + "serverRow.ompTitle": { + "message": "servidor open.mp" + }, + "serverRow.players": { + "message": "jogadores" + }, + "serverInfo.backToServers": { + "message": "← Voltar aos Servidores" + }, + "serverInfo.quickJoin": { + "message": "Entrar Rapidamente" + }, + "serverInfo.noDescription": { + "message": "Este servidor não tem descrição" + }, + "serverInfo.playersOnline": { + "message": "Jogadores Online" + }, + "serverInfo.modVersion": { + "message": "Versão do Mod" + }, + "serverInfo.language": { + "message": "Idioma" + }, + "serverInfo.rule": { + "message": "Regra" + }, + "serverInfo.value": { + "message": "Valor" + }, + "serverInfo.lastUpdated": { + "message": "Atualizado há {time}" + }, + "theme.footer.title.Documentations": { + "message": "Documentação" + }, + "theme.footer.title.Community": { + "message": "Comunidade" + }, + "theme.footer.title.More": { + "message": "Mais" + }, + "theme.footer.link.Introduction": { + "message": "Introdução" + }, + "theme.footer.link.open.mp Migration": { + "message": "Migração para open.mp" + }, + "theme.footer.link.Discord": { + "message": "Discord" + }, + "theme.footer.link.GitHub": { + "message": "GitHub" + }, + "theme.footer.link.Donate": { + "message": "Doar" + }, + "theme.footer.link.YouTube": { + "message": "YouTube" + }, + "theme.footer.link.X": { + "message": "X" + }, + "theme.footer.link.Servers": { + "message": "Servidores" + }, + "theme.footer.link.Blog": { + "message": "Blog" + }, + "theme.footer.link.Animations": { + "message": "Animações" + }, + "theme.footer.link.UID Generator": { + "message": "Gerador de UID" + }, + "theme.footer.link.SA-MP": { + "message": "SA-MP" + }, + "theme.footer.copyright": { + "message": "Copyright © {year} open.mp. Feito com Docusaurus." + }, + "navbar.item.Docs": { + "message": "Documentação" + }, + "navbar.item.Blog": { + "message": "Blog" + }, + "navbar.item.Forums": { + "message": "Fóruns" + }, + "navbar.item.Servers": { + "message": "Servidores" + }, + "navbar.item.Partners": { + "message": "Parceiros" + }, + "navbar.item.Donate": { + "message": "Doar" + } +} diff --git a/frontend/i18n/pt-BR/docusaurus-theme-classic/footer.json b/frontend/i18n/pt-BR/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000000..eb434273ea1 --- /dev/null +++ b/frontend/i18n/pt-BR/docusaurus-theme-classic/footer.json @@ -0,0 +1,70 @@ +{ + "link.title.Documentations": { + "message": "Documentação", + "description": "The title of the footer links column with title=Documentations in the footer" + }, + "link.title.Community": { + "message": "Comunidade", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "Mais", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Introduction": { + "message": "Introdução", + "description": "The label of footer link with label=Introduction linking to docs" + }, + "link.item.label.open.mp Migration": { + "message": "Migração para open.mp", + "description": "The label of footer link with label=open.mp Migration linking to docs" + }, + "link.item.label.config.json": { + "message": "config.json", + "description": "The label of footer link with label=config.json linking to docs/server/config.json" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://discord.gg/samp" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/openmultiplayer/open.mp" + }, + "link.item.label.Donate": { + "message": "Doar", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/openmultiplayer" + }, + "link.item.label.YouTube": { + "message": "YouTube", + "description": "The label of footer link with label=YouTube linking to https://youtube.com/openmultiplayer" + }, + "link.item.label.X": { + "message": "X", + "description": "The label of footer link with label=X linking to https://x.com/openmultiplayer" + }, + "link.item.label.Servers": { + "message": "Servidores", + "description": "The label of footer link with label=Servers linking to /servers" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to /blog" + }, + "link.item.label.Animations": { + "message": "Animações", + "description": "The label of footer link with label=Animations linking to /animations" + }, + "link.item.label.UID Generator": { + "message": "Gerador de UID", + "description": "The label of footer link with label=UID Generator linking to /uid" + }, + "link.item.label.SA-MP": { + "message": "SA-MP", + "description": "The label of footer link with label=SA-MP linking to https://sa-mp.mp/" + }, + "copyright": { + "message": "Copyright © 2025 open.mp. Feito com Docusaurus.", + "description": "The footer copyright" + } +} diff --git a/frontend/i18n/pt-BR/docusaurus-theme-classic/navbar.json b/frontend/i18n/pt-BR/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000000..7d723a5d606 --- /dev/null +++ b/frontend/i18n/pt-BR/docusaurus-theme-classic/navbar.json @@ -0,0 +1,30 @@ +{ + "title": { + "message": "Open Multiplayer", + "description": "The title in the navbar" + }, + "item.label.Docs": { + "message": "Documentação", + "description": "Navbar item with label Docs" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Forums": { + "message": "Fóruns", + "description": "Navbar item with label Forums" + }, + "item.label.Servers": { + "message": "Servidores", + "description": "Navbar item with label Servers" + }, + "item.label.Partners": { + "message": "Parceiros", + "description": "Navbar item with label Partners" + }, + "item.label.Donate": { + "message": "Doar", + "description": "Navbar item with label Donate" + } +} diff --git a/frontend/i18n/tr/code.json b/frontend/i18n/tr/code.json new file mode 100644 index 00000000000..87724c3b66a --- /dev/null +++ b/frontend/i18n/tr/code.json @@ -0,0 +1,337 @@ +{ + "feature.fullyBackwardsCompatible.title": { + "message": "Mevcut scriptler ve istemcilerle tamamen geriye dönük uyumlu" + }, + "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. Kodunu geliştirmek istediğinde dokümantasyonumuza göz at." + }, + "feature.fullyBackwardsCompatible.linkText": { + "message": "Başlangıç Rehberi" + }, + "feature.newScriptingSystem.title": { + "message": "Yeni ve geliştirilmiş script sistemi" + }, + "feature.newScriptingSystem.description": { + "message": "open.mp mevcut tüm SA-MP scriptleri ve eklentilerini destekler. Ayrıca daha iyi modlar yazmak için modern ve güncel bir API sunar. Veri yapıları, asenkron I/O rutinleri ve daha fazlası!" + }, + "feature.newScriptingSystem.linkText": { + "message": "Daha Fazla Bilgi Edin" + }, + "feature.developerFriendly.title": { + "message": "Geliştirici dostu" + }, + "feature.developerFriendly.description": { + "message": "open.mp'yi geliştirici deneyimini düşünerek yazıyoruz. Bu, tutarlı bir API, güncel dokümantasyon, yardımcı bir topluluk ve tamamen açık kaynak kod demek! Katkılar her zaman memnuniyetle karşılanır." + }, + "feature.developerFriendly.linkText": { + "message": "Katkıda Bulun" + }, + "feature.scriptingSystem.title": { + "message": "Yeni ve geliştirilmiş script sistemi" + }, + "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." + }, + "feature.scriptingSystem.linkText": { + "message": "Yenilikleri öğrenin" + }, + "feature.communityDevelopment.title": { + "message": "Topluluk odaklı geliştirme" + }, + "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." + }, + "feature.communityDevelopment.linkText": { + "message": "GitHub organizasyonunu ziyaret et" + }, + "feature.cppApi.title": { + "message": "Genişletilebilir 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." + }, + "feature.cppApi.linkText": { + "message": "SDK deposunu incele" + }, + "partners.server.stats": { + "message": "{players} oyuncu {servers} sunucuda, sunucu başına ortalama {average} oyuncu." + }, + "servers.sort.relevance": { + "message": "Alaka Düzeyi" + }, + "servers.sort.players": { + "message": "Oyuncu Sayısı" + }, + "servers.search.placeholder": { + "message": "IP veya İsim ile Ara" + }, + "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." + }, + "announcement.title": { + "message": "open.mp sunucu dosyalarının ve başlatıcısının yeni sürümü çıktı!" + }, + "announcement.link": { + "message": "Daha fazlasını burada oku" + }, + "theme.ErrorPageContent.title": { + "message": "Bu sayfa çöktü.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.NotFound.title": { + "message": "Sayfa Bulunamadı", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "Aradığınız şeyi bulamadık.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Sizi bu URL'ye yönlendiren site sahibiyle iletişime geçip bağlantının bozuk olduğunu bildirin.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.admonition.note": { + "message": "not", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "ipucu", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "tehlike", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "bilgi", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "dikkat", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Başa dön", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Arşiv", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Arşiv", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog listeleme sayfası gezinme", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Daha Yeni Yazılar", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Daha Eski Yazılar", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.readingTime.plurals": { + "message": "{readingTime} dk okuma", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.tags.tagsPageTitle": { + "message": "Etiketler", + "description": "The title of the tag list page" + }, + "announcement.serverVersion": { + "message": "{version} sürümüne sahip open.mp birçok hata düzeltmesi, performans artışı ve yeni özelliklerle çıktı!" + }, + "announcement.changelog": { + "message": "Değişiklik Kaydı" + }, + "announcement.download": { + "message": "İndir" + }, + "announcement.launcherUpdate": { + "message": "Başlatıcı güncellendi!" + }, + "announcement.seeWhatsNew": { + "message": "Yenilikleri Gör" + }, + "announcement.dismiss": { + "message": "Bu mesajı kapat" + }, + "homepage.heroDescription": { + "message": "Grand Theft Auto: San Andreas için, {samp} ile {compatibility}, yepyeni bir çok oyunculu mod." + }, + "homepage.heroDescription.compatibility": { + "message": "tamamen geriye dönük uyumlu" + }, + "homepage.downloadLauncher": { + "message": "Başlatıcıyı İndir 🎮" + }, + "homepage.downloadServer": { + "message": "Sunucu Dosyalarını İndir 🖥️" + }, + "homepage.documentation": { + "message": "Dokümantasyon 📜" + }, + "animations.title": { + "message": "open.mp Animasyon Görüntüleyici" + }, + "animations.library": { + "message": "Kütüphane:" + }, + "animations.selectLibrary": { + "message": "Bir kütüphane seçin..." + }, + "animations.animation": { + "message": "Animasyon:" + }, + "animations.selectAnimation": { + "message": "Bir animasyon seçin..." + }, + "animations.index": { + "message": "Dizin:" + }, + "animations.frames": { + "message": "Kareler:" + }, + "animations.duration": { + "message": "Süre:" + }, + "animations.seconds": { + "message": "saniye" + }, + "animations.description": { + "message": "Açıklama:" + }, + "animations.notes": { + "message": "Notlar:" + }, + "animations.videoCredits": { + "message": "Video kredileri:" + }, + "animations.usageExamples": { + "message": "Kullanım örnekleri:" + }, + "animations.selectAnimationPrompt": { + "message": "Önizleme için yukarıdaki açılır menüden bir animasyon seçin." + }, + "animations.browsePrompt": { + "message": "Tüm mevcut animasyonlara göz atın ve önizleyin." + }, + "animations.usedByFunctions": { + "message": "Bunlar ApplyAnimation/ApplyActorAnimation fonksiyonları tarafından kullanılır." + }, + "loadingBanner.followingTrain": { + "message": "Lanet tren takip ediliyor..." + }, + "serverRow.copied": { + "message": "KOPYALANDI" + }, + "serverRow.copy": { + "message": "KOPYALA" + }, + "serverRow.partnerTitle": { + "message": "Partner sunucu!" + }, + "serverRow.ompTitle": { + "message": "open.mp sunucusu" + }, + "serverRow.players": { + "message": "oyuncu" + }, + "serverInfo.backToServers": { + "message": "← Sunuculara Geri Dön" + }, + "serverInfo.quickJoin": { + "message": "Hızlı Katıl" + }, + "serverInfo.noDescription": { + "message": "Bu sunucunun açıklaması yok" + }, + "serverInfo.playersOnline": { + "message": "Çevrimiçi oyuncular" + }, + "serverInfo.modVersion": { + "message": "Mod sürümü" + }, + "serverInfo.language": { + "message": "Dil" + }, + "serverInfo.rule": { + "message": "Kural" + }, + "serverInfo.value": { + "message": "Değer" + }, + "serverInfo.lastUpdated": { + "message": "{time} önce güncellendi" + }, + "theme.footer.title.Documentations": { + "message": "Dokümantasyon" + }, + "theme.footer.title.Community": { + "message": "Topluluk" + }, + "theme.footer.title.More": { + "message": "Daha Fazla" + }, + "theme.footer.link.Introduction": { + "message": "Giriş" + }, + "theme.footer.link.open.mp Migration": { + "message": "open.mp Geçişi" + }, + "theme.footer.link.Discord": { + "message": "Discord" + }, + "theme.footer.link.GitHub": { + "message": "GitHub" + }, + "theme.footer.link.Donate": { + "message": "Bağış Yap" + }, + "theme.footer.link.YouTube": { + "message": "YouTube" + }, + "theme.footer.link.X": { + "message": "X" + }, + "theme.footer.link.Servers": { + "message": "Sunucular" + }, + "theme.footer.link.Blog": { + "message": "Blog" + }, + "theme.footer.link.Animations": { + "message": "Animasyonlar" + }, + "theme.footer.link.UID Generator": { + "message": "UID Oluşturucu" + }, + "theme.footer.link.SA-MP": { + "message": "SA-MP" + }, + "theme.footer.copyright": { + "message": "Telif Hakkı © {year} open.mp. Docusaurus ile yapıldı." + }, + "navbar.item.Docs": { + "message": "Dokümantasyon" + }, + "navbar.item.Blog": { + "message": "Blog" + }, + "navbar.item.Forums": { + "message": "Forumlar" + }, + "navbar.item.Servers": { + "message": "Sunucular" + }, + "navbar.item.Partners": { + "message": "Partnerler" + }, + "navbar.item.Donate": { + "message": "Bağış Yap" + } +} 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..5f673fab913 --- /dev/null +++ b/frontend/i18n/tr/docusaurus-theme-classic/footer.json @@ -0,0 +1,70 @@ +{ + "link.title.Documentations": { + "message": "Dokümantasyon", + "description": "The title of the footer links column with title=Documentations in the footer" + }, + "link.title.Community": { + "message": "Topluluk", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "Daha Fazla", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Introduction": { + "message": "Giriş", + "description": "The label of footer link with label=Introduction linking to docs" + }, + "link.item.label.open.mp Migration": { + "message": "open.mp Geçişi", + "description": "The label of footer link with label=open.mp Migration linking to docs" + }, + "link.item.label.config.json": { + "message": "config.json", + "description": "The label of footer link with label=config.json linking to docs/server/config.json" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://discord.gg/samp" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/openmultiplayer/open.mp" + }, + "link.item.label.Donate": { + "message": "Bağış Yap", + "description": "The label of footer link with label=Donate linking to https://opencollective.com/openmultiplayer" + }, + "link.item.label.YouTube": { + "message": "YouTube", + "description": "The label of footer link with label=YouTube linking to https://youtube.com/openmultiplayer" + }, + "link.item.label.X": { + "message": "X", + "description": "The label of footer link with label=X linking to https://x.com/openmultiplayer" + }, + "link.item.label.Servers": { + "message": "Sunucular", + "description": "The label of footer link with label=Servers linking to /servers" + }, + "link.item.label.Blog": { + "message": "Blog", + "description": "The label of footer link with label=Blog linking to /blog" + }, + "link.item.label.Animations": { + "message": "Animasyonlar", + "description": "The label of footer link with label=Animations linking to /animations" + }, + "link.item.label.UID Generator": { + "message": "UID Oluşturucu", + "description": "The label of footer link with label=UID Generator linking to /uid" + }, + "link.item.label.SA-MP": { + "message": "SA-MP", + "description": "The label of footer link with label=SA-MP linking to https://sa-mp.mp/" + }, + "copyright": { + "message": "Telif Hakkı © {year} open.mp. Docusaurus ile yapıldı.", + "description": "The footer copyright" + } +} 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..0c8cef068b7 --- /dev/null +++ b/frontend/i18n/tr/docusaurus-theme-classic/navbar.json @@ -0,0 +1,30 @@ +{ + "title": { + "message": "Open Multiplayer", + "description": "The title in the navbar" + }, + "item.label.Docs": { + "message": "Dokümantasyon", + "description": "Navbar item with label Docs" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Forums": { + "message": "Forumlar", + "description": "Navbar item with label Forums" + }, + "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" + } +} diff --git a/frontend/src/components/HomepageFeatures/index.tsx b/frontend/src/components/HomepageFeatures/index.tsx index abad5b24dc6..441768625df 100644 --- a/frontend/src/components/HomepageFeatures/index.tsx +++ b/frontend/src/components/HomepageFeatures/index.tsx @@ -1,71 +1,104 @@ -import type { ReactNode } from "react"; +import React, { type ReactNode } from "react"; import clsx from "clsx"; import Heading from "@theme/Heading"; 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 - find, despite our attempts to have perfect code, bugs happen and your - feedback is valuable. - + + 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 + + ), }, ]; @@ -95,7 +128,7 @@ const Feature = ({ title, Img, description, link, linkText }: FeatureItem) => { ); }; -const HomepageFeatures = () => { +const HomepageFeatures = (): React.ReactElement => { return (
@@ -109,4 +142,4 @@ const HomepageFeatures = () => { ); }; -export default HomepageFeatures; +export default HomepageFeatures; \ No newline at end of file diff --git a/frontend/src/components/LoadingBanner.tsx b/frontend/src/components/LoadingBanner.tsx index 4503fefaf93..c0845863c79 100644 --- a/frontend/src/components/LoadingBanner.tsx +++ b/frontend/src/components/LoadingBanner.tsx @@ -1,12 +1,20 @@ import React from "react"; +import Translate from "@docusaurus/Translate"; const LoadingBanner = () => { return (
-

Following the damn train...

+

+ + Following the damn train... + +

); }; -export default LoadingBanner; +export default LoadingBanner; \ No newline at end of file diff --git a/frontend/src/components/ServerInfoPage.tsx b/frontend/src/components/ServerInfoPage.tsx index 1230c105807..f326c2a4aab 100644 --- a/frontend/src/components/ServerInfoPage.tsx +++ b/frontend/src/components/ServerInfoPage.tsx @@ -2,6 +2,7 @@ import LoadingBanner from "@site/src/components/LoadingBanner"; import { API_ADDRESS } from "@site/src/constants"; import { ServerAllData } from "@site/src/types"; import Layout from "@theme/Layout"; +import Translate from "@docusaurus/Translate"; import { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; @@ -20,7 +21,7 @@ const getServer = async (ip: string): Promise => { const BackLink: React.FC<{ to: string }> = ({ to }) => { return ( - ← Back to Servers + ← Back to Servers ); }; @@ -34,7 +35,7 @@ const ServerLink = ({ address }: { address: string }) => { className="server-info-link" > @@ -60,25 +61,25 @@ const Info = ({ data }: { data: ServerAllData }) => (

{data.core.hn}

- {data.description || "This server has no description"} + {data.description || This server has no description}

- Players Online + Players Online {data.core.pc}/{data.core.pm}
- Mod Version + Mod Version {data.core.vn}
- Language + Language {data.core.la}
@@ -90,8 +91,8 @@ const Info = ({ data }: { data: ServerAllData }) => ( - - + + @@ -123,8 +124,13 @@ const Info = ({ data }: { data: ServerAllData }) => (
@@ -186,19 +192,16 @@ const formatDistance = ( const months = Math.floor(days / 30); const years = Math.floor(days / 365); - const plural = (num: number, unit: string) => - num === 1 ? `1 ${unit}` : `${num} ${unit}s`; - if (years > 0) { - return plural(years, "year"); + return years === 1 ? "1 year" : `${years} years`; } else if (months > 0) { - return plural(months, "month"); + return months === 1 ? "1 month" : `${months} months`; } else if (days > 0) { - return plural(days, "day"); + return days === 1 ? "1 day" : `${days} days`; } else if (hours > 0) { - return plural(hours, "hour"); + return hours === 1 ? "1 hour" : `${hours} hours`; } else if (minutes > 0) { - return plural(minutes, "minute"); + return minutes === 1 ? "1 minute" : `${minutes} minutes`; } else { return "less than a minute"; } diff --git a/frontend/src/components/ServerRow.tsx b/frontend/src/components/ServerRow.tsx index 02fd1a97ea7..9d16e4afb42 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 @@ -65,4 +77,4 @@ const ServerRow = ({ server }) => { ); }; -export default ServerRow; +export default ServerRow; \ No newline at end of file diff --git a/frontend/src/pages/animations.tsx b/frontend/src/pages/animations.tsx index 1dfc99d1534..680349a7749 100644 --- a/frontend/src/pages/animations.tsx +++ b/frontend/src/pages/animations.tsx @@ -1,6 +1,7 @@ import React, { useState, useMemo, useEffect } from "react"; import Layout from "@theme/Layout"; import Heading from "@theme/Heading"; +import Translate from '@docusaurus/Translate'; import { animations, getLibraries, @@ -58,14 +59,16 @@ const AnimationsPage = () => {
- open.mp Animations Viewer + + open.mp Animations Viewer +
{ className={styles.select} disabled={!selectedLibrary} > - + {availableAnimations.map((animation) => (
RuleValueRuleValue