From 0819365ed288527d8af7989b27cda3138526a668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Wed, 24 Jul 2024 19:19:28 -0300 Subject: [PATCH 1/5] chore: create initial i18n pkg --- apps/site/i18n.tsx | 4 +- apps/site/next.locales.mjs | 2 +- apps/site/package.json | 1 + package-lock.json | 13 +- package.json | 3 +- packages/i18n/config.json | 312 ++++++++++++++++++++++++++++++ packages/i18n/locales/en.json | 319 +++++++++++++++++++++++++++++++ packages/i18n/locales/fr.json | 299 +++++++++++++++++++++++++++++ packages/i18n/locales/id.json | 299 +++++++++++++++++++++++++++++ packages/i18n/locales/pt.json | 299 +++++++++++++++++++++++++++++ packages/i18n/locales/zh-cn.json | 299 +++++++++++++++++++++++++++++ packages/i18n/package.json | 6 + turbo.json | 16 +- 13 files changed, 1865 insertions(+), 7 deletions(-) create mode 100644 packages/i18n/config.json create mode 100644 packages/i18n/locales/en.json create mode 100644 packages/i18n/locales/fr.json create mode 100644 packages/i18n/locales/id.json create mode 100644 packages/i18n/locales/pt.json create mode 100644 packages/i18n/locales/zh-cn.json create mode 100644 packages/i18n/package.json diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 5c9029e11637..212e378ced44 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -7,13 +7,13 @@ const loadLocaleDictionary = async (locale: string) => { if (locale === 'en') { // This enables HMR on the English Locale, so that instant refresh // happens while we add/change texts on the source locale - return import('./i18n/locales/en.json').then(f => f.default); + return import('@nodejs/i18n/locales/en.json').then(f => f.default); } if (availableLocaleCodes.includes(locale)) { // Other languages don't really require HMR as they will never be development languages // so we can load them dynamically - return import(`./i18n/locales/${locale}.json`).then(f => f.default); + return import(`@nodejs/i18n/locales/${locale}.json`).then(f => f.default); } throw new Error(`Unsupported locale: ${locale}`); diff --git a/apps/site/next.locales.mjs b/apps/site/next.locales.mjs index 4805361a7424..f0728e9141d1 100644 --- a/apps/site/next.locales.mjs +++ b/apps/site/next.locales.mjs @@ -1,6 +1,6 @@ 'use strict'; -import localeConfig from './i18n/config.json' assert { type: 'json' }; +import localeConfig from '@nodejs/i18n/config.json' assert { type: 'json' }; // As set of available and enabled locales for the website // This is used for allowing us to redirect the user to any diff --git a/apps/site/package.json b/apps/site/package.json index 4fff4f83e5dd..bf262ff60993 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -38,6 +38,7 @@ "dependencies": { "@heroicons/react": "~2.1.1", "@mdx-js/mdx": "^3.0.1", + "@nodejs/i18n": "^0.1.0", "@nodevu/core": "~0.1.0", "@orama/highlight": "^0.1.6", "@oramacloud/client": "^1.3.2", diff --git a/package-lock.json b/package-lock.json index ad11f9b7abe0..e5fdcbca1528 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,8 @@ "name": "@nodejs/website", "license": "MIT", "workspaces": [ - "apps/*" + "apps/*", + "packages/*" ], "dependencies": { "husky": "9.0.11", @@ -31,6 +32,7 @@ "dependencies": { "@heroicons/react": "~2.1.1", "@mdx-js/mdx": "^3.0.1", + "@nodejs/i18n": "^0.1.0", "@nodevu/core": "~0.1.0", "@orama/highlight": "^0.1.6", "@oramacloud/client": "^1.3.2", @@ -4887,6 +4889,10 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@nodejs/i18n": { + "resolved": "packages/i18n", + "link": true + }, "node_modules/@nodejs/website": { "resolved": "apps/site", "link": true @@ -32966,6 +32972,11 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "packages/i18n": { + "name": "@nodejs/i18n", + "version": "0.1.0", + "license": "MIT" } } } diff --git a/package.json b/package.json index 701f5a15d029..ebc80874be1f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ }, "packageManager": "npm@10.7.0", "workspaces": [ - "apps/*" + "apps/*", + "packages/*" ], "scripts": { "dev": "turbo run dev", diff --git a/packages/i18n/config.json b/packages/i18n/config.json new file mode 100644 index 000000000000..f90457204fed --- /dev/null +++ b/packages/i18n/config.json @@ -0,0 +1,312 @@ +[ + { + "code": "ar", + "localName": "العربية", + "name": "Arabic", + "langDir": "rtl", + "dateFormat": "YYYY.MM.DD", + "hrefLang": "ar", + "enabled": false, + "default": false + }, + { + "code": "bn", + "localName": "বাংলা", + "name": "Bengali", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "bn", + "enabled": false, + "default": false + }, + { + "code": "de", + "localName": "Deutsch", + "name": "German", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "de", + "enabled": false, + "default": false + }, + { + "code": "el", + "localName": "Ελληνικά", + "name": "Greek", + "langDir": "ltr", + "dateFormat": "DD/MM/YYYY", + "hrefLang": "el-GR", + "enabled": false, + "default": false + }, + { + "code": "en", + "localName": "English", + "name": "English", + "langDir": "ltr", + "dateFormat": "MM.DD.YYYY", + "hrefLang": "en-GB", + "enabled": true, + "default": true + }, + { + "code": "es", + "localName": "Español", + "name": "Spanish", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "es-ES", + "enabled": false, + "default": false + }, + { + "code": "fa", + "localName": "فارسی", + "name": "Persian", + "langDir": "rtl", + "dateFormat": "YYYY/MM/DD", + "hrefLang": "fa", + "enabled": false, + "default": false + }, + { + "code": "fi", + "localName": "Suomi", + "name": "Finnish", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "fi", + "enabled": false, + "default": false + }, + { + "code": "fr", + "localName": "Français", + "name": "French", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "fr", + "enabled": true, + "default": false + }, + { + "code": "he", + "localName": "עִברִית", + "name": "Hebrew", + "langDir": "rtl", + "dateFormat": "DD-MM-YYYY", + "hrefLang": "he", + "enabled": false, + "default": false + }, + { + "code": "hi", + "localName": "हिन्दी", + "name": "Hindi", + "langDir": "ltr", + "dateFormat": "DD/MM/YYYY", + "hrefLang": "hi", + "enabled": false, + "default": false + }, + { + "code": "id", + "localName": "Bahasa Indonesia", + "name": "Indonesian", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "id", + "enabled": true, + "default": false + }, + { + "code": "it", + "localName": "Italiano", + "name": "Italian", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "it", + "enabled": false, + "default": false + }, + { + "code": "ja", + "localName": "日本語", + "name": "Japanese", + "langDir": "ltr", + "dateFormat": "YYYY.MM.DD", + "hrefLang": "ja", + "enabled": false, + "default": false + }, + { + "code": "ka", + "localName": "ქართული", + "name": "Georgian", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "ka", + "enabled": false, + "default": false + }, + { + "code": "ko", + "localName": "한국어", + "name": "Korean", + "langDir": "ltr", + "dateFormat": "YYYY.MM.DD", + "hrefLang": "ko", + "enabled": false, + "default": false + }, + { + "code": "mn", + "localName": "Монгол", + "name": "Mongolian", + "langDir": "ltr", + "dateFormat": "YYYY.MM.DD", + "hrefLang": "mn", + "enabled": false, + "default": false + }, + { + "code": "nl", + "localName": "Nederlands", + "name": "Dutch", + "langDir": "ltr", + "dateFormat": "DD-MM-YYYY", + "hrefLang": "nl", + "enabled": false, + "default": false + }, + { + "code": "pl", + "localName": "Polski", + "name": "Polish", + "langDir": "ltr", + "dateFormat": "DD/MM/YYYY", + "hrefLang": "pl", + "enabled": false, + "default": false + }, + { + "code": "pt-br", + "localName": "Português do Brasil", + "name": "Brazilian Portuguese", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "", + "enabled": false, + "default": false + }, + { + "code": "pt", + "localName": "Português", + "name": "Português", + "langDir": "ltr", + "dateFormat": "MM.DD.YYYY", + "hrefLang": "pt", + "enabled": true, + "default": false + }, + { + "code": "ro", + "localName": "Română", + "name": "Romanian", + "langDir": "ltr", + "dateFormat": "DD-MM-YYYY", + "hrefLang": "ro", + "enabled": false, + "default": false + }, + { + "code": "ru", + "localName": "Русский", + "name": "Russian", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "ru", + "enabled": false, + "default": false + }, + { + "code": "sr", + "localName": "Srpski", + "name": "Serbian", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "sr", + "enabled": false, + "default": false + }, + { + "code": "sv", + "localName": "Svenska", + "name": "Swedish", + "langDir": "ltr", + "dateFormat": "YYYY-MM-DD", + "hrefLang": "sv", + "enabled": false, + "default": false + }, + { + "code": "tr", + "localName": "Türkçe", + "name": "Turkish", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "tr", + "enabled": false, + "default": false + }, + { + "code": "uk", + "localName": "Українська", + "name": "Ukrainian", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "uk", + "enabled": false, + "default": false + }, + { + "code": "ur", + "localName": "اردو", + "name": "Urdu", + "langDir": "rtl", + "dateFormat": "DD/MM/YYYY", + "hrefLang": "ur", + "enabled": false, + "default": false + }, + { + "code": "uz", + "localName": "O'zbek", + "name": "Uzbek", + "langDir": "ltr", + "dateFormat": "DD.MM.YYYY", + "hrefLang": "uz", + "enabled": false, + "default": false + }, + { + "code": "zh-cn", + "localName": "简体中文", + "name": "Simplified Chinese", + "langDir": "ltr", + "dateFormat": "YYYY/MM/DD", + "hrefLang": "zh-Hans", + "enabled": true, + "default": false + }, + { + "code": "zh-tw", + "localName": "繁體中文", + "name": "Traditional Chinese", + "langDir": "ltr", + "dateFormat": "YYYY/MM/DD", + "hrefLang": "zh-Hant", + "enabled": false, + "default": false + } +] diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json new file mode 100644 index 000000000000..b2f9ef45f86e --- /dev/null +++ b/packages/i18n/locales/en.json @@ -0,0 +1,319 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Trademark Policy", + "privacyPolicy": "Privacy Policy", + "codeOfConduct": "Code of Conduct", + "security": "Security Policy" + } + }, + "navBar": { + "links": { + "about": "About", + "download": "Download", + "docs": "Docs", + "guides": "Guides", + "learn": "Learn", + "security": "Security", + "certification": "Certification", + "blog": "Blog" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Getting Started", + "introductionToNodejs": "Introduction to Node.js", + "howToInstallNodejs": "How to install Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "How much JavaScript do you need to know to use Node.js?", + "differencesBetweenNodejsAndTheBrowser": "Differences between Node.js and the Browser", + "theV8JavascriptEngine": "The V8 JavaScript Engine", + "anIntroductionToTheNpmPackageManager": "An introduction to the npm package manager", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) and beyond", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, the difference between development and production", + "nodejsWithTypescript": "Node.js with TypeScript", + "nodejsWithWebassembly": "Node.js with WebAssembly", + "debugging": "Debugging Node.js", + "profiling": "Profiling Node.js Applications", + "securityBestPractices": "Security Best Practices" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Asynchronous Work", + "asynchronousFlowControl": "Asynchronous flow control", + "overviewOfBlockingVsNonBlocking": "Overview of Blocking vs Non-Blocking", + "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript Asynchronous Programming and Callbacks", + "discoverJavascriptTimers": "Discover JavaScript Timers", + "eventLoopTimersAndNexttick": "The Node.js Event Loop", + "theNodejsEventEmitter": "The Node.js Event Emitter", + "understandingProcessnexttick": "Understanding process.nextTick()", + "understandingSetimmediate": "Understanding setImmediate()", + "dontBlockTheEventLoop": "Don't Block the Event Loop" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Manipulating Files", + "nodejsFileStats": "Node.js file stats", + "nodejsFilePaths": "Node.js File Paths", + "workingWithFileDescriptorsInNodejs": "Working with file descriptors in Node.js", + "readingFilesWithNodejs": "Reading files with Node.js", + "writingFilesWithNodejs": "Writing files with Node.js", + "workingWithFoldersInNodejs": "Working with folders in Node.js", + "workingWithDifferentFilesystems": "How to work with Different Filesystems" + } + }, + "commandLine": { + "links": { + "commandLine": "Command Line", + "runNodejsScriptsFromTheCommandLine": "Run Node.js scripts from the command line", + "howToReadEnvironmentVariablesFromNodejs": "How to read environment variables from Node.js", + "howToUseTheNodejsRepl": "How to use the Node.js REPL", + "outputToTheCommandLineUsingNodejs": "Output to the command line using Node.js", + "acceptInputFromTheCommandLineInNodejs": "Accept input from the command line in Node.js" + } + }, + "modules": { + "links": { + "modules": "Modules", + "publishingNodeApiModules": "How to publish a Node-API package", + "anatomyOfAnHttpTransaction": "Anatomy of an HTTP Transaction", + "abiStability": "ABI Stability", + "backpressuringInStreams": "Backpressuring in Streams" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Diagnostics", + "userJourney": "User Journey", + "memory": "Memory", + "liveDebugging": "Live Debugging", + "poorPerformance": "Poor Performance", + "flameGraphs": "Flame Graphs" + } + }, + "testRunner": { + "links": { + "testRunner": "Test Runner", + "introduction": "Discovering Node.js's test runner", + "usingTestRunner": "Using Node.js's test runner" + } + } + }, + "about": { + "links": { + "about": "About Node.js", + "aboutSide": "About Node.js®", + "branding": "Branding of Node.js", + "governance": "Project Governance", + "releases": "Node.js Releases", + "security": "Security Reporting" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Get Involved", + "collabSummit": "Collaboration Summit", + "upcomingEvents": "Upcoming Events", + "contribute": "Contribute to Node.js", + "codeOfConduct": "Code of Conduct" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Node.js Releases", + "packageManager": "Installing Node.js via package manager", + "shaSums": { + "title": "Signed SHASUMS for release files", + "howToVerify": " (How to verify)" + }, + "allDownloads": "All download options", + "nightlyReleases": "Nightly builds", + "unofficialBuilds": "Unofficial builds", + "buildingFromSource": "Building Node.js from source on supported platforms", + "installingOnLinux": "Installing Node.js via binary archive", + "installingOnWsl": "Install on Windows Subsystem for Linux (WSL)" + } + }, + "downloadReleasesTable": { + "changelog": "Changelog", + "releases": "Releases", + "docs": "Docs" + }, + "pagination": { + "next": "Next", + "previous": "Previous" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "Navigate to Home" + }, + "crossLink": { + "previous": "Prev", + "next": "Next" + }, + "codebox": { + "copy": "Copy to clipboard", + "copied": "Copied to clipboard!" + }, + "pagination": { + "prev": "Previous", + "prevAriaLabel": "Previous page", + "next": "Next", + "nextAriaLabel": "Next page", + "defaultLabel": "Pagination", + "pageLabel": "Go to page {pageNumber}" + }, + "sidebar": { + "title": "Change page" + }, + "languageDropdown": { + "label": "Choose Language" + }, + "themeToggle": { + "label": "Toggle Dark Mode" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "No Upcoming Event" + } + }, + "metabar": { + "lastUpdated": "Last Updated", + "readingTime": "Reading Time", + "addedIn": "Added In", + "author": "Author", + "authors": "Authors", + "contribute": "Contribute", + "contributeText": "Edit this page", + "viewAs": "View as", + "tableOfContents": "Table of Contents" + }, + "downloads": { + "changelogModal": { + "startContributing": "Start Contributing" + } + }, + "search": { + "searchBox": { + "placeholder": "Start typing..." + }, + "seeAll": { + "text": "See all {count} results" + }, + "searchError": { + "text": "An error occurred while searching. Please try again later." + }, + "poweredBy": { + "text": "Powered by" + }, + "noResults": { + "text": "No results found for \"{query}\"." + }, + "emptyState": { + "text": "Search something..." + }, + "searchPage": { + "title": "You're searching: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "The latest Node.js news, case studies, tutorials, and resources.", + "rssLink": "RSS feed" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {By {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {{category} Blog Posts}}" + }, + "blog": { + "title": "Blog", + "selectCategory": "Categories", + "categories": { + "all": "Everything", + "announcements": "Announcements", + "release": "Releases", + "vulnerability": "Vulnerabilities", + "advisory-board": "Advisory Board", + "community": "Community", + "feature": "Feature", + "module": "Module", + "npm": "npm", + "uncategorized": "Uncategorized", + "video": "Video", + "weekly": "Weekly Updates", + "wg": "Working Groups", + "events": "Events" + } + }, + "error": { + "notFound": { + "title": "Page could not be found", + "description": "Sorry, we couldn't find the page you're after! Try starting again from the homepage." + }, + "internalServerError": { + "title": "Internal Server Error", + "description": "This page has thrown a non-recoverable error." + }, + "backToHome": "Back to Home" + }, + "download": { + "selectCategory": "Categories", + "categories": { + "prebuilt-installer": "Prebuilt Installer", + "prebuilt-binaries": "Prebuilt Binaries", + "package-manager": "Package Manager", + "source-code": "Source Code" + }, + "buttons": { + "prebuilt": "Download Node.js {version}", + "source": "Download Node.js {version} source" + }, + "dropdown": { + "bitness": "Bitness", + "os": "Operating System", + "version": "Version", + "platform": "Platform" + }, + "codeBox": { + "systemManagerWarning": "is not a Node.js package manager. Please ensure you already have {packageManager} installed.", + "communityWarning": "Package managers and their installation scripts are not maintained by the Node.js project.", + "communityWarningReport": "If you encounter issues, please reach out to the package manager's maintainers.", + "installsNvm": "installs nvm (Node Version Manager)", + "downloadAndInstallNodejsRestartTerminal": "download and install Node.js (you may need to restart the terminal)", + "verifiesRightNodejsVersion": "verifies the right Node.js version is in the environment", + "verifiesRightNpmVersion": "verifies the right npm version is in the environment", + "shouldPrint": "should print `{version}`", + "installsFnm": "installs fnm (Fast Node Manager)", + "downloadAndInstallNodejs": "download and install Node.js", + "activateFNM": "activate fnm", + "noteWithColon": "NOTE:", + "dockerIsNotNodejsPackageManager": "Docker is not a Node.js package manager.", + "PleaseEndureAlreadyInstallOnSystem": "Please ensure it is already installed on your system.", + "dockerInstructions": "Follow official instructions at https://docs.docker.com/desktop/", + "dockerImagesLink": "Docker images are provided officially at https://github.com/nodejs/docker-node/", + "pullsNodejsDockerImage": "pulls the Node.js Docker image", + "homebrewIsNotNodejsPackageManager": "Homebrew is not a Node.js package manager.", + "homebrewInstructions": "Follow official instructions at https://brew.sh/", + "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew only supports installing major Node.js versions and might not support the latest Node.js version from the {version} release line.", + "chocolateyIsNotNodejsPackageManager": "Chocolatey is not a Node.js package manager.", + "chocolateyInstructions": "Follow official instructions at https://chocolatey.org/", + "chocolateyNotMaintanedByNodejs": "Chocolatey is not officially maintained by the Node.js project and might not support the {version} version of Node.js" + } + } + } +} diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json new file mode 100644 index 000000000000..bd16abbd69a6 --- /dev/null +++ b/packages/i18n/locales/fr.json @@ -0,0 +1,299 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Politique de Marque", + "privacyPolicy": "Politique de confidentialité", + "codeOfConduct": "Code de conduite", + "security": "Politique de sécurité" + } + }, + "navBar": { + "links": { + "about": "À propos", + "download": "Téléchargement", + "docs": "Docs", + "guides": "Guides", + "learn": "Apprendre", + "security": "Sécurité", + "certification": "Certification", + "blog": "Blog" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Bien démarrer", + "introductionToNodejs": "Introduction à Node.js", + "howToInstallNodejs": "Comment installer Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "À quel point avez-vous besoin de connaître JavaScript pour savoir utiliser Node.js ?", + "differencesBetweenNodejsAndTheBrowser": "Différences entre Node.js et le navigateur", + "theV8JavascriptEngine": "Le moteur JavaScript V8", + "anIntroductionToTheNpmPackageManager": "Une introduction au gestionnaire de paquets npm", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) et au-delà", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, la différence entre le développement et la production", + "nodejsWithTypescript": "Node.js avec TypeScript", + "nodejsWithWebassembly": "Node.js avec WebAssembly", + "debugging": "Débogage de Node.js", + "profiling": "Profilage des applications Node.js", + "securityBestPractices": "Meilleures pratiques de sécurité" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Travail asynchrone", + "asynchronousFlowControl": "Contrôle de l'exécution asynchrone", + "overviewOfBlockingVsNonBlocking": "Vue d'ensemble des opérations bloquantes vs non bloquantes", + "javascriptAsynchronousProgrammingAndCallbacks": "Programmation asynchrone en JavaScript et Callbacks", + "discoverJavascriptTimers": "Découvrez les minuteurs JavaScript", + "eventLoopTimersAndNexttick": "La boucle d'évènement Node.js", + "theNodejsEventEmitter": "L'émetteur d'événement Node.js", + "understandingProcessnexttick": "Comprendre process.nextTick()", + "understandingSetimmediate": "Comprendre setImmediate()", + "dontBlockTheEventLoop": "Ne bloquez pas la boucle d'événement" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Manipuler des fichiers", + "nodejsFileStats": "Attributs de fichier Node.js", + "nodejsFilePaths": "Chemins d'accès aux fichiers avec Node.js", + "workingWithFileDescriptorsInNodejs": "Travailler avec des descripteurs de fichiers dans Node.js", + "readingFilesWithNodejs": "Lire des fichiers avec Node.js", + "writingFilesWithNodejs": "Écrire des fichiers avec Node.js", + "workingWithFoldersInNodejs": "Travailler avec des dossiers dans Node.js", + "workingWithDifferentFilesystems": "Comment travailler avec différents systèmes de fichiers" + } + }, + "commandLine": { + "links": { + "commandLine": "Ligne de commande", + "runNodejsScriptsFromTheCommandLine": "Exécuter les scripts Node.js en ligne de commande", + "howToReadEnvironmentVariablesFromNodejs": "Comment lire les variables d'environnement de Node.js", + "howToUseTheNodejsRepl": "Comment utiliser le REPL Node.js", + "outputToTheCommandLineUsingNodejs": "Sortie vers la ligne de commande avec Node.js", + "acceptInputFromTheCommandLineInNodejs": "Accepter des données provenant de la ligne de commande dans Node.js" + } + }, + "modules": { + "links": { + "modules": "Modules", + "publishingNodeApiModules": "Comment publier le paquet N-API", + "anatomyOfAnHttpTransaction": "Anatomie d'une transaction HTTP", + "abiStability": "Stabilité de l'ABI", + "backpressuringInStreams": "La contre-pression dans Streams" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Diagnostique", + "userJourney": "Parcours de l'utilisateur", + "memory": "Mémoire", + "liveDebugging": "Débogage en direct", + "poorPerformance": "Live debugging", + "flameGraphs": "Flame Graphs" + } + }, + "testRunner": { + "links": { + "testRunner": "Exécuteur de test", + "introduction": "Découverte de l'exécuteur de tests de Node.js", + "usingTestRunner": "Utilisation de l'exécuteur de tests de Node.js" + } + } + }, + "about": { + "links": { + "about": "À propos de Node.js", + "aboutSide": "À propos de Node.js®", + "branding": "L'image de marque de Node.js", + "governance": "Gouvernance du Projet", + "releases": "Versions de Node.js", + "security": "Rapport de sécurité" + } + }, + "getInvolved": { + "links": { + "getInvolved": "S’impliquer", + "collabSummit": "Sommet des Collaborateurs", + "upcomingEvents": "Événements à venir", + "contribute": "Contribuer à Node.js", + "codeOfConduct": "Code de conduite" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Versions de Node.js", + "packageManager": "Installer Node.js via le gestionnaire de paquets", + "shaSums": { + "title": "SHASUMS signés pour les fichiers des versions", + "howToVerify": " (Comment vérifier)" + }, + "allDownloads": "Toutes les options de téléchargement", + "nightlyReleases": "Versions quotidiennes", + "unofficialBuilds": "Constructions non officielles", + "buildingFromSource": "Compiler Node.js à partir du code source sur les systèmes d'exploitation maintenus", + "installingOnLinux": "Installation de Node.js via une archive binaire", + "installingOnWsl": "Installation sur le sous-système Windows pour Linux (WSL)" + } + }, + "downloadReleasesTable": { + "changelog": "Journal de modifications", + "releases": "Sorties", + "docs": "Docs" + }, + "pagination": { + "next": "Suivant", + "previous": "Précédent" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "Naviguer à l'accueil" + }, + "crossLink": { + "previous": "Préc.", + "next": "Suiv." + }, + "codebox": { + "copy": "Copier dans le Presse-papier", + "copied": "Copié dans le presse-papiers!" + }, + "pagination": { + "prev": "Précédent", + "prevAriaLabel": "Page précédente", + "next": "Suivant", + "nextAriaLabel": "Page suivante", + "defaultLabel": "Pagination", + "pageLabel": "Aller à la page {pageNumber}" + }, + "sidebar": { + "title": "Changer de page" + }, + "languageDropdown": { + "label": "Choisir la langue" + }, + "themeToggle": { + "label": "Basculer en mode sombre" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "Aucun événement à venir" + } + }, + "metabar": { + "lastUpdated": "Dernière Mise à jour", + "readingTime": "Temps de Lecture", + "addedIn": "Ajouté dans", + "author": "Auteur", + "authors": "Auteurs", + "contribute": "Contribuer", + "contributeText": "Éditer cette page", + "viewAs": "Afficher en tant que", + "tableOfContents": "Table des matières" + }, + "downloads": { + "changelogModal": { + "startContributing": "Commencer à contribuer" + } + }, + "search": { + "searchBox": { + "placeholder": "Commencer à écrire..." + }, + "seeAll": { + "text": "Voir les {count} résultats" + }, + "searchError": { + "text": "Une erreur est survenue lors de la recherche. Veuillez réessayer plus tard." + }, + "poweredBy": { + "text": "Propulsé par" + }, + "noResults": { + "text": "Aucun résultat trouvé pour \"{query}\"." + }, + "emptyState": { + "text": "Chercher quelque chose..." + }, + "searchPage": { + "title": "Vous recherchez : {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "Les dernières nouvelles de Node.js, des études de cas, des tutoriels et des ressources.", + "rssLink": "Flux RSS" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {Par {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {{category} Blog posts}}" + }, + "blog": { + "title": "Blog", + "selectCategory": "Catégories", + "categories": { + "all": "Toutes les catégories", + "announcements": "Annonces", + "release": "Sorties", + "vulnerability": "Vulnérabilités", + "advisory-board": "Conseil consultatif", + "community": "Communauté", + "feature": "Fonctionalité", + "module": "Module", + "npm": "npm", + "uncategorized": "Sans catégorie", + "video": "Vidéo", + "weekly": "Mises à jour hebdomadaire", + "wg": "Groupes de travail", + "events": "Événements" + } + }, + "error": { + "notFound": { + "title": "Nous n'avons pas trouvé cette page.", + "description": "Désolé, nous n'avons pas trouvé la page que vous cherchez ! Essayez de recommencer à partir de la page d'accueil." + }, + "internalServerError": { + "title": "Erreur interne du serveur", + "description": "Cette page a généré une erreur irrécupérable." + }, + "backToHome": "Retourner à l'accueil" + }, + "download": { + "selectCategory": "Catégories", + "categories": { + "prebuilt-installer": "Installateur préconstruit", + "prebuilt-binaries": "Binaires préconstruits", + "package-manager": "Gestionnaire de paquets", + "source-code": "Code source" + }, + "buttons": { + "prebuilt": "Télécharger Node.js {version}", + "source": "Télécharger les sources de Node.js {version}" + }, + "dropdown": { + "bitness": "Bitness", + "os": "Système d'exploitation", + "version": "Version", + "platform": "Plateforme" + }, + "codeBox": { + "systemManagerWarning": "n'est pas un gestionnaire de paquets Node.js. Veuillez vous assurer que {packageManager} est déjà installé.", + "communityWarning": "Les gestionnaires de paquets et leurs scripts d'installation ne sont pas maintenus par le projet Node.js.", + "communityWarningReport": "Si vous rencontrez des problèmes, veuillez contacter les responsables du gestionnaire de paquets." + } + } + } +} diff --git a/packages/i18n/locales/id.json b/packages/i18n/locales/id.json new file mode 100644 index 000000000000..4526a70bdc63 --- /dev/null +++ b/packages/i18n/locales/id.json @@ -0,0 +1,299 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Kebijakan Merek Dagang", + "privacyPolicy": "Kebijakan Privasi", + "codeOfConduct": "Pedoman Perilaku", + "security": "Kebijakan Keamanan" + } + }, + "navBar": { + "links": { + "about": "Tentang", + "download": "Unduh", + "docs": "Dokumentasi", + "guides": "Panduan", + "learn": "Pelajari", + "security": "Keamanan", + "certification": "Sertifikasi", + "blog": "Artikel" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Memulai", + "introductionToNodejs": "Pengantar Node.js", + "howToInstallNodejs": "Instruksi Pemasangan Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Seberapa banyak JavaScript yang anda perlu tahu untuk menggunakan Node.js?", + "differencesBetweenNodejsAndTheBrowser": "Perbedaan Node.js dengan Browser", + "theV8JavascriptEngine": "V8 JavaScript Engine", + "anIntroductionToTheNpmPackageManager": "Perkenalan package manager npm", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) dan seterusnya", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, perbedaan antara development dan production", + "nodejsWithTypescript": "Node.js dengan TypeScript", + "nodejsWithWebassembly": "Node.js dengan WebAssembly", + "debugging": "Men-debug Node.js", + "profiling": "Profilisasi Aplikasi Node.js", + "securityBestPractices": "Praktik Keamanan Terbaik" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Pekerjaan Asinkron", + "asynchronousFlowControl": "Pengendalian alur asinkron", + "overviewOfBlockingVsNonBlocking": "Ringkasan Pemblokiran vs Non-Pemblokiran", + "javascriptAsynchronousProgrammingAndCallbacks": "Pemrograman dan Panggilan Balik Asinkron JavaScript", + "discoverJavascriptTimers": "Jelajahi Pengatur Waktu JavaScript", + "eventLoopTimersAndNexttick": "Node.js Event Loop", + "theNodejsEventEmitter": "Node.js Event Emitter", + "understandingProcessnexttick": "Memahami process.nextTick()", + "understandingSetimmediate": "Memahami setImmediate()", + "dontBlockTheEventLoop": "Jangan blokir Event Loop" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Manipulasi File", + "nodejsFileStats": "Statistik berkas Node.js", + "nodejsFilePaths": "Path Berkas Node.js", + "workingWithFileDescriptorsInNodejs": "Bekerja dengan file descriptors di Node.js", + "readingFilesWithNodejs": "Membaca file dengan Node.js", + "writingFilesWithNodejs": "Menulis file dengan Node.js", + "workingWithFoldersInNodejs": "Bekerja dengan folder di Node.js", + "workingWithDifferentFilesystems": "Bekerja dengan Sistem file yang berbeda" + } + }, + "commandLine": { + "links": { + "commandLine": "Baris Perintah", + "runNodejsScriptsFromTheCommandLine": "Menjalankan skrip Node.js dari baris perintah", + "howToReadEnvironmentVariablesFromNodejs": "Membaca environment variable dari Node.js", + "howToUseTheNodejsRepl": "Cara menggunakan Node.js REPL", + "outputToTheCommandLineUsingNodejs": "Output ke baris perintah menggunakan Node.js", + "acceptInputFromTheCommandLineInNodejs": "Menerima input dari baris perintah di Node.js" + } + }, + "modules": { + "links": { + "modules": "Module", + "publishingNodeApiModules": "Cara mempublikasikan paket Node-API", + "anatomyOfAnHttpTransaction": "Anatomi Transaksi HTTP", + "abiStability": "Stabilitas ABI", + "backpressuringInStreams": "Backpressuring dalam aliran (streams)" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Diagnostik", + "userJourney": "Jurnal Pengguna", + "memory": "Memori", + "liveDebugging": "Pemecahan Masalah Langsung", + "poorPerformance": "Performa Buruk", + "flameGraphs": "Flame Graph" + } + }, + "testRunner": { + "links": { + "testRunner": "Test Runner", + "introduction": "Jelajahi Node.js test runner", + "usingTestRunner": "Menggunakan Node.js's test runner" + } + } + }, + "about": { + "links": { + "about": "Tentang Node.js", + "aboutSide": "Tentang Node.js®", + "branding": "Pencitraan Node.js", + "governance": "Tata Kelola Proyek", + "releases": "Rilisan Node.js", + "security": "Pelaporan Keamanan" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Mari Berpartisipasi", + "collabSummit": "KTT Kolaborasi", + "upcomingEvents": "Event Mendatang", + "contribute": "Berkontribusi pada Node.js", + "codeOfConduct": "Kode Etik" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Rilisan Node.js", + "packageManager": "Instalasi Node.js menggunakan package manager", + "shaSums": { + "title": "SHASUMS yang ditandatangani untuk file rilisan", + "howToVerify": " (Cara Verifikasi)" + }, + "allDownloads": "Semua opsi unduhan", + "nightlyReleases": "Build Nightly", + "unofficialBuilds": "Build tidak resmi", + "buildingFromSource": "Membangun Node.js dari sumber pada plaform yang didukung", + "installingOnLinux": "Instalasi Node.js melalui arsip biner", + "installingOnWsl": "Instalasi pada Windows Subsystem for Linux (WSL)" + } + }, + "downloadReleasesTable": { + "changelog": "Log Perubahan", + "releases": "Rilis", + "docs": "Dokumentasi" + }, + "pagination": { + "next": "Berikutnya", + "previous": "Sebelumnya" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "Navigasi ke Beranda" + }, + "crossLink": { + "previous": "Sebelumnya", + "next": "Berikutnya" + }, + "codebox": { + "copy": "Salin ke papan klip", + "copied": "Disalin ke papan klip!" + }, + "pagination": { + "prev": "Sebelumnya", + "prevAriaLabel": "Halaman Sebelumnya", + "next": "Berikutnya", + "nextAriaLabel": "Halaman selanjutnya", + "defaultLabel": "Penyusunan Halaman", + "pageLabel": "Pergi ke halaman {pageNumber}" + }, + "sidebar": { + "title": "Ubah halaman" + }, + "languageDropdown": { + "label": "Pilih Bahasa" + }, + "themeToggle": { + "label": "Aktifkan Mode Gelap" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "Tidak ada Event Mendatang" + } + }, + "metabar": { + "lastUpdated": "Pembaruan Terakhir", + "readingTime": "Waktu Membaca", + "addedIn": "Ditambahkan pada", + "author": "Penulis", + "authors": "Penulis", + "contribute": "Kontribusi", + "contributeText": "Sunting halaman ini", + "viewAs": "Tampilkan sebagai", + "tableOfContents": "Daftar isi" + }, + "downloads": { + "changelogModal": { + "startContributing": "Mulai Berkontribusi" + } + }, + "search": { + "searchBox": { + "placeholder": "Mulai mengetik..." + }, + "seeAll": { + "text": "Lihat semua {count} hasil" + }, + "searchError": { + "text": "Terjadi kesalahan saat pencarian. Harap coba lagi nanti." + }, + "poweredBy": { + "text": "Diberdayakan oleh" + }, + "noResults": { + "text": "Tidak ada hasil ditemukan untuk \"{query}\"." + }, + "emptyState": { + "text": "Mencari sesuatu..." + }, + "searchPage": { + "title": "Anda sedang mencari: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "Berita terbaru Node.js, studi kasus, tutorial, dan sumber.", + "rssLink": "RSS feed" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other{Oleh {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Artikel} other {{category} Postingan Artikel}}" + }, + "blog": { + "title": "Artikel", + "selectCategory": "Kategori", + "categories": { + "all": "Semuanya", + "announcements": "Pengumuman", + "release": "Rilis", + "vulnerability": "Kerentanan", + "advisory-board": "Dewan Penasihat", + "community": "Komunitas", + "feature": "Fitur", + "module": "Modul", + "npm": "npm", + "uncategorized": "Tidak dikategorikan", + "video": "Video", + "weekly": "Pembaruan mingguan", + "wg": "Kelompok Kerja", + "events": "Event" + } + }, + "error": { + "notFound": { + "title": "Halaman tidak dapat ditemukan", + "description": "Maaf, kami tidak dapat menemukan halaman yang anda cari! Coba memulai kembali dari halaman beranda." + }, + "internalServerError": { + "title": "Kesalahan Server Internal", + "description": "Halaman ini mengalami error yang tidak dapat diperbaiki." + }, + "backToHome": "Kembali ke Beranda" + }, + "download": { + "selectCategory": "Kategori", + "categories": { + "prebuilt-installer": "Prebuilt Installer", + "prebuilt-binaries": "Biner Prebuilt", + "package-manager": "Package manager", + "source-code": "Kode Sumber" + }, + "buttons": { + "prebuilt": "Unduh Node.js {version}", + "source": "Unduh kode sumber Node.js {version}" + }, + "dropdown": { + "bitness": "Panjang Bit", + "os": "Sistem Operasi", + "version": "Versi", + "platform": "Platform" + }, + "codeBox": { + "systemManagerWarning": "bukan manajer paket Node.js. Pastikan Anda sudah menginstal {packageManager}.", + "communityWarning": "Package manager dan skrip instalasi tidak di kelola oleh Node.js.", + "communityWarningReport": "Jika kamu mengalami masalah, harap hubungi pengelola pengelola paket." + } + } + } +} diff --git a/packages/i18n/locales/pt.json b/packages/i18n/locales/pt.json new file mode 100644 index 000000000000..17d9e8c6541b --- /dev/null +++ b/packages/i18n/locales/pt.json @@ -0,0 +1,299 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Política da Marca Comercial", + "privacyPolicy": "Política de Privacidade", + "codeOfConduct": "Código de Conduta", + "security": "Política de Segurança" + } + }, + "navBar": { + "links": { + "about": "Sobre", + "download": "Descarregar", + "docs": "Documentação", + "guides": "Guias", + "learn": "Estudar", + "security": "Segurança", + "certification": "Certificação", + "blog": "Blogue" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Começar", + "introductionToNodejs": "Introdução ao Node.js", + "howToInstallNodejs": "Como instalar o Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Quanto JavaScript precisas de saber para usar o Node.js?", + "differencesBetweenNodejsAndTheBrowser": "Diferenças entre o Node.js e o Navegador", + "theV8JavascriptEngine": "O Motor de JavaScript V8", + "anIntroductionToTheNpmPackageManager": "Introdução ao gestor de pacotes npm", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) e além", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, a diferença entre o desenvolvimento e a produção", + "nodejsWithTypescript": "Node.js com TypeScript", + "nodejsWithWebassembly": "Node.js com WebAssembly", + "debugging": "Depuração da Node.js", + "profiling": "Definição de Perfis de Aplicações de Node.js", + "securityBestPractices": "Boas Práticas de Segurança" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Trabalho Assíncrono", + "asynchronousFlowControl": "Controlo do Fluxo Assíncrono", + "overviewOfBlockingVsNonBlocking": "Visão Geral de Bloqueante vs Não Bloqueante", + "javascriptAsynchronousProgrammingAndCallbacks": "Programação Assíncrona de JavaScript e Funções de Resposta", + "discoverJavascriptTimers": "Descobrir os Temporizadores da JavaScript", + "eventLoopTimersAndNexttick": "O Ciclo de Evento da Node.js", + "theNodejsEventEmitter": "O Emissor de Evento da Node.js", + "understandingProcessnexttick": "Entendendo o process.nextTick()", + "understandingSetimmediate": "Entendendo o setImmediate()", + "dontBlockTheEventLoop": "Não Bloqueie o Ciclo de Eventos" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Manipulando Ficheiros", + "nodejsFileStats": "Estatísticas de Ficheiro da Node.js", + "nodejsFilePaths": "Caminhos de Ficheiros no Node.js", + "workingWithFileDescriptorsInNodejs": "Trabalhar com os Descritores de Ficheiro na Node.js", + "readingFilesWithNodejs": "Ler Ficheiros com a Node.js", + "writingFilesWithNodejs": "Escrever Ficheiros com a Node.js", + "workingWithFoldersInNodejs": "Trabalhando com pastas no Node.js", + "workingWithDifferentFilesystems": "Como trabalhar com diferentes Sistemas de Ficheiros" + } + }, + "commandLine": { + "links": { + "commandLine": "Linha de Comando", + "runNodejsScriptsFromTheCommandLine": "Execute scripts de Node.js através da linha de comandos", + "howToReadEnvironmentVariablesFromNodejs": "Como Ler Variáveis de Ambiente no Node.js", + "howToUseTheNodejsRepl": "Como Usar o REPL do Node.js", + "outputToTheCommandLineUsingNodejs": "Saída para a linha de comando usando o Node.js", + "acceptInputFromTheCommandLineInNodejs": "Aceitar entrada na linha de comando no Node.js" + } + }, + "modules": { + "links": { + "modules": "Módulos", + "publishingNodeApiModules": "Como publicar um pacote da Node-API", + "anatomyOfAnHttpTransaction": "Anatomia de uma Transação do Protocolo de Hipertexto", + "abiStability": "Estabilidade da Interface Binária da Aplicação", + "backpressuringInStreams": "Contrapressão nas Correntes de Dados" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Diagnósticos", + "userJourney": "Jornada do Utilizador", + "memory": "Memória", + "liveDebugging": "Depuração em Direto", + "poorPerformance": "Desempenho Deficiente", + "flameGraphs": "Gráficos de Chamas" + } + }, + "testRunner": { + "links": { + "testRunner": "Executor de Teste", + "introduction": "Descobrir o executor de teste da Node.js", + "usingTestRunner": "Usar o executor de teste da Node.js" + } + } + }, + "about": { + "links": { + "about": "Sobre a Node.js", + "aboutSide": "Sobre a Node.js®", + "branding": "Marca da Node.js", + "governance": "Gestão do Projeto", + "releases": "Lançamentos da Node.js", + "security": "Relatórios de Segurança" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Participar", + "collabSummit": "Cimeira de Colaboração", + "upcomingEvents": "Próximos Eventos", + "contribute": "Colaborar com a Node.js", + "codeOfConduct": "Código de Conduta" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Lançamentos da Node.js", + "packageManager": "Instalar a Node.js através do gestor de pacote", + "shaSums": { + "title": "SHASUMS assinados para ficheiros de lançamento", + "howToVerify": " (Como verificar)" + }, + "allDownloads": "Todas as opções de descarga", + "nightlyReleases": "Compilações noturnas", + "unofficialBuilds": "Compilações não oficiais", + "buildingFromSource": "Compilar a Node.js a partir do código fonte nas plataformas suportadas", + "installingOnLinux": "Instalar a Node.js através do arquivo binário", + "installingOnWsl": "Instalar no Subsistema de Windows para Linux (WSL)" + } + }, + "downloadReleasesTable": { + "changelog": "Registo de Alterações", + "releases": "Lançamentos", + "docs": "Documentação" + }, + "pagination": { + "next": "Próxima", + "previous": "Anterior" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "Navegar para a Página Inicial" + }, + "crossLink": { + "previous": "Anterior", + "next": "Próximo" + }, + "codebox": { + "copy": "Copiar para a área de transferência", + "copied": "Copiado para a área de transferência!" + }, + "pagination": { + "prev": "Anterior", + "prevAriaLabel": "Página anterior", + "next": "Próximo", + "nextAriaLabel": "Próxima página", + "defaultLabel": "Paginação", + "pageLabel": "Ir para a página {pageNumber}" + }, + "sidebar": { + "title": "Mudar de página" + }, + "languageDropdown": { + "label": "Selecionar o idioma" + }, + "themeToggle": { + "label": "Alternar Modo Escuro" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "Nenhum Evento Próximo" + } + }, + "metabar": { + "lastUpdated": "Última Atualização", + "readingTime": "Duração da Leitura", + "addedIn": "Adicionado Em", + "author": "Autor(a)", + "authors": "Autores", + "contribute": "Colaborar", + "contributeText": "Editar esta página", + "viewAs": "Ver como", + "tableOfContents": "Índice" + }, + "downloads": { + "changelogModal": { + "startContributing": "Começar a Colaborar" + } + }, + "search": { + "searchBox": { + "placeholder": "Digitar..." + }, + "seeAll": { + "text": "Ver todos os {count} resultados" + }, + "searchError": { + "text": "Ocorreu um erro durante a pesquisa. Por favor, tente novamente mais tarde." + }, + "poweredBy": { + "text": "Com o apoio de" + }, + "noResults": { + "text": "Não foram encontrados resultados para \"{query}\"." + }, + "emptyState": { + "text": "Procure algo..." + }, + "searchPage": { + "title": "Estás a pesquisar: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "As últimas notícias, estudos de caso, tutoriais e recursos da Node.js.", + "rssLink": "RSS feed" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {Por {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {Publicações do Blogue {category}}}" + }, + "blog": { + "title": "Blogue", + "selectCategory": "Categorias", + "categories": { + "all": "Tudo", + "announcements": "Anúncios", + "release": "Lançamentos", + "vulnerability": "Vulnerabilidades", + "advisory-board": "Conselho Consultivo", + "community": "Comunidade", + "feature": "Funcionalidade", + "module": "Módulo", + "npm": "npm", + "uncategorized": "Sem categoria", + "video": "Vídeo", + "weekly": "Atualizações Semanais", + "wg": "Grupos de Trabalho", + "events": "Eventos" + } + }, + "error": { + "notFound": { + "title": "Não foi possível encontrar a página", + "description": "Lamentamos, mas não conseguimos encontrar a página que procuravas! Tente começar de novo a partir da página inicial." + }, + "internalServerError": { + "title": "Erro Interno do Servidor", + "description": "Esta página registou um erro irrecuperável." + }, + "backToHome": "Voltar à Página Inicial" + }, + "download": { + "selectCategory": "Categorias", + "categories": { + "prebuilt-installer": "Instalador do Pré-compilado", + "prebuilt-binaries": "Binários Pré-compilados", + "package-manager": "Gestor de Pacote", + "source-code": "Código-Fonte" + }, + "buttons": { + "prebuilt": "Descarregar a Node.js {version}", + "source": "Descarregue o código fonte do Node.js {version}" + }, + "dropdown": { + "bitness": "Quantidade dos Bits", + "os": "Sistema Operativo", + "version": "Versão", + "platform": "Plataforma" + }, + "codeBox": { + "systemManagerWarning": "não é um gestor de pacote da Node.js. Devemos certificar-nos de que já temos {packageManager} instalado.", + "communityWarning": "Os gestores de pacotes e os seus programas de instalação não são mantidos pelo projeto Node.js.", + "communityWarningReport": "Se encontrarmos problemas, devemos dirigir-nos aos responsáveis do gestor de pacote." + } + } + } +} diff --git a/packages/i18n/locales/zh-cn.json b/packages/i18n/locales/zh-cn.json new file mode 100644 index 000000000000..d8aca36b0956 --- /dev/null +++ b/packages/i18n/locales/zh-cn.json @@ -0,0 +1,299 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "商标政策", + "privacyPolicy": "隐私政策", + "codeOfConduct": "行为准则", + "security": "安全政策" + } + }, + "navBar": { + "links": { + "about": "关于", + "download": "下载", + "docs": "文档", + "guides": "指南", + "learn": "学习", + "security": "安全", + "certification": "认证", + "blog": "博客" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "快速上手", + "introductionToNodejs": "Node.js 介绍", + "howToInstallNodejs": "如何安装 Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "使用Node.js需要了解多少JavaScript?", + "differencesBetweenNodejsAndTheBrowser": "Node.js 与浏览器的区别", + "theV8JavascriptEngine": "JavaScript V8 引擎", + "anIntroductionToTheNpmPackageManager": "Npm 包管理器简介", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) 与未来", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js 在开发与生产环境中的区别", + "nodejsWithTypescript": "Node.js 与 TypeScript", + "nodejsWithWebassembly": "使用WebAssembly的Node.js", + "debugging": "调试 Node.js", + "profiling": "分析 Node.js 应用程序", + "securityBestPractices": "安全最佳实践" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "异步工作", + "asynchronousFlowControl": "异步流控制", + "overviewOfBlockingVsNonBlocking": "概述:阻塞与非阻塞", + "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript 中的异步编程与回调", + "discoverJavascriptTimers": "了解 JavaScript 定时器", + "eventLoopTimersAndNexttick": "Node.js 事件循环", + "theNodejsEventEmitter": "Node.js 事件发射器", + "understandingProcessnexttick": "掌握 process.nextTick()", + "understandingSetimmediate": "掌握 setImmediate()", + "dontBlockTheEventLoop": "请勿阻塞事件循环" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "文件操作", + "nodejsFileStats": "Node.js 中的文件状态", + "nodejsFilePaths": "Node.js 中的文件路径", + "workingWithFileDescriptorsInNodejs": "在 Node.js 中使用文件描述符", + "readingFilesWithNodejs": "使用 Node.js 读取文件", + "writingFilesWithNodejs": "使用 Node.js 写入文件", + "workingWithFoldersInNodejs": "在 Node.js 中处理文件夹", + "workingWithDifferentFilesystems": "如何使用不同的文件系统" + } + }, + "commandLine": { + "links": { + "commandLine": "命令行", + "runNodejsScriptsFromTheCommandLine": "从命令行运行 Node.js 脚本", + "howToReadEnvironmentVariablesFromNodejs": "如何从 Node.js 中读取环境变量", + "howToUseTheNodejsRepl": "如何使用 Node.js REPL", + "outputToTheCommandLineUsingNodejs": "使用 Node.js 向命令行输出", + "acceptInputFromTheCommandLineInNodejs": "在 Node.js 中接受命令行输入" + } + }, + "modules": { + "links": { + "modules": "模块", + "publishingNodeApiModules": "如何发布一个 Node-API 包", + "anatomyOfAnHttpTransaction": "HTTP 事务剖析", + "abiStability": "ABI 稳定性", + "backpressuringInStreams": "流处理中的反压机制" + } + }, + "diagnostics": { + "links": { + "diagnostics": "诊断", + "userJourney": "用户旅程", + "memory": "内存", + "liveDebugging": "实时调试", + "poorPerformance": "性能分析", + "flameGraphs": "火焰图" + } + }, + "testRunner": { + "links": { + "testRunner": "测试运行程序", + "introduction": "了解 Node.js 测试运行程序", + "usingTestRunner": "使用 Node.js 测试运行程序" + } + } + }, + "about": { + "links": { + "about": "关于 Node.js", + "aboutSide": "关于 Node.js®", + "branding": "Node.js 的品牌化", + "governance": "项目管理", + "releases": "Node.js 版本", + "security": "安全报告" + } + }, + "getInvolved": { + "links": { + "getInvolved": "参与贡献", + "collabSummit": "协作者峰会", + "upcomingEvents": "近期活动", + "contribute": "为Node.js做出贡献", + "codeOfConduct": "行为准则" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Node.js 版本", + "packageManager": "使用包管理器安装 Node.js", + "shaSums": { + "title": "发布文件的签名SHASUMS", + "howToVerify": " (如何验证) " + }, + "allDownloads": "所有下载选项", + "nightlyReleases": "每日构建", + "unofficialBuilds": "非官方构建", + "buildingFromSource": "在支持的平台上从源代码构建 Node.js", + "installingOnLinux": "通过二进制文件安装 Node.js", + "installingOnWsl": "在适用于 Linux 的 Windows 子系统(WSL)上安装 Node. js" + } + }, + "downloadReleasesTable": { + "changelog": "更新日志", + "releases": "发行版", + "docs": "文档" + }, + "pagination": { + "next": "下一页", + "previous": "上一页" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "导航到首页" + }, + "crossLink": { + "previous": "上一个", + "next": "下一个" + }, + "codebox": { + "copy": "复制到剪贴板", + "copied": "已复制到剪贴板!" + }, + "pagination": { + "prev": "上一页", + "prevAriaLabel": "上一页", + "next": "下一页", + "nextAriaLabel": "下一页", + "defaultLabel": "分页", + "pageLabel": "跳转到第 {pageNumber} 页" + }, + "sidebar": { + "title": "更改页面" + }, + "languageDropdown": { + "label": "选择语言" + }, + "themeToggle": { + "label": "切换深色模式" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "暂无即将开始的活动" + } + }, + "metabar": { + "lastUpdated": "最后更新", + "readingTime": "阅读时间", + "addedIn": "添加于", + "author": "作者", + "authors": "作者", + "contribute": "贡献", + "contributeText": "编辑此页", + "viewAs": "查看为", + "tableOfContents": "目录" + }, + "downloads": { + "changelogModal": { + "startContributing": "开始贡献" + } + }, + "search": { + "searchBox": { + "placeholder": "请开始输入..." + }, + "seeAll": { + "text": "查看所有 {count} 个结果" + }, + "searchError": { + "text": "分享时出现错误。请稍后重试。" + }, + "poweredBy": { + "text": "Powered by" + }, + "noResults": { + "text": "未找到关于 \"{query}\" 的结果。" + }, + "emptyState": { + "text": "在此处搜索..." + }, + "searchPage": { + "title": "正在搜索: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "最新的 Node.js 新闻、研究案例、教程和资源。", + "rssLink": "RSS订阅" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {By {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {{category} Blog Posts}}" + }, + "blog": { + "title": "博客", + "selectCategory": "分类", + "categories": { + "all": "所有内容", + "announcements": "公告", + "release": "版本发布", + "vulnerability": "漏洞", + "advisory-board": "管理咨询", + "community": "社区", + "feature": "功能", + "module": "模块", + "npm": "npm", + "uncategorized": "未分类", + "video": "视频", + "weekly": "每周构建", + "wg": "工作组", + "events": "活动" + } + }, + "error": { + "notFound": { + "title": "未找到页面", + "description": "抱歉,我们无法找到您要找的页面!请返回首页重试。" + }, + "internalServerError": { + "title": "服务器内部错误", + "description": "该页面出现了不可恢复的错误。" + }, + "backToHome": "回到首页" + }, + "download": { + "selectCategory": "分类", + "categories": { + "prebuilt-installer": "预构建安装程序", + "prebuilt-binaries": "预构建二进制文件", + "package-manager": "包管理器", + "source-code": "源代码" + }, + "buttons": { + "prebuilt": "下载 Node.js {version}", + "source": "下载 Node.js {version} 源代码" + }, + "dropdown": { + "bitness": "位", + "os": "操作系统", + "version": "版本", + "platform": "平台" + }, + "codeBox": { + "systemManagerWarning": "不是一个 Node.js 包管理器。请确保您已安装好 {packageManager}。", + "communityWarning": "包管理器与它们的安装脚本不由 Node.js 项目维护。", + "communityWarningReport": "如果您遇到问题,请联系包管理器的维护者。" + } + } + } +} diff --git a/packages/i18n/package.json b/packages/i18n/package.json new file mode 100644 index 000000000000..b226a0d49a15 --- /dev/null +++ b/packages/i18n/package.json @@ -0,0 +1,6 @@ +{ + "name": "@nodejs/i18n", + "private": true, + "version": "0.1.0", + "license": "MIT" +} diff --git a/turbo.json b/turbo.json index 13bc9d9fdab6..894d9fe6a0fc 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,10 @@ { "$schema": "https://turbo.build/schema.json", "tasks": { + "build": { + "dependsOn": ["^build"], + "outputs": [".next/**", "!.next/cache/**", "dist/**"] + }, "scripts:release-post": { "cache": false }, @@ -8,10 +12,18 @@ "outputs": [".prettiercache"] }, "lint": { - "dependsOn": ["lint:md", "lint:css", "lint:js"] + "dependsOn": [ + "@nodejs/website#lint:md", + "@nodejs/website#lint:css", + "@nodejs/website#lint:js" + ] }, "lint:lint-staged": { - "dependsOn": ["lint:md", "lint:css", "lint:js"] + "dependsOn": [ + "@nodejs/website#lint:md", + "@nodejs/website#lint:css", + "@nodejs/website#lint:js" + ] }, "check-types": { "dependsOn": ["^topo"] From 2ecf1e2d16a3d28392dbeec1c4606c63803f733c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Wed, 24 Jul 2024 19:23:47 -0300 Subject: [PATCH 2/5] chore: delete website locale files --- apps/site/i18n/config.json | 312 ----------------------------- apps/site/i18n/locales/en.json | 319 ------------------------------ apps/site/i18n/locales/fr.json | 299 ---------------------------- apps/site/i18n/locales/id.json | 299 ---------------------------- apps/site/i18n/locales/pt.json | 299 ---------------------------- apps/site/i18n/locales/zh-cn.json | 299 ---------------------------- 6 files changed, 1827 deletions(-) delete mode 100644 apps/site/i18n/config.json delete mode 100644 apps/site/i18n/locales/en.json delete mode 100644 apps/site/i18n/locales/fr.json delete mode 100644 apps/site/i18n/locales/id.json delete mode 100644 apps/site/i18n/locales/pt.json delete mode 100644 apps/site/i18n/locales/zh-cn.json diff --git a/apps/site/i18n/config.json b/apps/site/i18n/config.json deleted file mode 100644 index f90457204fed..000000000000 --- a/apps/site/i18n/config.json +++ /dev/null @@ -1,312 +0,0 @@ -[ - { - "code": "ar", - "localName": "العربية", - "name": "Arabic", - "langDir": "rtl", - "dateFormat": "YYYY.MM.DD", - "hrefLang": "ar", - "enabled": false, - "default": false - }, - { - "code": "bn", - "localName": "বাংলা", - "name": "Bengali", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "bn", - "enabled": false, - "default": false - }, - { - "code": "de", - "localName": "Deutsch", - "name": "German", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "de", - "enabled": false, - "default": false - }, - { - "code": "el", - "localName": "Ελληνικά", - "name": "Greek", - "langDir": "ltr", - "dateFormat": "DD/MM/YYYY", - "hrefLang": "el-GR", - "enabled": false, - "default": false - }, - { - "code": "en", - "localName": "English", - "name": "English", - "langDir": "ltr", - "dateFormat": "MM.DD.YYYY", - "hrefLang": "en-GB", - "enabled": true, - "default": true - }, - { - "code": "es", - "localName": "Español", - "name": "Spanish", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "es-ES", - "enabled": false, - "default": false - }, - { - "code": "fa", - "localName": "فارسی", - "name": "Persian", - "langDir": "rtl", - "dateFormat": "YYYY/MM/DD", - "hrefLang": "fa", - "enabled": false, - "default": false - }, - { - "code": "fi", - "localName": "Suomi", - "name": "Finnish", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "fi", - "enabled": false, - "default": false - }, - { - "code": "fr", - "localName": "Français", - "name": "French", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "fr", - "enabled": true, - "default": false - }, - { - "code": "he", - "localName": "עִברִית", - "name": "Hebrew", - "langDir": "rtl", - "dateFormat": "DD-MM-YYYY", - "hrefLang": "he", - "enabled": false, - "default": false - }, - { - "code": "hi", - "localName": "हिन्दी", - "name": "Hindi", - "langDir": "ltr", - "dateFormat": "DD/MM/YYYY", - "hrefLang": "hi", - "enabled": false, - "default": false - }, - { - "code": "id", - "localName": "Bahasa Indonesia", - "name": "Indonesian", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "id", - "enabled": true, - "default": false - }, - { - "code": "it", - "localName": "Italiano", - "name": "Italian", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "it", - "enabled": false, - "default": false - }, - { - "code": "ja", - "localName": "日本語", - "name": "Japanese", - "langDir": "ltr", - "dateFormat": "YYYY.MM.DD", - "hrefLang": "ja", - "enabled": false, - "default": false - }, - { - "code": "ka", - "localName": "ქართული", - "name": "Georgian", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "ka", - "enabled": false, - "default": false - }, - { - "code": "ko", - "localName": "한국어", - "name": "Korean", - "langDir": "ltr", - "dateFormat": "YYYY.MM.DD", - "hrefLang": "ko", - "enabled": false, - "default": false - }, - { - "code": "mn", - "localName": "Монгол", - "name": "Mongolian", - "langDir": "ltr", - "dateFormat": "YYYY.MM.DD", - "hrefLang": "mn", - "enabled": false, - "default": false - }, - { - "code": "nl", - "localName": "Nederlands", - "name": "Dutch", - "langDir": "ltr", - "dateFormat": "DD-MM-YYYY", - "hrefLang": "nl", - "enabled": false, - "default": false - }, - { - "code": "pl", - "localName": "Polski", - "name": "Polish", - "langDir": "ltr", - "dateFormat": "DD/MM/YYYY", - "hrefLang": "pl", - "enabled": false, - "default": false - }, - { - "code": "pt-br", - "localName": "Português do Brasil", - "name": "Brazilian Portuguese", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "", - "enabled": false, - "default": false - }, - { - "code": "pt", - "localName": "Português", - "name": "Português", - "langDir": "ltr", - "dateFormat": "MM.DD.YYYY", - "hrefLang": "pt", - "enabled": true, - "default": false - }, - { - "code": "ro", - "localName": "Română", - "name": "Romanian", - "langDir": "ltr", - "dateFormat": "DD-MM-YYYY", - "hrefLang": "ro", - "enabled": false, - "default": false - }, - { - "code": "ru", - "localName": "Русский", - "name": "Russian", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "ru", - "enabled": false, - "default": false - }, - { - "code": "sr", - "localName": "Srpski", - "name": "Serbian", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "sr", - "enabled": false, - "default": false - }, - { - "code": "sv", - "localName": "Svenska", - "name": "Swedish", - "langDir": "ltr", - "dateFormat": "YYYY-MM-DD", - "hrefLang": "sv", - "enabled": false, - "default": false - }, - { - "code": "tr", - "localName": "Türkçe", - "name": "Turkish", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "tr", - "enabled": false, - "default": false - }, - { - "code": "uk", - "localName": "Українська", - "name": "Ukrainian", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "uk", - "enabled": false, - "default": false - }, - { - "code": "ur", - "localName": "اردو", - "name": "Urdu", - "langDir": "rtl", - "dateFormat": "DD/MM/YYYY", - "hrefLang": "ur", - "enabled": false, - "default": false - }, - { - "code": "uz", - "localName": "O'zbek", - "name": "Uzbek", - "langDir": "ltr", - "dateFormat": "DD.MM.YYYY", - "hrefLang": "uz", - "enabled": false, - "default": false - }, - { - "code": "zh-cn", - "localName": "简体中文", - "name": "Simplified Chinese", - "langDir": "ltr", - "dateFormat": "YYYY/MM/DD", - "hrefLang": "zh-Hans", - "enabled": true, - "default": false - }, - { - "code": "zh-tw", - "localName": "繁體中文", - "name": "Traditional Chinese", - "langDir": "ltr", - "dateFormat": "YYYY/MM/DD", - "hrefLang": "zh-Hant", - "enabled": false, - "default": false - } -] diff --git a/apps/site/i18n/locales/en.json b/apps/site/i18n/locales/en.json deleted file mode 100644 index b2f9ef45f86e..000000000000 --- a/apps/site/i18n/locales/en.json +++ /dev/null @@ -1,319 +0,0 @@ -{ - "components": { - "containers": { - "footer": { - "links": { - "trademarkPolicy": "Trademark Policy", - "privacyPolicy": "Privacy Policy", - "codeOfConduct": "Code of Conduct", - "security": "Security Policy" - } - }, - "navBar": { - "links": { - "about": "About", - "download": "Download", - "docs": "Docs", - "guides": "Guides", - "learn": "Learn", - "security": "Security", - "certification": "Certification", - "blog": "Blog" - } - } - }, - "navigation": { - "learn": { - "gettingStarted": { - "links": { - "gettingStarted": "Getting Started", - "introductionToNodejs": "Introduction to Node.js", - "howToInstallNodejs": "How to install Node.js", - "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "How much JavaScript do you need to know to use Node.js?", - "differencesBetweenNodejsAndTheBrowser": "Differences between Node.js and the Browser", - "theV8JavascriptEngine": "The V8 JavaScript Engine", - "anIntroductionToTheNpmPackageManager": "An introduction to the npm package manager", - "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) and beyond", - "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, the difference between development and production", - "nodejsWithTypescript": "Node.js with TypeScript", - "nodejsWithWebassembly": "Node.js with WebAssembly", - "debugging": "Debugging Node.js", - "profiling": "Profiling Node.js Applications", - "securityBestPractices": "Security Best Practices" - } - }, - "asynchronousWork": { - "links": { - "asynchronousWork": "Asynchronous Work", - "asynchronousFlowControl": "Asynchronous flow control", - "overviewOfBlockingVsNonBlocking": "Overview of Blocking vs Non-Blocking", - "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript Asynchronous Programming and Callbacks", - "discoverJavascriptTimers": "Discover JavaScript Timers", - "eventLoopTimersAndNexttick": "The Node.js Event Loop", - "theNodejsEventEmitter": "The Node.js Event Emitter", - "understandingProcessnexttick": "Understanding process.nextTick()", - "understandingSetimmediate": "Understanding setImmediate()", - "dontBlockTheEventLoop": "Don't Block the Event Loop" - } - }, - "manipulatingFiles": { - "links": { - "manipulatingFiles": "Manipulating Files", - "nodejsFileStats": "Node.js file stats", - "nodejsFilePaths": "Node.js File Paths", - "workingWithFileDescriptorsInNodejs": "Working with file descriptors in Node.js", - "readingFilesWithNodejs": "Reading files with Node.js", - "writingFilesWithNodejs": "Writing files with Node.js", - "workingWithFoldersInNodejs": "Working with folders in Node.js", - "workingWithDifferentFilesystems": "How to work with Different Filesystems" - } - }, - "commandLine": { - "links": { - "commandLine": "Command Line", - "runNodejsScriptsFromTheCommandLine": "Run Node.js scripts from the command line", - "howToReadEnvironmentVariablesFromNodejs": "How to read environment variables from Node.js", - "howToUseTheNodejsRepl": "How to use the Node.js REPL", - "outputToTheCommandLineUsingNodejs": "Output to the command line using Node.js", - "acceptInputFromTheCommandLineInNodejs": "Accept input from the command line in Node.js" - } - }, - "modules": { - "links": { - "modules": "Modules", - "publishingNodeApiModules": "How to publish a Node-API package", - "anatomyOfAnHttpTransaction": "Anatomy of an HTTP Transaction", - "abiStability": "ABI Stability", - "backpressuringInStreams": "Backpressuring in Streams" - } - }, - "diagnostics": { - "links": { - "diagnostics": "Diagnostics", - "userJourney": "User Journey", - "memory": "Memory", - "liveDebugging": "Live Debugging", - "poorPerformance": "Poor Performance", - "flameGraphs": "Flame Graphs" - } - }, - "testRunner": { - "links": { - "testRunner": "Test Runner", - "introduction": "Discovering Node.js's test runner", - "usingTestRunner": "Using Node.js's test runner" - } - } - }, - "about": { - "links": { - "about": "About Node.js", - "aboutSide": "About Node.js®", - "branding": "Branding of Node.js", - "governance": "Project Governance", - "releases": "Node.js Releases", - "security": "Security Reporting" - } - }, - "getInvolved": { - "links": { - "getInvolved": "Get Involved", - "collabSummit": "Collaboration Summit", - "upcomingEvents": "Upcoming Events", - "contribute": "Contribute to Node.js", - "codeOfConduct": "Code of Conduct" - } - } - }, - "downloadList": { - "links": { - "previousReleases": "Node.js Releases", - "packageManager": "Installing Node.js via package manager", - "shaSums": { - "title": "Signed SHASUMS for release files", - "howToVerify": " (How to verify)" - }, - "allDownloads": "All download options", - "nightlyReleases": "Nightly builds", - "unofficialBuilds": "Unofficial builds", - "buildingFromSource": "Building Node.js from source on supported platforms", - "installingOnLinux": "Installing Node.js via binary archive", - "installingOnWsl": "Install on Windows Subsystem for Linux (WSL)" - } - }, - "downloadReleasesTable": { - "changelog": "Changelog", - "releases": "Releases", - "docs": "Docs" - }, - "pagination": { - "next": "Next", - "previous": "Previous" - }, - "common": { - "breadcrumbs": { - "navigateToHome": "Navigate to Home" - }, - "crossLink": { - "previous": "Prev", - "next": "Next" - }, - "codebox": { - "copy": "Copy to clipboard", - "copied": "Copied to clipboard!" - }, - "pagination": { - "prev": "Previous", - "prevAriaLabel": "Previous page", - "next": "Next", - "nextAriaLabel": "Next page", - "defaultLabel": "Pagination", - "pageLabel": "Go to page {pageNumber}" - }, - "sidebar": { - "title": "Change page" - }, - "languageDropdown": { - "label": "Choose Language" - }, - "themeToggle": { - "label": "Toggle Dark Mode" - } - }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "No Upcoming Event" - } - }, - "metabar": { - "lastUpdated": "Last Updated", - "readingTime": "Reading Time", - "addedIn": "Added In", - "author": "Author", - "authors": "Authors", - "contribute": "Contribute", - "contributeText": "Edit this page", - "viewAs": "View as", - "tableOfContents": "Table of Contents" - }, - "downloads": { - "changelogModal": { - "startContributing": "Start Contributing" - } - }, - "search": { - "searchBox": { - "placeholder": "Start typing..." - }, - "seeAll": { - "text": "See all {count} results" - }, - "searchError": { - "text": "An error occurred while searching. Please try again later." - }, - "poweredBy": { - "text": "Powered by" - }, - "noResults": { - "text": "No results found for \"{query}\"." - }, - "emptyState": { - "text": "Search something..." - }, - "searchPage": { - "title": "You're searching: {query}" - } - }, - "blog": { - "blogHeader": { - "subtitle": "The latest Node.js news, case studies, tutorials, and resources.", - "rssLink": "RSS feed" - } - } - }, - "layouts": { - "blogPost": { - "author": { - "byLine": "{author, select, null {} other {By {author}, }}" - } - }, - "blogIndex": { - "categoryName": "{category, select, all {Blog} other {{category} Blog Posts}}" - }, - "blog": { - "title": "Blog", - "selectCategory": "Categories", - "categories": { - "all": "Everything", - "announcements": "Announcements", - "release": "Releases", - "vulnerability": "Vulnerabilities", - "advisory-board": "Advisory Board", - "community": "Community", - "feature": "Feature", - "module": "Module", - "npm": "npm", - "uncategorized": "Uncategorized", - "video": "Video", - "weekly": "Weekly Updates", - "wg": "Working Groups", - "events": "Events" - } - }, - "error": { - "notFound": { - "title": "Page could not be found", - "description": "Sorry, we couldn't find the page you're after! Try starting again from the homepage." - }, - "internalServerError": { - "title": "Internal Server Error", - "description": "This page has thrown a non-recoverable error." - }, - "backToHome": "Back to Home" - }, - "download": { - "selectCategory": "Categories", - "categories": { - "prebuilt-installer": "Prebuilt Installer", - "prebuilt-binaries": "Prebuilt Binaries", - "package-manager": "Package Manager", - "source-code": "Source Code" - }, - "buttons": { - "prebuilt": "Download Node.js {version}", - "source": "Download Node.js {version} source" - }, - "dropdown": { - "bitness": "Bitness", - "os": "Operating System", - "version": "Version", - "platform": "Platform" - }, - "codeBox": { - "systemManagerWarning": "is not a Node.js package manager. Please ensure you already have {packageManager} installed.", - "communityWarning": "Package managers and their installation scripts are not maintained by the Node.js project.", - "communityWarningReport": "If you encounter issues, please reach out to the package manager's maintainers.", - "installsNvm": "installs nvm (Node Version Manager)", - "downloadAndInstallNodejsRestartTerminal": "download and install Node.js (you may need to restart the terminal)", - "verifiesRightNodejsVersion": "verifies the right Node.js version is in the environment", - "verifiesRightNpmVersion": "verifies the right npm version is in the environment", - "shouldPrint": "should print `{version}`", - "installsFnm": "installs fnm (Fast Node Manager)", - "downloadAndInstallNodejs": "download and install Node.js", - "activateFNM": "activate fnm", - "noteWithColon": "NOTE:", - "dockerIsNotNodejsPackageManager": "Docker is not a Node.js package manager.", - "PleaseEndureAlreadyInstallOnSystem": "Please ensure it is already installed on your system.", - "dockerInstructions": "Follow official instructions at https://docs.docker.com/desktop/", - "dockerImagesLink": "Docker images are provided officially at https://github.com/nodejs/docker-node/", - "pullsNodejsDockerImage": "pulls the Node.js Docker image", - "homebrewIsNotNodejsPackageManager": "Homebrew is not a Node.js package manager.", - "homebrewInstructions": "Follow official instructions at https://brew.sh/", - "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew only supports installing major Node.js versions and might not support the latest Node.js version from the {version} release line.", - "chocolateyIsNotNodejsPackageManager": "Chocolatey is not a Node.js package manager.", - "chocolateyInstructions": "Follow official instructions at https://chocolatey.org/", - "chocolateyNotMaintanedByNodejs": "Chocolatey is not officially maintained by the Node.js project and might not support the {version} version of Node.js" - } - } - } -} diff --git a/apps/site/i18n/locales/fr.json b/apps/site/i18n/locales/fr.json deleted file mode 100644 index bd16abbd69a6..000000000000 --- a/apps/site/i18n/locales/fr.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "components": { - "containers": { - "footer": { - "links": { - "trademarkPolicy": "Politique de Marque", - "privacyPolicy": "Politique de confidentialité", - "codeOfConduct": "Code de conduite", - "security": "Politique de sécurité" - } - }, - "navBar": { - "links": { - "about": "À propos", - "download": "Téléchargement", - "docs": "Docs", - "guides": "Guides", - "learn": "Apprendre", - "security": "Sécurité", - "certification": "Certification", - "blog": "Blog" - } - } - }, - "navigation": { - "learn": { - "gettingStarted": { - "links": { - "gettingStarted": "Bien démarrer", - "introductionToNodejs": "Introduction à Node.js", - "howToInstallNodejs": "Comment installer Node.js", - "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "À quel point avez-vous besoin de connaître JavaScript pour savoir utiliser Node.js ?", - "differencesBetweenNodejsAndTheBrowser": "Différences entre Node.js et le navigateur", - "theV8JavascriptEngine": "Le moteur JavaScript V8", - "anIntroductionToTheNpmPackageManager": "Une introduction au gestionnaire de paquets npm", - "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) et au-delà", - "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, la différence entre le développement et la production", - "nodejsWithTypescript": "Node.js avec TypeScript", - "nodejsWithWebassembly": "Node.js avec WebAssembly", - "debugging": "Débogage de Node.js", - "profiling": "Profilage des applications Node.js", - "securityBestPractices": "Meilleures pratiques de sécurité" - } - }, - "asynchronousWork": { - "links": { - "asynchronousWork": "Travail asynchrone", - "asynchronousFlowControl": "Contrôle de l'exécution asynchrone", - "overviewOfBlockingVsNonBlocking": "Vue d'ensemble des opérations bloquantes vs non bloquantes", - "javascriptAsynchronousProgrammingAndCallbacks": "Programmation asynchrone en JavaScript et Callbacks", - "discoverJavascriptTimers": "Découvrez les minuteurs JavaScript", - "eventLoopTimersAndNexttick": "La boucle d'évènement Node.js", - "theNodejsEventEmitter": "L'émetteur d'événement Node.js", - "understandingProcessnexttick": "Comprendre process.nextTick()", - "understandingSetimmediate": "Comprendre setImmediate()", - "dontBlockTheEventLoop": "Ne bloquez pas la boucle d'événement" - } - }, - "manipulatingFiles": { - "links": { - "manipulatingFiles": "Manipuler des fichiers", - "nodejsFileStats": "Attributs de fichier Node.js", - "nodejsFilePaths": "Chemins d'accès aux fichiers avec Node.js", - "workingWithFileDescriptorsInNodejs": "Travailler avec des descripteurs de fichiers dans Node.js", - "readingFilesWithNodejs": "Lire des fichiers avec Node.js", - "writingFilesWithNodejs": "Écrire des fichiers avec Node.js", - "workingWithFoldersInNodejs": "Travailler avec des dossiers dans Node.js", - "workingWithDifferentFilesystems": "Comment travailler avec différents systèmes de fichiers" - } - }, - "commandLine": { - "links": { - "commandLine": "Ligne de commande", - "runNodejsScriptsFromTheCommandLine": "Exécuter les scripts Node.js en ligne de commande", - "howToReadEnvironmentVariablesFromNodejs": "Comment lire les variables d'environnement de Node.js", - "howToUseTheNodejsRepl": "Comment utiliser le REPL Node.js", - "outputToTheCommandLineUsingNodejs": "Sortie vers la ligne de commande avec Node.js", - "acceptInputFromTheCommandLineInNodejs": "Accepter des données provenant de la ligne de commande dans Node.js" - } - }, - "modules": { - "links": { - "modules": "Modules", - "publishingNodeApiModules": "Comment publier le paquet N-API", - "anatomyOfAnHttpTransaction": "Anatomie d'une transaction HTTP", - "abiStability": "Stabilité de l'ABI", - "backpressuringInStreams": "La contre-pression dans Streams" - } - }, - "diagnostics": { - "links": { - "diagnostics": "Diagnostique", - "userJourney": "Parcours de l'utilisateur", - "memory": "Mémoire", - "liveDebugging": "Débogage en direct", - "poorPerformance": "Live debugging", - "flameGraphs": "Flame Graphs" - } - }, - "testRunner": { - "links": { - "testRunner": "Exécuteur de test", - "introduction": "Découverte de l'exécuteur de tests de Node.js", - "usingTestRunner": "Utilisation de l'exécuteur de tests de Node.js" - } - } - }, - "about": { - "links": { - "about": "À propos de Node.js", - "aboutSide": "À propos de Node.js®", - "branding": "L'image de marque de Node.js", - "governance": "Gouvernance du Projet", - "releases": "Versions de Node.js", - "security": "Rapport de sécurité" - } - }, - "getInvolved": { - "links": { - "getInvolved": "S’impliquer", - "collabSummit": "Sommet des Collaborateurs", - "upcomingEvents": "Événements à venir", - "contribute": "Contribuer à Node.js", - "codeOfConduct": "Code de conduite" - } - } - }, - "downloadList": { - "links": { - "previousReleases": "Versions de Node.js", - "packageManager": "Installer Node.js via le gestionnaire de paquets", - "shaSums": { - "title": "SHASUMS signés pour les fichiers des versions", - "howToVerify": " (Comment vérifier)" - }, - "allDownloads": "Toutes les options de téléchargement", - "nightlyReleases": "Versions quotidiennes", - "unofficialBuilds": "Constructions non officielles", - "buildingFromSource": "Compiler Node.js à partir du code source sur les systèmes d'exploitation maintenus", - "installingOnLinux": "Installation de Node.js via une archive binaire", - "installingOnWsl": "Installation sur le sous-système Windows pour Linux (WSL)" - } - }, - "downloadReleasesTable": { - "changelog": "Journal de modifications", - "releases": "Sorties", - "docs": "Docs" - }, - "pagination": { - "next": "Suivant", - "previous": "Précédent" - }, - "common": { - "breadcrumbs": { - "navigateToHome": "Naviguer à l'accueil" - }, - "crossLink": { - "previous": "Préc.", - "next": "Suiv." - }, - "codebox": { - "copy": "Copier dans le Presse-papier", - "copied": "Copié dans le presse-papiers!" - }, - "pagination": { - "prev": "Précédent", - "prevAriaLabel": "Page précédente", - "next": "Suivant", - "nextAriaLabel": "Page suivante", - "defaultLabel": "Pagination", - "pageLabel": "Aller à la page {pageNumber}" - }, - "sidebar": { - "title": "Changer de page" - }, - "languageDropdown": { - "label": "Choisir la langue" - }, - "themeToggle": { - "label": "Basculer en mode sombre" - } - }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Aucun événement à venir" - } - }, - "metabar": { - "lastUpdated": "Dernière Mise à jour", - "readingTime": "Temps de Lecture", - "addedIn": "Ajouté dans", - "author": "Auteur", - "authors": "Auteurs", - "contribute": "Contribuer", - "contributeText": "Éditer cette page", - "viewAs": "Afficher en tant que", - "tableOfContents": "Table des matières" - }, - "downloads": { - "changelogModal": { - "startContributing": "Commencer à contribuer" - } - }, - "search": { - "searchBox": { - "placeholder": "Commencer à écrire..." - }, - "seeAll": { - "text": "Voir les {count} résultats" - }, - "searchError": { - "text": "Une erreur est survenue lors de la recherche. Veuillez réessayer plus tard." - }, - "poweredBy": { - "text": "Propulsé par" - }, - "noResults": { - "text": "Aucun résultat trouvé pour \"{query}\"." - }, - "emptyState": { - "text": "Chercher quelque chose..." - }, - "searchPage": { - "title": "Vous recherchez : {query}" - } - }, - "blog": { - "blogHeader": { - "subtitle": "Les dernières nouvelles de Node.js, des études de cas, des tutoriels et des ressources.", - "rssLink": "Flux RSS" - } - } - }, - "layouts": { - "blogPost": { - "author": { - "byLine": "{author, select, null {} other {Par {author}, }}" - } - }, - "blogIndex": { - "categoryName": "{category, select, all {Blog} other {{category} Blog posts}}" - }, - "blog": { - "title": "Blog", - "selectCategory": "Catégories", - "categories": { - "all": "Toutes les catégories", - "announcements": "Annonces", - "release": "Sorties", - "vulnerability": "Vulnérabilités", - "advisory-board": "Conseil consultatif", - "community": "Communauté", - "feature": "Fonctionalité", - "module": "Module", - "npm": "npm", - "uncategorized": "Sans catégorie", - "video": "Vidéo", - "weekly": "Mises à jour hebdomadaire", - "wg": "Groupes de travail", - "events": "Événements" - } - }, - "error": { - "notFound": { - "title": "Nous n'avons pas trouvé cette page.", - "description": "Désolé, nous n'avons pas trouvé la page que vous cherchez ! Essayez de recommencer à partir de la page d'accueil." - }, - "internalServerError": { - "title": "Erreur interne du serveur", - "description": "Cette page a généré une erreur irrécupérable." - }, - "backToHome": "Retourner à l'accueil" - }, - "download": { - "selectCategory": "Catégories", - "categories": { - "prebuilt-installer": "Installateur préconstruit", - "prebuilt-binaries": "Binaires préconstruits", - "package-manager": "Gestionnaire de paquets", - "source-code": "Code source" - }, - "buttons": { - "prebuilt": "Télécharger Node.js {version}", - "source": "Télécharger les sources de Node.js {version}" - }, - "dropdown": { - "bitness": "Bitness", - "os": "Système d'exploitation", - "version": "Version", - "platform": "Plateforme" - }, - "codeBox": { - "systemManagerWarning": "n'est pas un gestionnaire de paquets Node.js. Veuillez vous assurer que {packageManager} est déjà installé.", - "communityWarning": "Les gestionnaires de paquets et leurs scripts d'installation ne sont pas maintenus par le projet Node.js.", - "communityWarningReport": "Si vous rencontrez des problèmes, veuillez contacter les responsables du gestionnaire de paquets." - } - } - } -} diff --git a/apps/site/i18n/locales/id.json b/apps/site/i18n/locales/id.json deleted file mode 100644 index 4526a70bdc63..000000000000 --- a/apps/site/i18n/locales/id.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "components": { - "containers": { - "footer": { - "links": { - "trademarkPolicy": "Kebijakan Merek Dagang", - "privacyPolicy": "Kebijakan Privasi", - "codeOfConduct": "Pedoman Perilaku", - "security": "Kebijakan Keamanan" - } - }, - "navBar": { - "links": { - "about": "Tentang", - "download": "Unduh", - "docs": "Dokumentasi", - "guides": "Panduan", - "learn": "Pelajari", - "security": "Keamanan", - "certification": "Sertifikasi", - "blog": "Artikel" - } - } - }, - "navigation": { - "learn": { - "gettingStarted": { - "links": { - "gettingStarted": "Memulai", - "introductionToNodejs": "Pengantar Node.js", - "howToInstallNodejs": "Instruksi Pemasangan Node.js", - "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Seberapa banyak JavaScript yang anda perlu tahu untuk menggunakan Node.js?", - "differencesBetweenNodejsAndTheBrowser": "Perbedaan Node.js dengan Browser", - "theV8JavascriptEngine": "V8 JavaScript Engine", - "anIntroductionToTheNpmPackageManager": "Perkenalan package manager npm", - "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) dan seterusnya", - "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, perbedaan antara development dan production", - "nodejsWithTypescript": "Node.js dengan TypeScript", - "nodejsWithWebassembly": "Node.js dengan WebAssembly", - "debugging": "Men-debug Node.js", - "profiling": "Profilisasi Aplikasi Node.js", - "securityBestPractices": "Praktik Keamanan Terbaik" - } - }, - "asynchronousWork": { - "links": { - "asynchronousWork": "Pekerjaan Asinkron", - "asynchronousFlowControl": "Pengendalian alur asinkron", - "overviewOfBlockingVsNonBlocking": "Ringkasan Pemblokiran vs Non-Pemblokiran", - "javascriptAsynchronousProgrammingAndCallbacks": "Pemrograman dan Panggilan Balik Asinkron JavaScript", - "discoverJavascriptTimers": "Jelajahi Pengatur Waktu JavaScript", - "eventLoopTimersAndNexttick": "Node.js Event Loop", - "theNodejsEventEmitter": "Node.js Event Emitter", - "understandingProcessnexttick": "Memahami process.nextTick()", - "understandingSetimmediate": "Memahami setImmediate()", - "dontBlockTheEventLoop": "Jangan blokir Event Loop" - } - }, - "manipulatingFiles": { - "links": { - "manipulatingFiles": "Manipulasi File", - "nodejsFileStats": "Statistik berkas Node.js", - "nodejsFilePaths": "Path Berkas Node.js", - "workingWithFileDescriptorsInNodejs": "Bekerja dengan file descriptors di Node.js", - "readingFilesWithNodejs": "Membaca file dengan Node.js", - "writingFilesWithNodejs": "Menulis file dengan Node.js", - "workingWithFoldersInNodejs": "Bekerja dengan folder di Node.js", - "workingWithDifferentFilesystems": "Bekerja dengan Sistem file yang berbeda" - } - }, - "commandLine": { - "links": { - "commandLine": "Baris Perintah", - "runNodejsScriptsFromTheCommandLine": "Menjalankan skrip Node.js dari baris perintah", - "howToReadEnvironmentVariablesFromNodejs": "Membaca environment variable dari Node.js", - "howToUseTheNodejsRepl": "Cara menggunakan Node.js REPL", - "outputToTheCommandLineUsingNodejs": "Output ke baris perintah menggunakan Node.js", - "acceptInputFromTheCommandLineInNodejs": "Menerima input dari baris perintah di Node.js" - } - }, - "modules": { - "links": { - "modules": "Module", - "publishingNodeApiModules": "Cara mempublikasikan paket Node-API", - "anatomyOfAnHttpTransaction": "Anatomi Transaksi HTTP", - "abiStability": "Stabilitas ABI", - "backpressuringInStreams": "Backpressuring dalam aliran (streams)" - } - }, - "diagnostics": { - "links": { - "diagnostics": "Diagnostik", - "userJourney": "Jurnal Pengguna", - "memory": "Memori", - "liveDebugging": "Pemecahan Masalah Langsung", - "poorPerformance": "Performa Buruk", - "flameGraphs": "Flame Graph" - } - }, - "testRunner": { - "links": { - "testRunner": "Test Runner", - "introduction": "Jelajahi Node.js test runner", - "usingTestRunner": "Menggunakan Node.js's test runner" - } - } - }, - "about": { - "links": { - "about": "Tentang Node.js", - "aboutSide": "Tentang Node.js®", - "branding": "Pencitraan Node.js", - "governance": "Tata Kelola Proyek", - "releases": "Rilisan Node.js", - "security": "Pelaporan Keamanan" - } - }, - "getInvolved": { - "links": { - "getInvolved": "Mari Berpartisipasi", - "collabSummit": "KTT Kolaborasi", - "upcomingEvents": "Event Mendatang", - "contribute": "Berkontribusi pada Node.js", - "codeOfConduct": "Kode Etik" - } - } - }, - "downloadList": { - "links": { - "previousReleases": "Rilisan Node.js", - "packageManager": "Instalasi Node.js menggunakan package manager", - "shaSums": { - "title": "SHASUMS yang ditandatangani untuk file rilisan", - "howToVerify": " (Cara Verifikasi)" - }, - "allDownloads": "Semua opsi unduhan", - "nightlyReleases": "Build Nightly", - "unofficialBuilds": "Build tidak resmi", - "buildingFromSource": "Membangun Node.js dari sumber pada plaform yang didukung", - "installingOnLinux": "Instalasi Node.js melalui arsip biner", - "installingOnWsl": "Instalasi pada Windows Subsystem for Linux (WSL)" - } - }, - "downloadReleasesTable": { - "changelog": "Log Perubahan", - "releases": "Rilis", - "docs": "Dokumentasi" - }, - "pagination": { - "next": "Berikutnya", - "previous": "Sebelumnya" - }, - "common": { - "breadcrumbs": { - "navigateToHome": "Navigasi ke Beranda" - }, - "crossLink": { - "previous": "Sebelumnya", - "next": "Berikutnya" - }, - "codebox": { - "copy": "Salin ke papan klip", - "copied": "Disalin ke papan klip!" - }, - "pagination": { - "prev": "Sebelumnya", - "prevAriaLabel": "Halaman Sebelumnya", - "next": "Berikutnya", - "nextAriaLabel": "Halaman selanjutnya", - "defaultLabel": "Penyusunan Halaman", - "pageLabel": "Pergi ke halaman {pageNumber}" - }, - "sidebar": { - "title": "Ubah halaman" - }, - "languageDropdown": { - "label": "Pilih Bahasa" - }, - "themeToggle": { - "label": "Aktifkan Mode Gelap" - } - }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Tidak ada Event Mendatang" - } - }, - "metabar": { - "lastUpdated": "Pembaruan Terakhir", - "readingTime": "Waktu Membaca", - "addedIn": "Ditambahkan pada", - "author": "Penulis", - "authors": "Penulis", - "contribute": "Kontribusi", - "contributeText": "Sunting halaman ini", - "viewAs": "Tampilkan sebagai", - "tableOfContents": "Daftar isi" - }, - "downloads": { - "changelogModal": { - "startContributing": "Mulai Berkontribusi" - } - }, - "search": { - "searchBox": { - "placeholder": "Mulai mengetik..." - }, - "seeAll": { - "text": "Lihat semua {count} hasil" - }, - "searchError": { - "text": "Terjadi kesalahan saat pencarian. Harap coba lagi nanti." - }, - "poweredBy": { - "text": "Diberdayakan oleh" - }, - "noResults": { - "text": "Tidak ada hasil ditemukan untuk \"{query}\"." - }, - "emptyState": { - "text": "Mencari sesuatu..." - }, - "searchPage": { - "title": "Anda sedang mencari: {query}" - } - }, - "blog": { - "blogHeader": { - "subtitle": "Berita terbaru Node.js, studi kasus, tutorial, dan sumber.", - "rssLink": "RSS feed" - } - } - }, - "layouts": { - "blogPost": { - "author": { - "byLine": "{author, select, null {} other{Oleh {author}, }}" - } - }, - "blogIndex": { - "categoryName": "{category, select, all {Artikel} other {{category} Postingan Artikel}}" - }, - "blog": { - "title": "Artikel", - "selectCategory": "Kategori", - "categories": { - "all": "Semuanya", - "announcements": "Pengumuman", - "release": "Rilis", - "vulnerability": "Kerentanan", - "advisory-board": "Dewan Penasihat", - "community": "Komunitas", - "feature": "Fitur", - "module": "Modul", - "npm": "npm", - "uncategorized": "Tidak dikategorikan", - "video": "Video", - "weekly": "Pembaruan mingguan", - "wg": "Kelompok Kerja", - "events": "Event" - } - }, - "error": { - "notFound": { - "title": "Halaman tidak dapat ditemukan", - "description": "Maaf, kami tidak dapat menemukan halaman yang anda cari! Coba memulai kembali dari halaman beranda." - }, - "internalServerError": { - "title": "Kesalahan Server Internal", - "description": "Halaman ini mengalami error yang tidak dapat diperbaiki." - }, - "backToHome": "Kembali ke Beranda" - }, - "download": { - "selectCategory": "Kategori", - "categories": { - "prebuilt-installer": "Prebuilt Installer", - "prebuilt-binaries": "Biner Prebuilt", - "package-manager": "Package manager", - "source-code": "Kode Sumber" - }, - "buttons": { - "prebuilt": "Unduh Node.js {version}", - "source": "Unduh kode sumber Node.js {version}" - }, - "dropdown": { - "bitness": "Panjang Bit", - "os": "Sistem Operasi", - "version": "Versi", - "platform": "Platform" - }, - "codeBox": { - "systemManagerWarning": "bukan manajer paket Node.js. Pastikan Anda sudah menginstal {packageManager}.", - "communityWarning": "Package manager dan skrip instalasi tidak di kelola oleh Node.js.", - "communityWarningReport": "Jika kamu mengalami masalah, harap hubungi pengelola pengelola paket." - } - } - } -} diff --git a/apps/site/i18n/locales/pt.json b/apps/site/i18n/locales/pt.json deleted file mode 100644 index 17d9e8c6541b..000000000000 --- a/apps/site/i18n/locales/pt.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "components": { - "containers": { - "footer": { - "links": { - "trademarkPolicy": "Política da Marca Comercial", - "privacyPolicy": "Política de Privacidade", - "codeOfConduct": "Código de Conduta", - "security": "Política de Segurança" - } - }, - "navBar": { - "links": { - "about": "Sobre", - "download": "Descarregar", - "docs": "Documentação", - "guides": "Guias", - "learn": "Estudar", - "security": "Segurança", - "certification": "Certificação", - "blog": "Blogue" - } - } - }, - "navigation": { - "learn": { - "gettingStarted": { - "links": { - "gettingStarted": "Começar", - "introductionToNodejs": "Introdução ao Node.js", - "howToInstallNodejs": "Como instalar o Node.js", - "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Quanto JavaScript precisas de saber para usar o Node.js?", - "differencesBetweenNodejsAndTheBrowser": "Diferenças entre o Node.js e o Navegador", - "theV8JavascriptEngine": "O Motor de JavaScript V8", - "anIntroductionToTheNpmPackageManager": "Introdução ao gestor de pacotes npm", - "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) e além", - "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, a diferença entre o desenvolvimento e a produção", - "nodejsWithTypescript": "Node.js com TypeScript", - "nodejsWithWebassembly": "Node.js com WebAssembly", - "debugging": "Depuração da Node.js", - "profiling": "Definição de Perfis de Aplicações de Node.js", - "securityBestPractices": "Boas Práticas de Segurança" - } - }, - "asynchronousWork": { - "links": { - "asynchronousWork": "Trabalho Assíncrono", - "asynchronousFlowControl": "Controlo do Fluxo Assíncrono", - "overviewOfBlockingVsNonBlocking": "Visão Geral de Bloqueante vs Não Bloqueante", - "javascriptAsynchronousProgrammingAndCallbacks": "Programação Assíncrona de JavaScript e Funções de Resposta", - "discoverJavascriptTimers": "Descobrir os Temporizadores da JavaScript", - "eventLoopTimersAndNexttick": "O Ciclo de Evento da Node.js", - "theNodejsEventEmitter": "O Emissor de Evento da Node.js", - "understandingProcessnexttick": "Entendendo o process.nextTick()", - "understandingSetimmediate": "Entendendo o setImmediate()", - "dontBlockTheEventLoop": "Não Bloqueie o Ciclo de Eventos" - } - }, - "manipulatingFiles": { - "links": { - "manipulatingFiles": "Manipulando Ficheiros", - "nodejsFileStats": "Estatísticas de Ficheiro da Node.js", - "nodejsFilePaths": "Caminhos de Ficheiros no Node.js", - "workingWithFileDescriptorsInNodejs": "Trabalhar com os Descritores de Ficheiro na Node.js", - "readingFilesWithNodejs": "Ler Ficheiros com a Node.js", - "writingFilesWithNodejs": "Escrever Ficheiros com a Node.js", - "workingWithFoldersInNodejs": "Trabalhando com pastas no Node.js", - "workingWithDifferentFilesystems": "Como trabalhar com diferentes Sistemas de Ficheiros" - } - }, - "commandLine": { - "links": { - "commandLine": "Linha de Comando", - "runNodejsScriptsFromTheCommandLine": "Execute scripts de Node.js através da linha de comandos", - "howToReadEnvironmentVariablesFromNodejs": "Como Ler Variáveis de Ambiente no Node.js", - "howToUseTheNodejsRepl": "Como Usar o REPL do Node.js", - "outputToTheCommandLineUsingNodejs": "Saída para a linha de comando usando o Node.js", - "acceptInputFromTheCommandLineInNodejs": "Aceitar entrada na linha de comando no Node.js" - } - }, - "modules": { - "links": { - "modules": "Módulos", - "publishingNodeApiModules": "Como publicar um pacote da Node-API", - "anatomyOfAnHttpTransaction": "Anatomia de uma Transação do Protocolo de Hipertexto", - "abiStability": "Estabilidade da Interface Binária da Aplicação", - "backpressuringInStreams": "Contrapressão nas Correntes de Dados" - } - }, - "diagnostics": { - "links": { - "diagnostics": "Diagnósticos", - "userJourney": "Jornada do Utilizador", - "memory": "Memória", - "liveDebugging": "Depuração em Direto", - "poorPerformance": "Desempenho Deficiente", - "flameGraphs": "Gráficos de Chamas" - } - }, - "testRunner": { - "links": { - "testRunner": "Executor de Teste", - "introduction": "Descobrir o executor de teste da Node.js", - "usingTestRunner": "Usar o executor de teste da Node.js" - } - } - }, - "about": { - "links": { - "about": "Sobre a Node.js", - "aboutSide": "Sobre a Node.js®", - "branding": "Marca da Node.js", - "governance": "Gestão do Projeto", - "releases": "Lançamentos da Node.js", - "security": "Relatórios de Segurança" - } - }, - "getInvolved": { - "links": { - "getInvolved": "Participar", - "collabSummit": "Cimeira de Colaboração", - "upcomingEvents": "Próximos Eventos", - "contribute": "Colaborar com a Node.js", - "codeOfConduct": "Código de Conduta" - } - } - }, - "downloadList": { - "links": { - "previousReleases": "Lançamentos da Node.js", - "packageManager": "Instalar a Node.js através do gestor de pacote", - "shaSums": { - "title": "SHASUMS assinados para ficheiros de lançamento", - "howToVerify": " (Como verificar)" - }, - "allDownloads": "Todas as opções de descarga", - "nightlyReleases": "Compilações noturnas", - "unofficialBuilds": "Compilações não oficiais", - "buildingFromSource": "Compilar a Node.js a partir do código fonte nas plataformas suportadas", - "installingOnLinux": "Instalar a Node.js através do arquivo binário", - "installingOnWsl": "Instalar no Subsistema de Windows para Linux (WSL)" - } - }, - "downloadReleasesTable": { - "changelog": "Registo de Alterações", - "releases": "Lançamentos", - "docs": "Documentação" - }, - "pagination": { - "next": "Próxima", - "previous": "Anterior" - }, - "common": { - "breadcrumbs": { - "navigateToHome": "Navegar para a Página Inicial" - }, - "crossLink": { - "previous": "Anterior", - "next": "Próximo" - }, - "codebox": { - "copy": "Copiar para a área de transferência", - "copied": "Copiado para a área de transferência!" - }, - "pagination": { - "prev": "Anterior", - "prevAriaLabel": "Página anterior", - "next": "Próximo", - "nextAriaLabel": "Próxima página", - "defaultLabel": "Paginação", - "pageLabel": "Ir para a página {pageNumber}" - }, - "sidebar": { - "title": "Mudar de página" - }, - "languageDropdown": { - "label": "Selecionar o idioma" - }, - "themeToggle": { - "label": "Alternar Modo Escuro" - } - }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Nenhum Evento Próximo" - } - }, - "metabar": { - "lastUpdated": "Última Atualização", - "readingTime": "Duração da Leitura", - "addedIn": "Adicionado Em", - "author": "Autor(a)", - "authors": "Autores", - "contribute": "Colaborar", - "contributeText": "Editar esta página", - "viewAs": "Ver como", - "tableOfContents": "Índice" - }, - "downloads": { - "changelogModal": { - "startContributing": "Começar a Colaborar" - } - }, - "search": { - "searchBox": { - "placeholder": "Digitar..." - }, - "seeAll": { - "text": "Ver todos os {count} resultados" - }, - "searchError": { - "text": "Ocorreu um erro durante a pesquisa. Por favor, tente novamente mais tarde." - }, - "poweredBy": { - "text": "Com o apoio de" - }, - "noResults": { - "text": "Não foram encontrados resultados para \"{query}\"." - }, - "emptyState": { - "text": "Procure algo..." - }, - "searchPage": { - "title": "Estás a pesquisar: {query}" - } - }, - "blog": { - "blogHeader": { - "subtitle": "As últimas notícias, estudos de caso, tutoriais e recursos da Node.js.", - "rssLink": "RSS feed" - } - } - }, - "layouts": { - "blogPost": { - "author": { - "byLine": "{author, select, null {} other {Por {author}, }}" - } - }, - "blogIndex": { - "categoryName": "{category, select, all {Blog} other {Publicações do Blogue {category}}}" - }, - "blog": { - "title": "Blogue", - "selectCategory": "Categorias", - "categories": { - "all": "Tudo", - "announcements": "Anúncios", - "release": "Lançamentos", - "vulnerability": "Vulnerabilidades", - "advisory-board": "Conselho Consultivo", - "community": "Comunidade", - "feature": "Funcionalidade", - "module": "Módulo", - "npm": "npm", - "uncategorized": "Sem categoria", - "video": "Vídeo", - "weekly": "Atualizações Semanais", - "wg": "Grupos de Trabalho", - "events": "Eventos" - } - }, - "error": { - "notFound": { - "title": "Não foi possível encontrar a página", - "description": "Lamentamos, mas não conseguimos encontrar a página que procuravas! Tente começar de novo a partir da página inicial." - }, - "internalServerError": { - "title": "Erro Interno do Servidor", - "description": "Esta página registou um erro irrecuperável." - }, - "backToHome": "Voltar à Página Inicial" - }, - "download": { - "selectCategory": "Categorias", - "categories": { - "prebuilt-installer": "Instalador do Pré-compilado", - "prebuilt-binaries": "Binários Pré-compilados", - "package-manager": "Gestor de Pacote", - "source-code": "Código-Fonte" - }, - "buttons": { - "prebuilt": "Descarregar a Node.js {version}", - "source": "Descarregue o código fonte do Node.js {version}" - }, - "dropdown": { - "bitness": "Quantidade dos Bits", - "os": "Sistema Operativo", - "version": "Versão", - "platform": "Plataforma" - }, - "codeBox": { - "systemManagerWarning": "não é um gestor de pacote da Node.js. Devemos certificar-nos de que já temos {packageManager} instalado.", - "communityWarning": "Os gestores de pacotes e os seus programas de instalação não são mantidos pelo projeto Node.js.", - "communityWarningReport": "Se encontrarmos problemas, devemos dirigir-nos aos responsáveis do gestor de pacote." - } - } - } -} diff --git a/apps/site/i18n/locales/zh-cn.json b/apps/site/i18n/locales/zh-cn.json deleted file mode 100644 index d8aca36b0956..000000000000 --- a/apps/site/i18n/locales/zh-cn.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "components": { - "containers": { - "footer": { - "links": { - "trademarkPolicy": "商标政策", - "privacyPolicy": "隐私政策", - "codeOfConduct": "行为准则", - "security": "安全政策" - } - }, - "navBar": { - "links": { - "about": "关于", - "download": "下载", - "docs": "文档", - "guides": "指南", - "learn": "学习", - "security": "安全", - "certification": "认证", - "blog": "博客" - } - } - }, - "navigation": { - "learn": { - "gettingStarted": { - "links": { - "gettingStarted": "快速上手", - "introductionToNodejs": "Node.js 介绍", - "howToInstallNodejs": "如何安装 Node.js", - "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "使用Node.js需要了解多少JavaScript?", - "differencesBetweenNodejsAndTheBrowser": "Node.js 与浏览器的区别", - "theV8JavascriptEngine": "JavaScript V8 引擎", - "anIntroductionToTheNpmPackageManager": "Npm 包管理器简介", - "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) 与未来", - "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js 在开发与生产环境中的区别", - "nodejsWithTypescript": "Node.js 与 TypeScript", - "nodejsWithWebassembly": "使用WebAssembly的Node.js", - "debugging": "调试 Node.js", - "profiling": "分析 Node.js 应用程序", - "securityBestPractices": "安全最佳实践" - } - }, - "asynchronousWork": { - "links": { - "asynchronousWork": "异步工作", - "asynchronousFlowControl": "异步流控制", - "overviewOfBlockingVsNonBlocking": "概述:阻塞与非阻塞", - "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript 中的异步编程与回调", - "discoverJavascriptTimers": "了解 JavaScript 定时器", - "eventLoopTimersAndNexttick": "Node.js 事件循环", - "theNodejsEventEmitter": "Node.js 事件发射器", - "understandingProcessnexttick": "掌握 process.nextTick()", - "understandingSetimmediate": "掌握 setImmediate()", - "dontBlockTheEventLoop": "请勿阻塞事件循环" - } - }, - "manipulatingFiles": { - "links": { - "manipulatingFiles": "文件操作", - "nodejsFileStats": "Node.js 中的文件状态", - "nodejsFilePaths": "Node.js 中的文件路径", - "workingWithFileDescriptorsInNodejs": "在 Node.js 中使用文件描述符", - "readingFilesWithNodejs": "使用 Node.js 读取文件", - "writingFilesWithNodejs": "使用 Node.js 写入文件", - "workingWithFoldersInNodejs": "在 Node.js 中处理文件夹", - "workingWithDifferentFilesystems": "如何使用不同的文件系统" - } - }, - "commandLine": { - "links": { - "commandLine": "命令行", - "runNodejsScriptsFromTheCommandLine": "从命令行运行 Node.js 脚本", - "howToReadEnvironmentVariablesFromNodejs": "如何从 Node.js 中读取环境变量", - "howToUseTheNodejsRepl": "如何使用 Node.js REPL", - "outputToTheCommandLineUsingNodejs": "使用 Node.js 向命令行输出", - "acceptInputFromTheCommandLineInNodejs": "在 Node.js 中接受命令行输入" - } - }, - "modules": { - "links": { - "modules": "模块", - "publishingNodeApiModules": "如何发布一个 Node-API 包", - "anatomyOfAnHttpTransaction": "HTTP 事务剖析", - "abiStability": "ABI 稳定性", - "backpressuringInStreams": "流处理中的反压机制" - } - }, - "diagnostics": { - "links": { - "diagnostics": "诊断", - "userJourney": "用户旅程", - "memory": "内存", - "liveDebugging": "实时调试", - "poorPerformance": "性能分析", - "flameGraphs": "火焰图" - } - }, - "testRunner": { - "links": { - "testRunner": "测试运行程序", - "introduction": "了解 Node.js 测试运行程序", - "usingTestRunner": "使用 Node.js 测试运行程序" - } - } - }, - "about": { - "links": { - "about": "关于 Node.js", - "aboutSide": "关于 Node.js®", - "branding": "Node.js 的品牌化", - "governance": "项目管理", - "releases": "Node.js 版本", - "security": "安全报告" - } - }, - "getInvolved": { - "links": { - "getInvolved": "参与贡献", - "collabSummit": "协作者峰会", - "upcomingEvents": "近期活动", - "contribute": "为Node.js做出贡献", - "codeOfConduct": "行为准则" - } - } - }, - "downloadList": { - "links": { - "previousReleases": "Node.js 版本", - "packageManager": "使用包管理器安装 Node.js", - "shaSums": { - "title": "发布文件的签名SHASUMS", - "howToVerify": " (如何验证) " - }, - "allDownloads": "所有下载选项", - "nightlyReleases": "每日构建", - "unofficialBuilds": "非官方构建", - "buildingFromSource": "在支持的平台上从源代码构建 Node.js", - "installingOnLinux": "通过二进制文件安装 Node.js", - "installingOnWsl": "在适用于 Linux 的 Windows 子系统(WSL)上安装 Node. js" - } - }, - "downloadReleasesTable": { - "changelog": "更新日志", - "releases": "发行版", - "docs": "文档" - }, - "pagination": { - "next": "下一页", - "previous": "上一页" - }, - "common": { - "breadcrumbs": { - "navigateToHome": "导航到首页" - }, - "crossLink": { - "previous": "上一个", - "next": "下一个" - }, - "codebox": { - "copy": "复制到剪贴板", - "copied": "已复制到剪贴板!" - }, - "pagination": { - "prev": "上一页", - "prevAriaLabel": "上一页", - "next": "下一页", - "nextAriaLabel": "下一页", - "defaultLabel": "分页", - "pageLabel": "跳转到第 {pageNumber} 页" - }, - "sidebar": { - "title": "更改页面" - }, - "languageDropdown": { - "label": "选择语言" - }, - "themeToggle": { - "label": "切换深色模式" - } - }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "暂无即将开始的活动" - } - }, - "metabar": { - "lastUpdated": "最后更新", - "readingTime": "阅读时间", - "addedIn": "添加于", - "author": "作者", - "authors": "作者", - "contribute": "贡献", - "contributeText": "编辑此页", - "viewAs": "查看为", - "tableOfContents": "目录" - }, - "downloads": { - "changelogModal": { - "startContributing": "开始贡献" - } - }, - "search": { - "searchBox": { - "placeholder": "请开始输入..." - }, - "seeAll": { - "text": "查看所有 {count} 个结果" - }, - "searchError": { - "text": "分享时出现错误。请稍后重试。" - }, - "poweredBy": { - "text": "Powered by" - }, - "noResults": { - "text": "未找到关于 \"{query}\" 的结果。" - }, - "emptyState": { - "text": "在此处搜索..." - }, - "searchPage": { - "title": "正在搜索: {query}" - } - }, - "blog": { - "blogHeader": { - "subtitle": "最新的 Node.js 新闻、研究案例、教程和资源。", - "rssLink": "RSS订阅" - } - } - }, - "layouts": { - "blogPost": { - "author": { - "byLine": "{author, select, null {} other {By {author}, }}" - } - }, - "blogIndex": { - "categoryName": "{category, select, all {Blog} other {{category} Blog Posts}}" - }, - "blog": { - "title": "博客", - "selectCategory": "分类", - "categories": { - "all": "所有内容", - "announcements": "公告", - "release": "版本发布", - "vulnerability": "漏洞", - "advisory-board": "管理咨询", - "community": "社区", - "feature": "功能", - "module": "模块", - "npm": "npm", - "uncategorized": "未分类", - "video": "视频", - "weekly": "每周构建", - "wg": "工作组", - "events": "活动" - } - }, - "error": { - "notFound": { - "title": "未找到页面", - "description": "抱歉,我们无法找到您要找的页面!请返回首页重试。" - }, - "internalServerError": { - "title": "服务器内部错误", - "description": "该页面出现了不可恢复的错误。" - }, - "backToHome": "回到首页" - }, - "download": { - "selectCategory": "分类", - "categories": { - "prebuilt-installer": "预构建安装程序", - "prebuilt-binaries": "预构建二进制文件", - "package-manager": "包管理器", - "source-code": "源代码" - }, - "buttons": { - "prebuilt": "下载 Node.js {version}", - "source": "下载 Node.js {version} 源代码" - }, - "dropdown": { - "bitness": "位", - "os": "操作系统", - "version": "版本", - "platform": "平台" - }, - "codeBox": { - "systemManagerWarning": "不是一个 Node.js 包管理器。请确保您已安装好 {packageManager}。", - "communityWarning": "包管理器与它们的安装脚本不由 Node.js 项目维护。", - "communityWarningReport": "如果您遇到问题,请联系包管理器的维护者。" - } - } - } -} From 94270a4b95f1bdb7b20dfe68c1a636c821ad00bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Wed, 24 Jul 2024 19:49:17 -0300 Subject: [PATCH 3/5] chore: remove useless build task --- apps/site/turbo.json | 1 + turbo.json | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 327d89ece90d..25113f13083c 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -21,6 +21,7 @@ ] }, "build": { + "dependsOn": ["^build"], "inputs": [ "{app,components,hooks,i18n,layouts,middlewares,pages,providers,types,util}/**/*.{ts,tsx}", "{app,components,layouts,pages,styles}/**/*.css", diff --git a/turbo.json b/turbo.json index 894d9fe6a0fc..e79138553634 100644 --- a/turbo.json +++ b/turbo.json @@ -1,10 +1,6 @@ { "$schema": "https://turbo.build/schema.json", "tasks": { - "build": { - "dependsOn": ["^build"], - "outputs": [".next/**", "!.next/cache/**", "dist/**"] - }, "scripts:release-post": { "cache": false }, From 004eed33a57791507c9e2e1cc73099a08858dcef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Fri, 9 Aug 2024 18:50:48 -0300 Subject: [PATCH 4/5] chore: update package names --- apps/site/package.json | 2 +- package-lock.json | 18 +++++++++++------- package.json | 2 +- packages/i18n/package.json | 2 +- turbo.json | 12 ++++++------ 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index bf262ff60993..89b73a6c8e67 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -1,7 +1,7 @@ { "type": "module", "private": true, - "name": "@nodejs/website", + "name": "@node-core/website", "description": "Nodejs.org Website", "homepage": "https://nodejs.org", "repository": { diff --git a/package-lock.json b/package-lock.json index e5fdcbca1528..ef60c9ba2819 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10 +1,10 @@ { - "name": "@nodejs/website", + "name": "@node-core/website", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@nodejs/website", + "name": "@node-core/website", "license": "MIT", "workspaces": [ "apps/*", @@ -27,7 +27,7 @@ } }, "apps/site": { - "name": "@nodejs/website", + "name": "@node-core/website", "license": "MIT", "dependencies": { "@heroicons/react": "~2.1.1", @@ -4889,12 +4889,16 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nodejs/i18n": { + "node_modules/@node-core/website": { + "resolved": "apps/site", + "link": true + }, + "node_modules/@node-core/website-i18n": { "resolved": "packages/i18n", "link": true }, - "node_modules/@nodejs/website": { - "resolved": "apps/site", + "node_modules/@nodejs/i18n": { + "resolved": "packages/i18n", "link": true }, "node_modules/@nodelib/fs.scandir": { @@ -32974,7 +32978,7 @@ } }, "packages/i18n": { - "name": "@nodejs/i18n", + "name": "@node-core/website-i18n", "version": "0.1.0", "license": "MIT" } diff --git a/package.json b/package.json index ebc80874be1f..593d1cdef3df 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", "private": true, - "name": "@nodejs/website", + "name": "@node-core/website", "description": "Nodejs.org Website", "homepage": "https://nodejs.org", "repository": { diff --git a/packages/i18n/package.json b/packages/i18n/package.json index b226a0d49a15..678541e3f48d 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,5 +1,5 @@ { - "name": "@nodejs/i18n", + "name": "@node-core/website-i18n", "private": true, "version": "0.1.0", "license": "MIT" diff --git a/turbo.json b/turbo.json index e79138553634..9cbd4ef591f3 100644 --- a/turbo.json +++ b/turbo.json @@ -9,16 +9,16 @@ }, "lint": { "dependsOn": [ - "@nodejs/website#lint:md", - "@nodejs/website#lint:css", - "@nodejs/website#lint:js" + "@node-core/website#lint:md", + "@node-core/website#lint:css", + "@node-core/website#lint:js" ] }, "lint:lint-staged": { "dependsOn": [ - "@nodejs/website#lint:md", - "@nodejs/website#lint:css", - "@nodejs/website#lint:js" + "@node-core/website#lint:md", + "@node-core/website#lint:css", + "@node-core/website#lint:js" ] }, "check-types": { From c9f67b7fd007758167af9d4f2f08c9957e4f2db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Sun, 11 Aug 2024 14:43:12 -0300 Subject: [PATCH 5/5] chore: create i18n utils --- .gitignore | 1 + apps/site/i18n.tsx | 8 ++++++-- apps/site/next.locales.mjs | 20 +++++++++++-------- apps/site/package.json | 2 +- package-lock.json | 13 ++++++------- packages/i18n/package.json | 19 ++++++++++++++++-- packages/i18n/{ => src}/config.json | 0 packages/i18n/src/index.ts | 30 +++++++++++++++++++++++++++++ packages/i18n/src/types.ts | 10 ++++++++++ packages/i18n/tsconfig.json | 22 +++++++++++++++++++++ packages/i18n/turbo.json | 14 ++++++++++++++ 11 files changed, 119 insertions(+), 20 deletions(-) rename packages/i18n/{ => src}/config.json (100%) create mode 100644 packages/i18n/src/index.ts create mode 100644 packages/i18n/src/types.ts create mode 100644 packages/i18n/tsconfig.json create mode 100644 packages/i18n/turbo.json diff --git a/.gitignore b/.gitignore index aef8ec50a2db..59dc56bd54aa 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ cache # TypeScript tsconfig.tsbuildinfo +dist/ # Sentry Config File .sentryclirc diff --git a/apps/site/i18n.tsx b/apps/site/i18n.tsx index 212e378ced44..82cd6e5d6e31 100644 --- a/apps/site/i18n.tsx +++ b/apps/site/i18n.tsx @@ -1,3 +1,5 @@ +import { importLocale } from '@node-core/website-i18n'; + import { getRequestConfig } from 'next-intl/server'; import { availableLocaleCodes } from '@/next.locales.mjs'; @@ -7,13 +9,15 @@ const loadLocaleDictionary = async (locale: string) => { if (locale === 'en') { // This enables HMR on the English Locale, so that instant refresh // happens while we add/change texts on the source locale - return import('@nodejs/i18n/locales/en.json').then(f => f.default); + return import('@node-core/website-i18n/locales/en.json').then( + f => f.default + ); } if (availableLocaleCodes.includes(locale)) { // Other languages don't really require HMR as they will never be development languages // so we can load them dynamically - return import(`@nodejs/i18n/locales/${locale}.json`).then(f => f.default); + return importLocale(locale); } throw new Error(`Unsupported locale: ${locale}`); diff --git a/apps/site/next.locales.mjs b/apps/site/next.locales.mjs index f0728e9141d1..8f687bb9f0d7 100644 --- a/apps/site/next.locales.mjs +++ b/apps/site/next.locales.mjs @@ -1,27 +1,31 @@ 'use strict'; -import localeConfig from '@nodejs/i18n/config.json' assert { type: 'json' }; +import { + getAvailableLocales, + getAvailableLocaleCodes, + getDefaultLocale, + getAvailableLocalesMap, + getAllLocaleCodes, +} from '@node-core/website-i18n'; // As set of available and enabled locales for the website // This is used for allowing us to redirect the user to any // of the available locales that we have enabled on the website -const availableLocales = localeConfig.filter(locale => locale.enabled); +const availableLocales = getAvailableLocales(); // This gives an easy way of accessing all available locale codes -const availableLocaleCodes = availableLocales.map(locale => locale.code); +const availableLocaleCodes = getAvailableLocaleCodes(); // This provides the default locale information for the Next.js Application // This is marked by the unique `locale.default` property on the `en` locale /** @type {import('./types').LocaleConfig} */ -const defaultLocale = availableLocales.find(locale => locale.default); +const defaultLocale = getDefaultLocale(); // Creates a Map of available locales for easy access -const availableLocalesMap = Object.fromEntries( - localeConfig.map(locale => [locale.code, locale]) -); +const availableLocalesMap = getAvailableLocalesMap(); // Creates all supported locales -const allLocaleCodes = localeConfig.map(locale => locale.code); +const allLocaleCodes = getAllLocaleCodes(); export { allLocaleCodes, diff --git a/apps/site/package.json b/apps/site/package.json index 89b73a6c8e67..31add43a194b 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -38,7 +38,7 @@ "dependencies": { "@heroicons/react": "~2.1.1", "@mdx-js/mdx": "^3.0.1", - "@nodejs/i18n": "^0.1.0", + "@node-core/website-i18n": "0.1.0", "@nodevu/core": "~0.1.0", "@orama/highlight": "^0.1.6", "@oramacloud/client": "^1.3.2", diff --git a/package-lock.json b/package-lock.json index ef60c9ba2819..411860d2e687 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "cz-conventional-changelog": "3.3.0", "prettier": "3.3.2", "prettier-plugin-tailwindcss": "0.6.5", - "typescript": "~5.5.3" + "typescript": "*" }, "engines": { "node": "v20" @@ -32,7 +32,7 @@ "dependencies": { "@heroicons/react": "~2.1.1", "@mdx-js/mdx": "^3.0.1", - "@nodejs/i18n": "^0.1.0", + "@node-core/website-i18n": "0.1.0", "@nodevu/core": "~0.1.0", "@orama/highlight": "^0.1.6", "@oramacloud/client": "^1.3.2", @@ -4897,10 +4897,6 @@ "resolved": "packages/i18n", "link": true }, - "node_modules/@nodejs/i18n": { - "resolved": "packages/i18n", - "link": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -32980,7 +32976,10 @@ "packages/i18n": { "name": "@node-core/website-i18n", "version": "0.1.0", - "license": "MIT" + "license": "MIT", + "devDependencies": { + "typescript": "~5.5.3" + } } } } diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 678541e3f48d..f4292dbddfe1 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,21 @@ { "name": "@node-core/website-i18n", - "private": true, "version": "0.1.0", - "license": "MIT" + "private": true, + "type": "module", + "license": "MIT", + "scripts": { + "dev": "tsc --watch", + "build": "tsc" + }, + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./dist/index.js" + }, + "./locales/en.json": "./locales/en.json" + }, + "devDependencies": { + "typescript": "~5.5.3" + } } diff --git a/packages/i18n/config.json b/packages/i18n/src/config.json similarity index 100% rename from packages/i18n/config.json rename to packages/i18n/src/config.json diff --git a/packages/i18n/src/index.ts b/packages/i18n/src/index.ts new file mode 100644 index 000000000000..af02750ba71f --- /dev/null +++ b/packages/i18n/src/index.ts @@ -0,0 +1,30 @@ +import localeConfig from './config.json' assert { type: 'json' }; + +import { LocaleConfig } from './types.js'; + +export const importLocale = async (locale: string) => { + const { default: localeData } = await import(`../locales/${locale}.json`); + return localeData; +}; + +// As set of available and enabled locales for the website +// This is used for allowing us to redirect the user to any +// of the available locales that we have enabled on the website +export const getAvailableLocales = (): LocaleConfig[] => + localeConfig.filter(locale => locale.enabled); + +// This gives an easy way of accessing all available locale codes +export const getAvailableLocaleCodes = () => + getAvailableLocales().map(locale => locale.code); + +// This provides the default locale information for the Next.js Application +// This is marked by the unique `locale.default` property on the `en` locale +export const getDefaultLocale = () => + getAvailableLocales().find(locale => locale.default); + +// Creates a Map of available locales for easy access +export const getAvailableLocalesMap = () => + Object.fromEntries(localeConfig.map(locale => [locale.code, locale])); + +// Creates all supported locales +export const getAllLocaleCodes = () => localeConfig.map(locale => locale.code); diff --git a/packages/i18n/src/types.ts b/packages/i18n/src/types.ts new file mode 100644 index 000000000000..7e0a501af981 --- /dev/null +++ b/packages/i18n/src/types.ts @@ -0,0 +1,10 @@ +export interface LocaleConfig { + code: string; + localName: string; + name: string; + langDir: string; + dateFormat: string; + hrefLang: string; + enabled: boolean; + default: boolean; +} diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json new file mode 100644 index 000000000000..8a69ed0f6388 --- /dev/null +++ b/packages/i18n/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "incremental": false, + "isolatedModules": true, + "lib": ["es2022", "DOM", "DOM.Iterable"], + "module": "NodeNext", + "moduleDetection": "force", + "moduleResolution": "NodeNext", + "noUncheckedIndexedAccess": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2022", + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/i18n/turbo.json b/packages/i18n/turbo.json new file mode 100644 index 000000000000..ab2e39921aa7 --- /dev/null +++ b/packages/i18n/turbo.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"], + "tasks": { + "dev": { + "persistent": true, + "cache": false + }, + "build": { + "dependsOn": [], + "outputs": ["dist/**"] + } + } +}