├── ban.json ├── en-XL.json ├── mus.json ├── nap.json ├── yi.json ├── ast-u-sd-escb.json ├── ca-u-sd-esib.json ├── scripts ├── .env.example ├── src │ ├── env.ts │ ├── consts.ts │ ├── index.ts │ └── core.ts ├── .vscode │ ├── extensions.json │ └── settings.json ├── .prettierrc ├── tsconfig.json ├── package.json ├── .gitignore ├── LICENSE └── README.md ├── assets └── approve_ui.png ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── stop_maintain.yml │ ├── maintain.yml │ └── badge.yml └── workflows │ └── automate.yml ├── verified.js ├── incomplete.js ├── Languages.patch.ts ├── bottomify.ts ├── leet.ts ├── enchantment.ts ├── restructurize.ts ├── got.json ├── tlh-qaak.json ├── be-Latn.json ├── dum.json ├── nds.json ├── README.template.md ├── li.json ├── calculate.ts ├── ml.json ├── kw.json ├── co.json ├── is.json ├── ne.json ├── ota.json ├── ang.json ├── mt.json ├── Languages.ts ├── es-419ES@419.json ├── te.json ├── ur.json ├── enm.json ├── README.md ├── mk.json ├── lzh.json ├── ka.json ├── as.json ├── de_CH.json └── kk.json /ban.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /en-XL.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /mus.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /nap.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /yi.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /ast-u-sd-escb.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /ca-u-sd-esib.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /scripts/.env.example: -------------------------------------------------------------------------------- 1 | GITHUB_TOKEN=YOUR-TOKEN-HERE -------------------------------------------------------------------------------- /scripts/src/env.ts: -------------------------------------------------------------------------------- 1 | import dotenv from "dotenv"; 2 | dotenv.config(); 3 | -------------------------------------------------------------------------------- /scripts/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["esbenp.prettier-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /assets/approve_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revoltchat/translations/HEAD/assets/approve_ui.png -------------------------------------------------------------------------------- /scripts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "useTabs": true, 4 | "tabWidth": 4, 5 | "semi": true 6 | } 7 | -------------------------------------------------------------------------------- /scripts/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.formatOnSave": true 4 | } 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: "Translation server on Revolt" 3 | url: https://rvlt.gg/translation 4 | about: Ask questions and discuss with others 5 | -------------------------------------------------------------------------------- /scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "declaration": true, 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "moduleResolution": "node", 12 | "resolveJsonModule": true 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /verified.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | "en", 3 | "de", 4 | "sv", 5 | "hu", 6 | "ckb", 7 | "pt_BR", 8 | "pt_PT", 9 | "fr", 10 | "br", 11 | "lv", 12 | "ar", 13 | "ru", 14 | "uk", 15 | "et", 16 | "fil", 17 | "fa", 18 | "es", 19 | "es_419", 20 | "pl", 21 | "id", 22 | "owo", 23 | "el", 24 | "nb_NO", 25 | "nl", 26 | "ca", 27 | "it", 28 | "zh_Hant", 29 | "lt", 30 | "tokipona", 31 | "sk", 32 | "tr", 33 | "th", 34 | "ja", 35 | "esperanto", 36 | "ro", 37 | "zh_Hans", 38 | "hi", 39 | "bn" 40 | ] -------------------------------------------------------------------------------- /incomplete.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | "sl", 3 | "eu", 4 | "peo", 5 | "lzh", 6 | "ne", 7 | "te", 8 | "as", 9 | "br", 10 | "lb", 11 | "nds", 12 | "got", 13 | "mk", 14 | "sr", 15 | "ml", 16 | "ars", 17 | "ang", 18 | "ca-u-sd-esib", 19 | "de_CH", 20 | "is", 21 | "enm", 22 | "dum", 23 | "kw", 24 | "cy", 25 | "li", 26 | "ceb", 27 | "si", 28 | "vec", 29 | "frm", 30 | "tlh-qaak", 31 | "ga", 32 | "he", 33 | "pr", 34 | "ban", 35 | "kmr", 36 | "ca@valencia", 37 | "ur", 38 | "ro_MD", 39 | "mwl", 40 | "tokipona", 41 | "mt", 42 | "vls", 43 | "ta" 44 | ] -------------------------------------------------------------------------------- /Languages.patch.ts: -------------------------------------------------------------------------------- 1 | import incomplete from "./incomplete"; 2 | import verified from "./verified"; 3 | import { Languages } from "./Languages"; 4 | 5 | // Apply 'incomplete' flag at runtime 6 | for (const key of incomplete) { 7 | const entry = Languages[key as keyof typeof Languages]; 8 | if (entry) { 9 | entry.incomplete = true; 10 | } 11 | } 12 | 13 | // Apply 'verified' flag at runtime 14 | for (const key of verified) { 15 | const entry = Languages[key as keyof typeof Languages]; 16 | if (entry) { 17 | entry.verified = true; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "translations-scripts", 3 | "description": "Various scripts useful for those maintaining this repository.", 4 | "private": true, 5 | "license": "MIT", 6 | "type": "module", 7 | "bin": "dist/index.js", 8 | "scripts": { 9 | "build": "tsc" 10 | }, 11 | "engines": { 12 | "node": ">=18" 13 | }, 14 | "dependencies": { 15 | "chalk": "^5.3.0", 16 | "octokit": "^2.1.0", 17 | "typescript": "^5.1.6" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^20.3.3", 21 | "dotenv": "^16.3.1" 22 | }, 23 | "packageManager": "yarn@1.22.19" 24 | } 25 | -------------------------------------------------------------------------------- /bottomify.ts: -------------------------------------------------------------------------------- 1 | // bottom.json generator 2 | // deno run --allow-read --allow-write bottomify.ts 3 | 4 | import { encode } from "https://deno.land/x/bottomify@0.3.0/deno.ts"; 5 | 6 | const text = await Deno.readTextFile("./en.json"); 7 | const data = JSON.parse(text); 8 | 9 | function recurse(obj: { [key: string]: any }) { 10 | for (const key of Object.keys(obj)) { 11 | if (key === 'dayjs') continue; 12 | if (typeof obj[key] === 'object') { 13 | recurse(obj[key]); 14 | } else { 15 | obj[key] = encode(obj[key]); 16 | } 17 | } 18 | } 19 | 20 | recurse(data); 21 | await Deno.writeTextFile("./bottom.json", JSON.stringify(data, null, 4)); 22 | -------------------------------------------------------------------------------- /scripts/src/consts.ts: -------------------------------------------------------------------------------- 1 | export const ISO_MAP = [ 2 | { name: "english", code: "en" }, 3 | { name: "french", code: "fr" }, 4 | { name: "german", code: "de" }, 5 | { name: "dutch", code: "nl" }, 6 | { name: "spanish", code: "es" }, 7 | { name: "spanish (latin america)", code: "es_419" }, 8 | { name: "portuguese", code: "pt_PT" }, 9 | { name: "brazilian portuguese", code: "pt_BR" }, 10 | { name: "italian", code: "it" }, 11 | { name: "ukrainian", code: "uk" }, 12 | { name: "russian", code: "ru" }, 13 | { name: "japanese", code: "ja" }, 14 | { name: "filipino", code: "fil" }, 15 | { name: "arabic", code: "ar" }, 16 | { name: 'czech', code: 'cs' }, 17 | { name: 'belarusian', code: 'be' } 18 | ]; 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/stop_maintain.yml: -------------------------------------------------------------------------------- 1 | name: Stop maintaining a language 2 | description: Request to be removed as a language maintainer 3 | title: "stop maintaining: " 4 | labels: [] 5 | body: 6 | - type: input 7 | id: language 8 | attributes: 9 | label: What language do you no longer wish to maintain? 10 | description: You will no longer be in charge of reviewing strings or helping assign badges 11 | validations: 12 | required: true 13 | - type: input 14 | id: link 15 | attributes: 16 | label: Link to your Weblate profile 17 | description: You will no longer have reviewer status to approve strings 18 | validations: 19 | required: true 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/maintain.yml: -------------------------------------------------------------------------------- 1 | name: Maintain a language 2 | description: Request to become a language maintainer 3 | title: "maintain: " 4 | labels: [] 5 | body: 6 | - type: input 7 | id: language 8 | attributes: 9 | label: What language do you want to maintain? 10 | description: You will be in charge of reviewing strings and can assist in assigning badges 11 | validations: 12 | required: true 13 | - type: input 14 | id: link 15 | attributes: 16 | label: Link to your Weblate profile 17 | description: You will be given reviewer status to approve strings 18 | validations: 19 | required: true 20 | - type: input 21 | id: revolt-id 22 | attributes: 23 | label: Revolt user ID 24 | description: Used for record-keeping and assigning your profile the translator badge 25 | validations: 26 | required: true 27 | -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Dependency directories 19 | node_modules/ 20 | jspm_packages/ 21 | 22 | # TypeScript cache 23 | *.tsbuildinfo 24 | 25 | # Optional npm cache directory 26 | .npm 27 | 28 | # Optional eslint cache 29 | .eslintcache 30 | 31 | # Microbundle cache 32 | .rpt2_cache/ 33 | .rts2_cache_cjs/ 34 | .rts2_cache_es/ 35 | .rts2_cache_umd/ 36 | 37 | # Optional REPL history 38 | .node_repl_history 39 | 40 | # Output of 'npm pack' 41 | *.tgz 42 | 43 | # Yarn Integrity file 44 | .yarn-integrity 45 | 46 | # dotenv environment variables file 47 | .env 48 | .env.test 49 | 50 | # parcel-bundler cache (https://parceljs.org/) 51 | .cache 52 | 53 | # Next.js build output 54 | .next 55 | 56 | # Yarn files 57 | .yarn/install-state.gz 58 | .yarn/build-state.yml 59 | .yarn/cache 60 | 61 | # Typescript output directory 62 | dist 63 | -------------------------------------------------------------------------------- /scripts/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2023 Sophie L. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | # Revolt Translations Scripts 2 | 3 | This folder contains various scripts useful for maintainers of this repository. 4 | 5 | ## Local setup 6 | 7 | Right now, these scripts are still in development - however, you can get them running locally. You'll need Git and Node >=18 installed - in addition, you'll need to install Yarn Classic (I recommend using Corepack for this). 8 | 9 | - Clone the repository: 10 | 11 | ```bash 12 | git clone "https://github.com/revoltchat/translations" translations && cd translations/scripts 13 | ``` 14 | 15 | - Install the necessary dependencies: 16 | 17 | ```bash 18 | yarn install 19 | ``` 20 | 21 | - Copy `.env.example` to `.env`, then [create a GitHub personal access token](https://github.com/settings/tokens/new?scopes=repo) and paste it in the new file. 22 | - Compile and link the scripts: 23 | 24 | ```bash 25 | yarn build && npm link 26 | ``` 27 | 28 | You should now be able to run the scripts: 29 | 30 | ```bash 31 | translations-scripts help 32 | ``` 33 | 34 | If you make any changes to the scripts, **make sure to run `yarn build` before trying to run them** or your changes will **not** be reflected. 35 | -------------------------------------------------------------------------------- /leet.ts: -------------------------------------------------------------------------------- 1 | // leet.json generator 2 | // deno run --allow-read --allow-write leet.ts 3 | 4 | const REPLACEMENTS = { 5 | I: '1', 6 | R: '2', 7 | E: '3', 8 | A: '4', 9 | S: '5', 10 | G: '6', 11 | T: '7', 12 | B: '8', 13 | O: '0' 14 | } 15 | 16 | function encode(input: string) { 17 | return input.toUpperCase() 18 | .split('') 19 | .map(x => { 20 | // @ts-expect-error a 21 | if (REPLACEMENTS[x]) { 22 | // @ts-expect-error a 23 | return REPLACEMENTS[x] 24 | } 25 | 26 | return x; 27 | }) 28 | .join('') 29 | } 30 | 31 | const text = await Deno.readTextFile("./en.json"); 32 | const data = JSON.parse(text); 33 | 34 | function recurse(obj: { [key: string]: any }) { 35 | for (const key of Object.keys(obj)) { 36 | if (key === 'dayjs') continue; 37 | if (typeof obj[key] === 'object') { 38 | recurse(obj[key]); 39 | } else { 40 | obj[key] = encode(obj[key]); 41 | } 42 | } 43 | } 44 | 45 | recurse(data); 46 | await Deno.writeTextFile("./leet.json", JSON.stringify(data, null, 4)); 47 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/badge.yml: -------------------------------------------------------------------------------- 1 | name: Request translator badge 2 | description: Request to receive the translator badge on your profile 3 | title: "badge: for " 4 | labels: [] 5 | body: 6 | - type: input 7 | id: language 8 | attributes: 9 | label: What language(s) did you translate? 10 | description: Comma-separate languages if more than one 11 | validations: 12 | required: true 13 | - type: input 14 | id: revolt-id 15 | attributes: 16 | label: What is your Revolt user ID? 17 | description: Used to assign your profile the translator badge 18 | validations: 19 | required: true 20 | - type: input 21 | id: link 22 | attributes: 23 | label: Link to your Weblate profile. 24 | description: Used to reference your contributions 25 | validations: 26 | required: true 27 | - type: checkboxes 28 | id: checkboxes 29 | attributes: 30 | label: Validations 31 | description: Before submitting, please make sure the following have been satisfied 32 | options: 33 | - label: The language has a maintainer (see the full list [here](https://github.com/revoltchat/translations#languages)) 34 | required: true 35 | - label: You agree that your translations are to a reasonable standard 36 | required: true 37 | -------------------------------------------------------------------------------- /.github/workflows/automate.yml: -------------------------------------------------------------------------------- 1 | name: Automate Repository 2 | 3 | on: 4 | push: 5 | paths: 6 | - "en.json" 7 | - "contributors.json" 8 | - "*.ts" 9 | workflow_dispatch: 10 | 11 | jobs: 12 | auto: 13 | runs-on: ubuntu-latest 14 | name: "Automate Repository" 15 | 16 | steps: 17 | - uses: actions/checkout@v3 18 | - uses: denoland/setup-deno@v1 19 | with: 20 | deno-version: v1.x 21 | 22 | - name: Bottomify translations 23 | run: deno run --allow-read --allow-write bottomify.ts 24 | - name: Convert to enchantment table 25 | run: deno run --allow-read --allow-write enchantment.ts 26 | - name: Convert to leet code 27 | run: deno run --allow-read --allow-write leet.ts 28 | - name: Commit changes 29 | uses: EndBug/add-and-commit@v4 30 | with: 31 | add: "*.json" 32 | message: "chore: update automatic languages" 33 | env: 34 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | - name: Update README 37 | run: deno run --allow-read --allow-write calculate.ts 38 | - name: Commit changes 39 | uses: EndBug/add-and-commit@v4 40 | with: 41 | add: "*.md" 42 | message: "chore: re-generate README" 43 | env: 44 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 45 | -------------------------------------------------------------------------------- /enchantment.ts: -------------------------------------------------------------------------------- 1 | // enchantment.json generator 2 | // deno run --allow-read --allow-write enchantment.ts 3 | 4 | const REPLACEMENTS = { 5 | "a": "ᔑ", 6 | "b": "ʖ", 7 | "c": "ᓵ", 8 | "d": "↸", 9 | "e": "ᒷ", 10 | "f": "⎓", 11 | "g": "⊣", 12 | "h": "⍑", 13 | "i": "╎", 14 | "j": "⋮", 15 | "k": "ꖌ", 16 | "l": "ꖎ", 17 | "m": "ᒲ", 18 | "n": "リ", 19 | "o": "𝙹", 20 | "p": "!¡", 21 | "q": "ᑑ", 22 | "r": "∷", 23 | "s": "ᓭ", 24 | "t": "ℸ", 25 | "u": "⚍", 26 | "v": "⍊", 27 | "w": "∴", 28 | "x": "/", 29 | "y": "||", 30 | "z": "⨅" 31 | } 32 | 33 | function encode(input: string) { 34 | return input.toLowerCase() 35 | .split('') 36 | .map(x => { 37 | // @ts-expect-error a 38 | if (REPLACEMENTS[x]) { 39 | // @ts-expect-error a 40 | return REPLACEMENTS[x] 41 | } 42 | 43 | return x; 44 | }) 45 | .join('') 46 | } 47 | 48 | const text = await Deno.readTextFile("./en.json"); 49 | const data = JSON.parse(text); 50 | 51 | function recurse(obj: { [key: string]: any }) { 52 | for (const key of Object.keys(obj)) { 53 | if (key === 'dayjs') continue; 54 | if (typeof obj[key] === 'object') { 55 | recurse(obj[key]); 56 | } else { 57 | obj[key] = encode(obj[key]); 58 | } 59 | } 60 | } 61 | 62 | recurse(data); 63 | await Deno.writeTextFile("./enchantment.json", JSON.stringify(data, null, 4)); 64 | -------------------------------------------------------------------------------- /scripts/src/index.ts: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env node 2 | import chalk from "chalk"; 3 | 4 | import { main } from "./core.js"; 5 | 6 | const [_nodeExec, _scriptPath, command, ...args] = process.argv; 7 | 8 | async function entryPoint() { 9 | if (command) { 10 | switch (command) { 11 | case "add-contributor": 12 | case "add-maintainer": 13 | if (!args[0]) { 14 | return console.error( 15 | "[MAIN] You need to specify an issue number." 16 | ); 17 | } 18 | await main({ 19 | command: "add", 20 | maintainer: command === "add-maintainer", 21 | issue: parseInt(args[0]), 22 | }); 23 | break; 24 | case "help": 25 | const commandList = [ 26 | "add-contributor - add a new contributor to the list using the info from the provided GitHub issue", 27 | "add-maintainer - add a new maintainer to the list using the info from the provided GitHub issue", 28 | ]; 29 | console.log( 30 | `${chalk.bold.underline( 31 | "Revolt Translations Tools" 32 | )}\nRequired arguments are wrapped in ; optional arguments are wrapped in [square brackets].\n\n${chalk.bold( 33 | "Commands" 34 | )}\n${commandList.join("\n")}` 35 | ); 36 | break; 37 | default: 38 | console.error( 39 | `Unknown command ${command} - try running translations-scripts help.` 40 | ); 41 | break; 42 | } 43 | } else { 44 | return console.error( 45 | "You need to specify a command - try running translations-scripts help." 46 | ); 47 | } 48 | } 49 | 50 | await entryPoint(); 51 | -------------------------------------------------------------------------------- /restructurize.ts: -------------------------------------------------------------------------------- 1 | // move stuff 2 | // deno run --allow-read --allow-write restructurize.ts 3 | 4 | for await (const entry of Deno.readDir('.')) { 5 | const fn = entry.name; 6 | if (fn.endsWith('.json')) { 7 | if (fn === 'contributors.json') continue; 8 | console.log('Processing', fn); 9 | 10 | const text = await Deno.readTextFile(fn); 11 | const data = JSON.parse(text); 12 | 13 | // [2022-04-21] Combine server / channel permissions. 14 | if (data?.permissions?.server) { 15 | Object.keys(data.permissions.server) 16 | .forEach(key => data.permissions[key] = data.permissions.server[key]); 17 | } 18 | 19 | if (data?.permissions?.channel) { 20 | Object.keys(data.permissions.channel) 21 | .forEach(key => data.permissions[key] = data.permissions.channel[key]); 22 | } 23 | 24 | delete data?.permissions?.server; 25 | delete data?.permissions?.channel; 26 | 27 | // [2022-04-21] Move ManageRoles to ManageRole 28 | if (data?.permissions?.ManageRoles) { 29 | data.permissions.ManageRole = data?.permissions?.ManageRoles; 30 | delete data?.permissions?.ManageRoles; 31 | } 32 | 33 | // [2022-04-21] Move View to ViewChannel 34 | if (data?.permissions?.View) { 35 | data.permissions.ViewChannel = data?.permissions?.View; 36 | delete data?.permissions?.View; 37 | } 38 | 39 | // * Commit 40 | await Deno.writeTextFile(fn, JSON.stringify(data, undefined, '\t')); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /got.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "tos": "𐌱𐌹𐌲𐍂𐌹𐍀𐍃 𐌰𐌽𐌳𐌱𐌰𐌷𐍄𐌾𐌹𐍃", 4 | "about": "𐌱𐌹", 5 | "loading": "𐌷𐌻𐌰𐍃𐍃…", 6 | "image_by": "𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐍃 𐌸𐌰𐌹𐍂𐌷", 7 | "on": "𐌰𐌽𐌰𐌸𐍂𐌰𐌹𐌰𐌽", 8 | "off": "𐌰𐍆𐌸𐍂𐌰𐌹𐌰𐌽", 9 | "disabled": "𐌰𐌽𐌳𐌵𐌹𐍅𐌹𐌸", 10 | "unavailable": "𐌿𐌽𐍃𐌰𐍄𐌾𐌰𐌱𐌴𐍂", 11 | "privacy": "𐍃𐌿𐌽𐌳𐍂𐌹𐍆𐍂𐌰𐌼𐌲𐌰𐌷𐍄𐌹𐍅𐌹𐌲𐍃", 12 | "learn_more": "𐌼𐌰𐌽𐌰𐌲𐌹𐌶𐌴𐌹𐌽𐍃 𐍅𐌰𐌹𐍄𐌴𐌹𐌽𐍉𐍃" 13 | }, 14 | "login": { 15 | "title": "𐌹𐌽𐌽𐍃𐍄𐌿𐌺𐌺𐌾𐌰𐌽", 16 | "register": "𐍃𐍄𐌿𐌺𐌺𐌾𐌰𐌽", 17 | "username": "𐌲𐌰𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌰𐌼𐍉", 18 | "email": "𐌰𐌻𐌾𐌰𐌼𐌴𐌻𐌴𐌹𐌽𐍃 𐍂𐌰𐌱𐌴𐌹𐌽𐌰", 19 | "invite": "𐌺𐍉𐌳𐌰𐌹𐌺𐍃 𐌻𐌰𐌸𐍉𐍃", 20 | "current_password": "𐌰𐌹𐌲𐌰𐌽𐌻𐌴𐌹𐌺𐍉 𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳", 21 | "enter": { 22 | "email": "𐌱𐌹𐌳𐌾𐌰 𐌴𐌼𐌰𐌹𐌻 𐌸𐌴𐌹𐌽 𐍄𐌴𐌷𐍄𐌼𐌴𐌻𐌴𐌹.", 23 | "password": "𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳 𐌸𐌴𐌹𐌽 𐍄𐌴𐌷𐍄𐌼𐌴𐌻𐌴𐌹.", 24 | "username": "𐌲𐌰𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌰𐌼𐍉 𐌸𐌴𐌹𐌽 𐍄𐌴𐌷𐍄𐌼𐌴𐌻𐌴𐌹.", 25 | "invite": "𐌻𐌰𐌸𐌰𐌺𐍉𐌳𐌰𐌹𐌺𐍃 𐌸𐌴𐌹𐌽𐍃 𐍄𐌴𐌷𐍄𐌼𐌴𐌻𐌴𐌹.", 26 | "current_password": "𐌰𐌹𐌲𐌰𐌽𐌻𐌴𐌹𐌺𐍉 𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳 𐌸𐌴𐌹𐌽 𐍄𐌴𐌷𐍄𐌼𐌴𐌻𐌴𐌹." 27 | }, 28 | "forgot": "𐌿𐍆𐌰𐍂𐌼𐌿𐌽𐌽𐍉𐌳𐌴𐍃 𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳 𐌸𐌴𐌹𐌽?", 29 | "reset": "𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽.", 30 | "set_password": "𐌽𐌹𐍅𐌹 𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳 𐍃𐌰𐍄𐌾𐌰𐌽.", 31 | "new": "𐌽𐌹𐌿𐌾𐌹𐍃 𐌰𐌽𐌰 𐍂𐌴𐍅𐍉𐌻𐍄?", 32 | "password": "𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳", 33 | "remembered": "𐌳𐌿 𐌹𐌽𐌽𐍃𐍄𐌿𐌺𐌺𐌰 𐍆𐌴𐍂𐌰𐌹 𐌰𐍆𐍄𐍂𐌰𐌵𐌹𐌼𐌰𐌽.", 34 | "welcome": "𐍅𐌹𐌻𐌾𐌰𐌵𐌹𐌼𐌰!", 35 | "welcome2": "𐌷𐌰𐌹𐌻𐍃!", 36 | "new_password": "𐌻𐌿𐌺𐌹𐌻𐌰𐍅𐌰𐌿𐍂𐌳 𐌽𐌹𐍅𐌹" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /tlh-qaak.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": { 3 | "register": "bIqI'", 4 | "password": "chaw' ngoq", 5 | "new_password": "mu'wIj", 6 | "welcome2": "nuqneH!", 7 | "username": "pong", 8 | "title": "QonoS", 9 | "welcome": "yI'el!", 10 | "log_out_other": "Hutlh qo'vaD nob", 11 | "enter": { 12 | "new_password": "pa' 'entepray' 'enqIyDu", 13 | "email": "'ach duDlIj yIchID.", 14 | "username": "bIjangtaHvIS, ghopDaj'e'.", 15 | "password": "pa' 'etlhDaj ngo'qu'lI' 'engmey.", 16 | "invite": "bImejtaHvIS, jup", 17 | "current_password": "pe'Ijpu'lI' mu'tlheghmey neH" 18 | }, 19 | "recovery": "bIr", 20 | "totp": "nIHwI'", 21 | "subtitle2": "mIw'a' latlh yIchaw'chugh", 22 | "existing": "johpu'' bIH, qar'a'?", 23 | "create": "mIw'a' latlh yIchenmoH", 24 | "resend": "layerteS", 25 | "check_mail": "qeylIS!", 26 | "cancel": "tlhaw'DIyuS", 27 | "open_mail_provider": "ghIt {{provider}}", 28 | "successful_registration": "motlh mIghqu' Dotlhmey!", 29 | "email_delay": "pImchoH 'ej jItamchoH 'ej jIHvaD 'e' yIchaw'.", 30 | "check_spam": "'ej qo' DaghajmoHlaHchugh vaj puqloD", 31 | "email": "maSIl", 32 | "current_password": "qurgh", 33 | "invite": "tuq", 34 | "subtitle": "pa' yIyuSHa'Qo'", 35 | "reset": "polonyuS", 36 | "set_password": "ghe''or leng", 37 | "remembered": "maj yIghoSDo'", 38 | "forgot": "qaStaHvIS ramjep, joH quv.", 39 | "new": "reynalDo?", 40 | "missing_verification": "Hegh rur'a' ghu'vetlh?" 41 | }, 42 | "general": { 43 | "about": "'Antu'", 44 | "tos": "bat'leth", 45 | "privacy": "pIb", 46 | "image_by": "jIlegh", 47 | "loading": "pagh'a' DuSaQ", 48 | "on": "Daq", 49 | "off": "Bej", 50 | "disabled": "QongDaq", 51 | "unavailable": "puqbe'chugh", 52 | "learn_more": "JISaH" 53 | }, 54 | "actions": { 55 | "submit": "lIy" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /be-Latn.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "tos": "Умовы выкарыстання", 4 | "image_by": "Аўтар малюнка", 5 | "loading": "Загрузка…", 6 | "on": "Вкл", 7 | "disabled": "Адключана", 8 | "learn_more": "Больш інфармацыі", 9 | "privacy": "Палітыка канфідэнцыяльнасці", 10 | "about": "Аб", 11 | "off": "Выкл", 12 | "unavailable": "Недаступна" 13 | }, 14 | "actions": { 15 | "submit": "Адправіць" 16 | }, 17 | "login": { 18 | "title": "Вход", 19 | "welcome": "Добры дзень!", 20 | "subtitle": "Войти в Revolt", 21 | "subtitle2": "Стварыць акаўнт", 22 | "username": "Імя карыстальніка", 23 | "password": "Пароль", 24 | "new_password": "Новы Пароль", 25 | "totp": "Прыкладанне для аўтэнтыфікацыі", 26 | "email": "Электронная пошта", 27 | "current_password": "Бягучы пароль", 28 | "log_out_other": "Выйсці з усіх іншых сесій", 29 | "enter": { 30 | "email": "Увядзіце электронную пошту.", 31 | "password": "Увядзіце свой пароль.", 32 | "new_password": "Увядзіце новы пароль.", 33 | "current_password": "Увядзіце ваш бягучы пароль.", 34 | "username": "Увядзіце імя карыстальніка.", 35 | "invite": "Увядзіце свой код запрашэння." 36 | }, 37 | "forgot": "Забыліся пароль?", 38 | "reset": "Аднавіць пароль", 39 | "remembered": "Вярнуцца да ўваходу", 40 | "new": "Упершыню ў Revolt?", 41 | "existing": "Ужо ёсць акаўнт?", 42 | "missing_verification": "Не прыйшоў ліст?", 43 | "resend": "Адправіць пацверджанне паўторна", 44 | "cancel": "Адмяніць запыт", 45 | "check_spam": "Праверце тэчку \"Спам\", калі не можаце знайсці ліст", 46 | "welcome2": "Прывет!", 47 | "register": "Зарэгістравацца", 48 | "recovery": "Код аднаўлення", 49 | "invite": "Код запрашэння", 50 | "set_password": "Усталюйце новы пароль", 51 | "create": "Стварыць новы акаўнт", 52 | "check_mail": "Праверце сваю электронную пошту!", 53 | "email_delay": "Мы адправілі вам на электронную пошту ліст для пацверджання. Калі ласка, пачакайце да 10 хвілін для яго атрымання.", 54 | "open_mail_provider": "Адкрыц {{provider}}", 55 | "successful_registration": "Вы паспяхова зарэгістраваліся!" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /dum.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "tos": "Servicevoorwaarden", 4 | "image_by": "Afbeelding door", 5 | "on": "Aan", 6 | "off": "Uit", 7 | "unavailable": "Niet beschikbaar", 8 | "learn_more": "Meer informatie", 9 | "about": "Over", 10 | "privacy": "Privacybeleid", 11 | "disabled": "Uitgeschakeld", 12 | "loading": "Bezig met laden…" 13 | }, 14 | "actions": { 15 | "submit": "Indienen" 16 | }, 17 | "login": { 18 | "title": "Log in", 19 | "welcome": "Welkom!", 20 | "welcome2": "Hallo!", 21 | "register": "Registereren", 22 | "username": "Gebruikersnaam", 23 | "email": "E-mail", 24 | "password": "Wachtwoord", 25 | "new_password": "Nieuw Wachtwoord", 26 | "totp": "Authenticatie App", 27 | "recovery": "Herstel Code", 28 | "invite": "Uitnodigingscode", 29 | "current_password": "Huidige Wachtwoord", 30 | "enter": { 31 | "password": "Voer uw wachtwoord in.", 32 | "new_password": "Voer een nieuw wachtwoord in.", 33 | "username": "Voer de gebruikersnaam van uw voorkeur in.", 34 | "email": "Voer uw e-mailadres in.", 35 | "invite": "Voer je uitnodigingscode in.", 36 | "current_password": "Voer je huidige wachtwoord in." 37 | }, 38 | "subtitle": "Meld u aan bij Revolt", 39 | "subtitle2": "Een account aanmaken", 40 | "log_out_other": "Afmelden bij alle andere sessies", 41 | "forgot": "Wachtwoord vergeten?", 42 | "reset": "Wachtwoord opnieuw instellen", 43 | "set_password": "nieuw wachtwoord instellen", 44 | "remembered": "Ga terug naar login", 45 | "new": "Nieuw bij Revolt?", 46 | "existing": "Heb je al een account?", 47 | "create": "Maak een nieuw account aan", 48 | "missing_verification": "Geen e-mail ontvangen?", 49 | "resend": "Verificatie opnieuw verzenden", 50 | "cancel": "Aanvraag annuleren", 51 | "check_mail": "Check je mail!", 52 | "email_delay": "Het kan tot 10 minuten duren voordat het aankomt.", 53 | "check_spam": "Controleer spam als u deze niet kunt vinden", 54 | "open_mail_provider": "Open {{provider}}", 55 | "successful_registration": "Succesvol geregistreerd!", 56 | "verifying_account": "Je account verifiëren…", 57 | "verified_account": "Uw account is geverifieerd!" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /nds.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "privacy": "Datenschutzrichtlinie", 4 | "image_by": "Bild von", 5 | "loading": "Laden…", 6 | "on": "An", 7 | "off": "Aus", 8 | "disabled": "Deaktiviert", 9 | "about": "Über", 10 | "tos": "Bedingungen för de Bruuk", 11 | "unavailable": "Nicht verfügbar", 12 | "learn_more": "Mehr Erfahren" 13 | }, 14 | "actions": { 15 | "submit": "Übermaken" 16 | }, 17 | "login": { 18 | "title": "Anmellen", 19 | "welcome": "Willkamen!", 20 | "subtitle": "Meld di an bi Revolt an", 21 | "welcome2": "Moin!", 22 | "subtitle2": "En Konto anlegg'n", 23 | "register": "Registreer di", 24 | "username": "Benutzernamen", 25 | "password": "Passwort", 26 | "new_password": "Nei Passwort", 27 | "totp": "Authentifizierungs-App", 28 | "recovery": "Erholungskood", 29 | "invite": "Inladungscode", 30 | "current_password": "Aktuelles Passwort", 31 | "enter": { 32 | "username": "Gib deinen bevorzugten Benutzernamen ein", 33 | "password": "Geef dien Passwort in.", 34 | "new_password": "Geef een niegen Passwort in.", 35 | "invite": "Giff dien Inladungscode in.", 36 | "current_password": "Geef dien aktuell Passwort in.", 37 | "email": "Bitte geef dien E-Mail-Adress in." 38 | }, 39 | "forgot": "Passwort vergäten?", 40 | "reset": "Passwort trüchsetten", 41 | "email": "E-Mail", 42 | "log_out_other": "Melden Sie sich von allen anderen Sitzungen ab", 43 | "set_password": "Stell en nieg Passwort in", 44 | "remembered": "Gaot torüch to Log-In", 45 | "existing": "Hast du al en Konto?", 46 | "email_delay": "Bitte gewähr di 10 Minuten Tied, bet dat ankommt.", 47 | "new": "Nie in Revolt west?", 48 | "create": "Mak dat Du en niegt Konto maakst", 49 | "missing_verification": "Hast du keen E-Mail kregen?", 50 | "resend": "Verifikatschoon reseten", 51 | "cancel": "Anfraag afbreken", 52 | "check_mail": "Kiek na dien E-Mail!", 53 | "open_mail_provider": "Öffne {{provider}}", 54 | "successful_registration": "Successvol inlöggelt!", 55 | "verifying_account": "Dien Konto warrt verifizeert…", 56 | "check_spam": "Kiek bitte in dien Spam-Ordner wenn du dat nich finnen kannst", 57 | "verified_account": "Dien Konto is verifieert worrn!", 58 | "verified_continue": "Weiter zur Anmeldung", 59 | "error": { 60 | "create": "Registrierung fehlgeschlagen!", 61 | "login": "Anmeldung fehlgeschlagen!", 62 | "reset": "Zurücksetzen fehlgeschlagen!", 63 | "resend": "Erneutes Senden fehlgeschlagen!", 64 | "verify": "Verifizierung fehlgeschlagen!" 65 | }, 66 | "unofficial_instance": "Drittanbieter-Instanz." 67 | }, 68 | "app": { 69 | "status": { 70 | "online": "Online", 71 | "idle": "Untätig", 72 | "focus": "Fokus", 73 | "busy": "Bitte nicht stören", 74 | "invisible": "Unsichtbar" 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /README.template.md: -------------------------------------------------------------------------------- 1 |
2 |

3 | Revolt Translations 4 | 5 | [![Stars](https://img.shields.io/github/stars/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/stargazers) 6 | [![Forks](https://img.shields.io/github/forks/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/network/members) 7 | [![Pull Requests](https://img.shields.io/github/issues-pr/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/pulls) 8 | [![Issues](https://img.shields.io/github/issues/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/issues) 9 | [![Contributors](https://img.shields.io/github/contributors/revoltchat/translations?style=flat-square)](https://github.com/DeclanChidlowRepo/Template/graphs/contributors) 10 | [![Licence](https://img.shields.io/github/license/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/blob/main/LICENCE) 11 |
12 | [![Revolt Server](https://img.shields.io/revolt/invite/01H14M0JCRWT52VW7BR1XH5Y5W?style=flat-square&label=revolt%20server)](https://rvlt.gg/translation) 13 | [![Weblate Projects](https://img.shields.io/weblate/projects?server=https%3A%2F%2Ftranslate.revolt.chat&style=flat-square 14 | )](https://translate.revolt.chat/projects) 15 | [![Weblate Users](https://img.shields.io/weblate/users?server=https%3A%2F%2Ftranslate.revolt.chat&style=flat-square 16 | )](https://translate.revolt.chat/user) 17 | [![Weblate Languages](https://img.shields.io/weblate/languages?server=https%3A%2F%2Ftranslate.revolt.chat&style=flat-square 18 | )](https://translate.revolt.chat/languages) 19 |

20 | The repo managing translations at Revolt. 21 |
22 |
23 | 24 | This repository contains translation files and acts as a way to handle and manage requests. You can help translate Revolt to new languages and improve existing translations on [Revolt's Weblate](https://translate.revolt.chat). 25 | 26 | > [!IMPORTANT] 27 | > **Don't** submit fixes or new translations via pull requests. Please only open a pull request if adding new strings to the source language (en_GB) or modifying the scripts contained within this repository. 28 | 29 | ## Languages 30 | 31 | The following table shows a list of languages, their contributors, and maintainers (people enlisted to verify that the language's translations are up to standard). 32 | 33 | Please note that this table **only includes languages that are currently available in the app**. If a language has been translated via Weblate and you want it to be added to the app, [please click here](https://github.com/revoltchat/frontend/issues/135). 34 | 35 | {{TABLE}} 36 | 37 | If you would like to maintain a language, please [open an issue](https://github.com/revoltchat/translations/issues/new/choose) with your request. 38 | 39 | ## What is a Maintainer? 40 | 41 | Maintainers gain access to the Reviewer role on Weblate. This permits them to approve new strings, edit approved strings, and accept new suggestions. They may also be mentioned in GitHub issues to approve badges for others. 42 | 43 | ![Approval UI](assets/approve_ui.png) 44 | 45 | If you're a maintainer and no longer wish to be one, please [open an issue](https://github.com/revoltchat/translations/issues/new). Note that you will remain on the contributions list. 46 | 47 | ## Repo-level Maintenance 48 | 49 | When adding badges to people, it must be done by editing the `contributors.json` file! 50 | -------------------------------------------------------------------------------- /li.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "unavailable": "Neet beshikbaar", 4 | "disabled": "Oetgezatte", 5 | "off": "Oet", 6 | "on": "Aan", 7 | "loading": "Bezig met laaie…", 8 | "image_by": "Foto van", 9 | "privacy": "Privacybeleid", 10 | "tos": "Serviceveurwaarde", 11 | "about": "Euver", 12 | "learn_more": "Léier méi" 13 | }, 14 | "login": { 15 | "title": "Inlogge", 16 | "username": "Gebroekersnaam", 17 | "email": "E-mailadres", 18 | "password": "Wachtwoord", 19 | "invite": "Oetneudigingscode", 20 | "current_password": "Huidige wachtwoord", 21 | "enter": { 22 | "email": "Vul dien e-mailadres in.", 23 | "password": "Vul dien wachtwoord in.", 24 | "invite": "Vul dien oetneudigingscode in.", 25 | "current_password": "Vul die huidige wachtwoord in.", 26 | "username": "Vul unne gebroekersnaam in." 27 | }, 28 | "reset": "Wachtwoord resetten.", 29 | "set_password": "Un nuuj wachtwoord instellen.", 30 | "new": "Bisse nuuj bie Revolt?", 31 | "existing": "Hub se al un account?", 32 | "create": "Un nuuj account aanmaken.", 33 | "missing_verification": "Gen e-mailadres?", 34 | "cancel": "Aanvroag annuleren.", 35 | "check_mail": "Kiek in diene mail.", 36 | "check_spam": "Missjien zit ut in diene spam", 37 | "open_mail_provider": "Oapen {{provider}}", 38 | "error": { 39 | "create": "Helaes, ut registreren lukte neet!", 40 | "login": "Helaes, ut inloggen lukte neet!", 41 | "reset": "Heleas, het resetten van dien wachtwoord lukte neet!", 42 | "resend": "Helaes, ut versturen van un nuuje activatiemail lukte neet!" 43 | }, 44 | "register": "Registreren", 45 | "forgot": "Bisse dien wachtwoord vergaete?", 46 | "remembered": "Truuk noar de login.", 47 | "resend": "De verificatie nog uns sturen.", 48 | "email_delay": "Wacht nog uns effkes veur 10 minuten. Ut kin effe duren.", 49 | "successful_registration": "Succesvol geregistreerd!", 50 | "subtitle": "Zeechen an Revolt", 51 | "unofficial_instance": "Drëtt Partei Versécherung.", 52 | "welcome": "Wëllkomm zréck!", 53 | "welcome2": "Hallo!", 54 | "subtitle2": "En account maachen", 55 | "recovery": "Erhuelung Code" 56 | }, 57 | "app": { 58 | "navigation": { 59 | "tabs": { 60 | "home": "Thoes", 61 | "friends": "Wieksers", 62 | "saved": "Aanteikeningen", 63 | "dev": "Ontwikkelaer", 64 | "unreads": "Ongelaezen" 65 | } 66 | }, 67 | "main": { 68 | "categories": { 69 | "participants": "Deilnehmers", 70 | "channels": "Kanalen", 71 | "members": "Leejen", 72 | "conversations": "Geproat" 73 | }, 74 | "channel": { 75 | "message_where": "Proat in {{channel_name}}", 76 | "message_who": "Proat mit {{person}}", 77 | "message_saved": "Opsloan als notitie", 78 | "uploading_file": "Uploaden…" 79 | } 80 | }, 81 | "status": { 82 | "busy": "Loat Mich Mit Rust", 83 | "online": "Online", 84 | "idle": "Aafwezig", 85 | "offline": "Weg", 86 | "invisible": "Onzichtbaar" 87 | }, 88 | "home": { 89 | "directs": "Direkt Messagen", 90 | "goto-testers": "Gitt op den Tester Server" 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /calculate.ts: -------------------------------------------------------------------------------- 1 | // deno run --allow-read --allow-write calculate.ts 2 | 3 | import contributors from './contributors.json' assert { type: 'json' }; 4 | 5 | // calculate % translated by looking at key counts 6 | function count(obj: any, acc = 0) { 7 | if (typeof obj === 'object') { 8 | for (const key in obj) { 9 | acc += count(obj[key]); 10 | } 11 | } 12 | 13 | return acc + 1; 14 | } 15 | 16 | const threshold = count(JSON.parse(await Deno.readTextFile('en.json'))) - 50; 17 | const below_threshold = []; 18 | 19 | for await (const entry of Deno.readDir('.')) { 20 | const fn = entry.name; 21 | if (fn.endsWith('.json')) { 22 | if (fn === 'contributors.json') continue; 23 | console.log('Processing', fn); 24 | 25 | const text = await Deno.readTextFile(fn); 26 | const data = JSON.parse(text); 27 | 28 | if (count(data) < threshold) { 29 | below_threshold.push(fn.split('.')[0]); 30 | } 31 | } 32 | } 33 | 34 | await Deno.writeTextFile("incomplete.js", 'export default ' + JSON.stringify(below_threshold, undefined, '\t')); 35 | 36 | // write verified translations to file 37 | await Deno.writeTextFile("verified.js", 'export default ' + JSON.stringify(Object.keys(contributors).filter(x => contributors[x].maintainer.length > 0), undefined, '\t')); 38 | 39 | // generate new README 40 | import { Languages } from './Languages.ts'; 41 | 42 | const u = (s) => `[@${s}](https://github.com/${s})`; 43 | 44 | const table = `| | Language | Maintainers | Contributors | 45 | |:-:|---|---|---| 46 | ${Object.keys(Languages) 47 | .map(key => { 48 | const lang = Languages[key]; 49 | const maintainers = [], contribs = []; 50 | 51 | const entry = contributors[key]; 52 | if (entry) { 53 | for (const user of entry.users) { 54 | if (entry.maintainer.includes(user.github)) { 55 | maintainers.push(user.github); 56 | } else { 57 | contribs.push(user.github); 58 | } 59 | } 60 | } 61 | 62 | return `|${lang.emoji}|${lang.display} / ${key}|${maintainers.map(u).join(' ')}|${contribs.map(u).join(' ')}|`; 63 | }) 64 | .join('\n')}`; 65 | 66 | await Deno.writeTextFile("README.md", (await Deno.readTextFile("README.template.md")).replace(/{{TABLE}}/g, table)); 67 | 68 | /*| | Language | Maintainers | 69 | | :-: | ------------------ | ------------------------------------------------------ | 70 | | 🇬🇧 | English (UK) | [@insertish](https://github.com/insertish/) | 71 | | 🇩🇪 | German | [@janderedev](https://github.com/janderedev/) | 72 | | 🇸🇪 | Swedish | [@raggebatman](https://github.com/raggebatman) | 73 | | 🇭🇺 | Hungarian | [@f3rr31](https://github.com/f3rr31) | 74 | | | Central Kurdish | [@fanticwastaken](https://github.com/fanticwastaken) | 75 | | 🇧🇷 | Portugese (Brazil) | [@yanndere](https://github.com/yanndere) | 76 | | 🇫🇷 | French | [@Hades785](https://github.com/Hades785) | 77 | | | Breton | [@SperedAnveliour](https://github.com/SperedAnveliour) | 78 | | 🇱🇻 | Latvian | [@rMazeiks](https://github.com/rMazeiks) | 79 | | 🇸🇦 | Arabic | [@LedaThemis](https://github.com/LedaThemis) | 80 | | 🇷🇺 | Russian | [@div2005](https://github.com/div2005) | 81 | | 🇺🇦 | Ukranian | [@div2005](https://github.com/div2005) | 82 | | 🇪🇪 | Estonian | [@u032](https://github.com/u032) | 83 | | 🇵🇭 | Filipino | [@I2rys](https://github.com/I2rys) | 84 | | 🇮🇷 | Persian | [@DevEvil99](https://github.com/DevEvil99) |*/ -------------------------------------------------------------------------------- /ml.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "ഇതിനെ കുറിച്ച്", 4 | "tos": "നിബന്ധനകൾ", 5 | "privacy": "സ്വകാര്യതാനയം", 6 | "image_by": "ചിത്രത്തെക്കുറിച്ച്", 7 | "loading": "ഉടൻ വരുന്നു…", 8 | "on": "ഓൺ", 9 | "off": "ഓഫ്", 10 | "unavailable": "ലഭ്യമല്ല", 11 | "disabled": "പ്രവർത്തനരഹിതം", 12 | "learn_more": "കൂടുതലറിയാൻ" 13 | }, 14 | "login": { 15 | "title": "ലോഗിൻ", 16 | "register": "റെജിസ്റ്റർ ചെയ്യുകാ", 17 | "email": "ഇമെയിൽ", 18 | "password": "രഹസ്യ കോഡ്", 19 | "invite": "ക്ഷണ കോഡ്", 20 | "current_password": "നിലവിലെ രഹസ്യ കോഡ്", 21 | "forgot": "രഹസ്യ കോഡ് മറന്നോ?", 22 | "reset": "രഹസ്യ കോഡ് പുനസജ്ജമാക്കുക.", 23 | "enter": { 24 | "invite": "നിങ്ങളുടെ ക്ഷണ കോഡ് നൽകുക.", 25 | "current_password": "നിങ്ങളുടെ നിലവിലെ രഹസ്യ കോഡ് നൽകുക.", 26 | "password": "നിങ്ങളുടെ രഹസ്യ കോഡ് നൽകുക.", 27 | "username": "നിങ്ങളുടെ ഇഷ്ടപ്പെട്ട യൂസർനെയിം നൽകുക.", 28 | "email": "നിങ്ങളുടെ ഇമെയിൽ നൽകുക." 29 | }, 30 | "remembered": "തിരികെ ലോഗിൻ ചെയ്യുക.", 31 | "new": "റിവോൾട്ടിലേക്ക് പുതിയതാണോ?", 32 | "existing": "ഇതിനകം ഒരു അക്കൗണ്ട് ഉണ്ടോ?", 33 | "create": "പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക.", 34 | "resend": "വീണ്ടും പരിശോധിക്കുക.", 35 | "email_delay": "എത്തിച്ചേരാൻ 10 മിനിറ്റ് വരെ അനുവദിക്കുക.", 36 | "open_mail_provider": "തുറക്കുക {{provider}}", 37 | "successful_registration": "വിജയകരമായി രജിസ്റ്റർ ചെയ്തു!", 38 | "error": { 39 | "create": "രജിസ്റ്റർ ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു!", 40 | "resend": "വീണ്ടും അയയ്ക്കുന്നതിൽ പരാജയപ്പെട്ടു!", 41 | "login": "ലോഗിൻ ചെയ്യാനായില്ല!", 42 | "reset": "പുനtസജ്ജമാക്കുന്നതിൽ പരാജയപ്പെട്ടു!" 43 | }, 44 | "username": "ഉപയോക്തൃനാമം", 45 | "set_password": "പുതിയ രഹസ്യ കോഡ് സജ്ജമാക്കുക.", 46 | "cancel": "അഭ്യർത്ഥന റദ്ദാക്കുക.", 47 | "check_mail": "നിങ്ങളുടെ മെയിൽ പരിശോധിക്കുക.", 48 | "check_spam": "നിങ്ങളുടെ ഇമെയിലിൽ സ്‌പാം എന്നാ ഫോൾഡർ പരിശോദിക്കു", 49 | "missing_verification": "ഇമെയിൽ കിട്ടിയില്ലെയോ ?", 50 | "welcome2": "ഹലോ!", 51 | "subtitle2": "അക്കൗണ്ട് ഉണ്ടാക്കാൻ" 52 | }, 53 | "app": { 54 | "status": { 55 | "online": "ഓൺലൈൻ", 56 | "idle": "നിഷ്‌ക്രിയം", 57 | "invisible": "അദൃശ്യം", 58 | "offline": "ഓഫ്‌ലൈൻ", 59 | "busy": "ബുദ്ധിമുട്ടിക്കരുത്" 60 | }, 61 | "navigation": { 62 | "tabs": { 63 | "home": "ഹോം", 64 | "dev": "ഡെവലപ്പർ", 65 | "friends": "സുഹൃത്തുക്കൾ", 66 | "unreads": "വായിക്കാത്തവ", 67 | "saved": "സംരക്ഷിച്ച കുറിപ്പുകൾ" 68 | } 69 | }, 70 | "main": { 71 | "categories": { 72 | "conversations": "സംഭാഷണം", 73 | "participants": "പങ്കെടുക്കുന്നവർ", 74 | "channels": "ചാനലുകൾ", 75 | "members": "അംഗങ്ങൾ" 76 | }, 77 | "channel": { 78 | "message_who": "സന്ദേശം {{person}}", 79 | "message_saved": "നിങ്ങളുടെ കുറിപ്പുകളിലേക്ക് സംരക്ഷിക്കുക", 80 | "failed_upload": "അപ്‌ലോഡ് ചെയ്യാനായില്ല!", 81 | "attached_file": "അറ്റാച്ചുചെയ്ത {{filename}}", 82 | "typing": { 83 | "single": "{{ഉപയോക്താവ്}}", 84 | "several": "നിരവധി ആളുകൾ ടൈപ്പ് ചെയ്യുന്നു …", 85 | "multiple": "{{ഉപയോക്തൃലിസ്റ്റ്}} … {{ഉപയോക്താവ്}}" 86 | }, 87 | "system": { 88 | "user_joined": "{{ഉപയോക്താവ്}}", 89 | "user_left": "{{ഉപയോക്താവ്}}", 90 | "user_kicked": "{{ഉപയോക്താവ്}}", 91 | "user_banned": "{{ഉപയോക്താവ്}}" 92 | }, 93 | "message_where": "സന്ദേശം {{channel_name}}", 94 | "uploading_file": "അപ്‌ലോഡ് ചെയ്യുന്നു …" 95 | } 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /kw.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "A-dro", 4 | "disabled": "Evredhek", 5 | "off": "Dhe-ves", 6 | "on": "Eyn", 7 | "privacy": "polici Privetter", 8 | "image_by": "Aven bys", 9 | "loading": "Behyans…", 10 | "unavailable": "Ankavadow", 11 | "learn_more": "Dysk moy", 12 | "tos": "Termynyow devnydh" 13 | }, 14 | "login": { 15 | "email": "Ebost", 16 | "password": "Ger-tremena", 17 | "welcome": "Dynnargh!", 18 | "welcome2": "Dydh Da!", 19 | "register": "Kovskrifa", 20 | "username": "Honanieth usyer", 21 | "new_password": "Nowedh Ger-tremena", 22 | "title": "Omgelmi", 23 | "subtitle": "Revolt Omgelmi a-berth yn", 24 | "subtitle2": "Gwruthyl akont", 25 | "recovery": "Daswrians Kod", 26 | "invite": "Galow Kod", 27 | "current_password": "A'n jedh hedhyw Ger-tremena", 28 | "enter": { 29 | "username": "Entrewgh agas dewis hanow.", 30 | "email": "Entrewgh trigva ebost dien.", 31 | "password": "Entrewgh agas ger tremena.", 32 | "new_password": "Entrewgh agas ger nowedh tremena.", 33 | "invite": "Entrewgh agas galow kod.", 34 | "current_password": "Entrewgh agas ger a'n eur ma tremena." 35 | }, 36 | "forgot": "Ankevys agas tremena?", 37 | "reset": "Dassettya tremena", 38 | "remembered": "Dehweles rag omgelmi", 39 | "new": "Nowedh bys dhe Revolt?", 40 | "totp": "Gwiryonhe Towlen", 41 | "log_out_other": "Digelmi dhyworth arall esedhvosow", 42 | "set_password": "Gorra nowedh tremena" 43 | }, 44 | "actions": { 45 | "submit": "Pellhe" 46 | }, 47 | "app": { 48 | "settings": { 49 | "pages": { 50 | "account": { 51 | "change_field": "Chanj" 52 | }, 53 | "profile": { 54 | "title": "Profil", 55 | "info": "Kedhlow" 56 | }, 57 | "sessions": { 58 | "title": "Esedhogow" 59 | }, 60 | "audio": { 61 | "input_device": "Korrgowsell", 62 | "device_label_NA": "N/A", 63 | "button_retry": "Arta-assay" 64 | }, 65 | "appearance": { 66 | "title": "Mir", 67 | "theme": "Thema", 68 | "colours": { 69 | "title": "Kolorys" 70 | }, 71 | "display": { 72 | "default": "Defowt" 73 | } 74 | }, 75 | "plugins": { 76 | "title": "Ebilyansow", 77 | "delete_plugin": "Dileans" 78 | }, 79 | "experiments": { 80 | "title": "Arbrovow" 81 | }, 82 | "donate": { 83 | "title": "Vossawya" 84 | }, 85 | "bots": { 86 | "token": "Nos" 87 | }, 88 | "theme_shop": { 89 | "by": "bys", 90 | "category": { 91 | "saved": "Sawys" 92 | } 93 | }, 94 | "keybinds": { 95 | "title": "Chanjyellow an vysowek" 96 | }, 97 | "sync": { 98 | "title": "Kettermynegi" 99 | }, 100 | "notifications": { 101 | "title": "Notyans", 102 | "sounds": "Sonyow" 103 | }, 104 | "language": { 105 | "title": "Settyansow yeth" 106 | } 107 | } 108 | }, 109 | "status": { 110 | "reconnect": "Junya dhe arta" 111 | }, 112 | "navigation": { 113 | "tabs": { 114 | "home": "Anneth", 115 | "friends": "Karadowyon", 116 | "unreads": "Anparys", 117 | "saved": "Sawys Notednow", 118 | "dev": "Dysplegyer" 119 | } 120 | }, 121 | "home": { 122 | "directs": "Kevarwodhys Messajya desempis", 123 | "join-testers": "Omjunyewgh an apposyans leuren" 124 | } 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /co.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "Apprupositu", 4 | "tos": "Clausa", 5 | "privacy": "Pulizza di cunfidenzialità", 6 | "image_by": "Figura da", 7 | "loading": "Carichendu…", 8 | "learn_more": "Scuprì ne di più", 9 | "on": "Attivu", 10 | "off": "Spentu", 11 | "disabled": "Disattivatu", 12 | "unavailable": "Indispunibile" 13 | }, 14 | "actions": { 15 | "submit": "Invià" 16 | }, 17 | "login": { 18 | "title": "Cunnettati", 19 | "welcome": "Bè venutu!", 20 | "subtitle": "Cunnettassi à Revolt", 21 | "welcome2": "Salute!", 22 | "subtitle2": "Crià un contu", 23 | "register": "Registrassi", 24 | "username": "Pseudonimu", 25 | "email": "Currieru elettronicu", 26 | "password": "Parulla d'intesa", 27 | "new_password": "Nova parulla d'intesa", 28 | "totp": "Appiicazione d'autenticazione", 29 | "recovery": "Codice di ricuperu", 30 | "invite": "Codice d'invitu", 31 | "current_password": "Parulla d'intesa attuale", 32 | "log_out_other": "Scunnettassi da tutte l'altre sessione", 33 | "enter": { 34 | "username": "Inserisci u to pseudonimu prifiritu.", 35 | "email": "Inserisci u to currieru elettronicu.", 36 | "password": "Inserisci a to parulla d'intesa.", 37 | "new_password": "Inserisci una nova parulla d'intesa.", 38 | "invite": "Inserisci u to codice d'invitu.", 39 | "current_password": "Inserisci a to parulla d'intesa attuale." 40 | }, 41 | "forgot": "Hai scurdatu a to parulla d'intesa ?", 42 | "reset": "Cambià a parulla d'intesa", 43 | "set_password": "Dichjarà a nova parulla d'intesa", 44 | "remembered": "Vultà à l'accessu", 45 | "new": "Sì novu in Revolt ?", 46 | "existing": "Hai dighjà un contu ?", 47 | "create": "Crià un novu contu", 48 | "missing_verification": "Ùn hai recevutu un currieru elettronicu ?", 49 | "resend": "Mandà a verifica di novu", 50 | "cancel": "Cancellà a richiesta", 51 | "check_mail": "Verificheghja u to currieru elettrunicu !", 52 | "email_delay": "Vi avemu mandatu un currieru di verificazione. Puderia piglià sin'à 10 minuti per ghjunghje.", 53 | "check_spam": "Verificate u vostru documentale di spazzatura sè ùn a truvate", 54 | "open_mail_provider": "Apri {{provider}}", 55 | "successful_registration": "Registratu cù successu !", 56 | "verifying_account": "Verifichendu u vostru contu…", 57 | "verified_account": "U vostru contu hè statu verificatu !", 58 | "verified_continue": "Cuntinueghja à l’accessu", 59 | "error": { 60 | "create": "Registramentu faltatu !", 61 | "login": "Cunnessione faltata !", 62 | "reset": "Scambiamentu faltatu !", 63 | "resend": "Rimandu faltatu !", 64 | "verify": "Verificazione faltata !" 65 | }, 66 | "unofficial_instance": "Instanza di un terzu." 67 | }, 68 | "app": { 69 | "status": { 70 | "online": "Cunnessu", 71 | "idle": "In pausa", 72 | "focus": "Cuncentratu", 73 | "busy": "Ùn scumudà", 74 | "invisible": "Imbisibile", 75 | "offline": "Scunessu", 76 | "reconnect": "Cunnettassi di novu" 77 | }, 78 | "navigation": { 79 | "tabs": { 80 | "home": "Casa", 81 | "dev": "Prugrammatore", 82 | "friends": "Amichi", 83 | "unreads": "Da leghje", 84 | "saved": "Note Salvate" 85 | } 86 | }, 87 | "home": { 88 | "join-testers": "Ghjunghjite u servore di i \"pruvatori\"", 89 | "goto-testers": "Andate à u servore di i \"pruvatori\"", 90 | "directs": "Missaghji Diretti", 91 | "join-testers_desc": "Pudete signalà i prublemi è scuntizà di migliuramenti cun noi direttamente quì.", 92 | "goto-testers_desc": "Pudete signalà i prublemi è scuntizà di migliuramenti cun noi direttamente quì.", 93 | "donate": "Date à Revolt", 94 | "donate_desc": "Aiutate u prughjettu ramazzè à un donu - À ringraziavvi!", 95 | "feedback": "Date un ritornu à nantu à Revolt", 96 | "settings": "Apre preferenze", 97 | "feedback_desc": "Fate ci sapè cume pudemu amendà a nostra appiicazione cù un ritornu." 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /is.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "Um", 4 | "tos": "Skilmálar", 5 | "privacy": "Persónuverndarstefna", 6 | "off": "Af", 7 | "learn_more": "Læra meira", 8 | "image_by": "Mynd eftir", 9 | "loading": "Hleður…", 10 | "unavailable": "Ekki í boði", 11 | "on": "Á", 12 | "disabled": "Óvirkt" 13 | }, 14 | "actions": { 15 | "submit": "Senda inn" 16 | }, 17 | "login": { 18 | "title": "Skrá inn", 19 | "welcome": "Velkomin/n!", 20 | "welcome2": "Halló!", 21 | "register": "Nýskráning", 22 | "password": "Lykilorð", 23 | "current_password": "Núverandi Lykilorð", 24 | "subtitle2": "Nýskráning", 25 | "email": "Netfang", 26 | "new_password": "Nýtt Lykilorð", 27 | "username": "Notandanafn", 28 | "invite": "Boðkóði", 29 | "subtitle": "Skráðu þig inn í Revolt", 30 | "totp": "Auðkennisapp", 31 | "recovery": "Endurheimtarkóði", 32 | "enter": { 33 | "username": "Veldu notandanafn.", 34 | "email": "Sláðu inn netfangið þitt.", 35 | "password": "Sláðu inn lykilorðið þitt.", 36 | "new_password": "Sláðu inn nýtt lykilorð.", 37 | "invite": "Sláðu inn bodkóðann þinn.", 38 | "current_password": "Sláðu inn núverandi lykilorðið þitt." 39 | }, 40 | "forgot": "Týnt lykilorð?", 41 | "reset": "Endurnýja lykilorð", 42 | "set_password": "Veldu nýtt lykilorð", 43 | "remembered": "Aftur í innskráningu", 44 | "existing": "Ertu með aðgang?", 45 | "new": "Nýr notandi?", 46 | "create": "Nýskráning", 47 | "missing_verification": "Fékkstu ekki tölvupóst?", 48 | "resend": "Senda staðfestingu aftur", 49 | "cancel": "Hætta við", 50 | "check_mail": "Tékkaðu tölvupóstinn þinn!", 51 | "open_mail_provider": "Opna {{provider}}", 52 | "successful_registration": "Skráning tókst!", 53 | "verifying_account": "Við erum að staðfesta aðganginn þinn…", 54 | "verified_continue": "Halda áfram með innskráningu", 55 | "error": { 56 | "create": "Nýskráning tókst ekki!", 57 | "login": "Innskráning tókst ekki!", 58 | "resend": "Tókst ekki að senda aftur!", 59 | "verify": "Tókst ekki að staðfesta!", 60 | "reset": "Tókst ekki að endursetja!" 61 | }, 62 | "log_out_other": "Skráðu þig út úr öllum öðrum fundum", 63 | "verified_account": "Aðgangurinn þinn hefur verið staðfestur!", 64 | "check_spam": "Vinsamlegast tékkaðu ruslpóstinn þinn, ef þú finnur hana ekki", 65 | "email_delay": "Við sendum þér staðfestingu í tölvupósti. Það geta liðið allt að 10 mínútur þar til að hún kemur.", 66 | "unofficial_instance": "Tilvik þriðja aðila" 67 | }, 68 | "app": { 69 | "status": { 70 | "busy": "Ekki Trufla", 71 | "reconnect": "Endurtengja" 72 | }, 73 | "navigation": { 74 | "tabs": { 75 | "home": "Heim", 76 | "friends": "Vinir", 77 | "unreads": "Ólesið", 78 | "saved": "Vistaðar Athugasemdir", 79 | "dev": "Þróunaraðili" 80 | } 81 | }, 82 | "home": { 83 | "directs": "Bein Skilaboð", 84 | "join-testers_desc": "Þú getur tilkynnt galla og rætt endurbætur með okkur hér.", 85 | "goto-testers_desc": "Þú getur tilkynnt galla og rætt endurbætur með okkur hér.", 86 | "donate": "Gefðu til Revolt", 87 | "settings": "Opna stillingar", 88 | "settings-tooltip": "Þú getur líka hægri-smellt á notandaíkonið efst til vinstri, eða vinstri-smellt ef þú ert þegar á forsíðuni.", 89 | "discover": "Kanna Revolt", 90 | "group": "Stofna hóp", 91 | "group_desc": "Bjóddu öllum vinum þínum og nokkra vélmenni og haldið risa veislu.", 92 | "join-testers": "Taktu þátt í prufusamfélaginu", 93 | "goto-testers": "Fara í prufusamfélagið" 94 | }, 95 | "settings": { 96 | "pages": { 97 | "account": { 98 | "change_field": "Breyta", 99 | "title": "Minn Aðgangur" 100 | } 101 | } 102 | }, 103 | "main": { 104 | "categories": { 105 | "conversations": "Samtöl", 106 | "participants": "Þátttakendur", 107 | "channels": "Rásir", 108 | "members": "Meðlimir" 109 | }, 110 | "channel": { 111 | "message_where": "Senda skilaboð á {{channel_name}}", 112 | "message_who": "Senda skilaboð til @{{person}}", 113 | "message_saved": "Vista í þínum athugasemdum", 114 | "start": { 115 | "saved": "Þetta er byrjunin á þínum athugasemdum." 116 | } 117 | } 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /ne.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": { 3 | "new_password": "नया पासवर्ड", 4 | "email": "इमेल", 5 | "password": "पासवर्ड", 6 | "welcome": "हजुर लाई स्वागत छ !", 7 | "subtitle": "रिभोल्टमा साइन इन गर्नुहोस्", 8 | "title": "कृपया लगइन गर्नुहोस्", 9 | "register": "दर्ता गर्नुहोस्", 10 | "username": "प्रयोगकर्ता नाम", 11 | "invite": "निमन्त्रणा कोड", 12 | "enter": { 13 | "email": "कृपया आफ्नो ईमेल प्रविष्ट गर्नुहोस्।", 14 | "password": "कृपया आफ्नो पासवर्ड प्रविष्ट गर्नुहोस्।", 15 | "username": "तपाईंको प्रयोगकर्ता नाम प्रविष्ट गर्नुहोस्।", 16 | "new_password": "कृपया एक नयाँ पासवर्ड प्रविष्ट गर्नुहोस्।", 17 | "invite": "कृपया आफ्नो आमंत्रण कोड प्रविष्ट गर्नुहोस्।", 18 | "current_password": "कृपया आफ्नो हालको पासवर्ड प्रविष्ट गर्नुहोस्।" 19 | }, 20 | "set_password": "नयाँ पासवर्ड सेट गर्नुहोस्", 21 | "remembered": "लगइन मा फर्कनुहोस्", 22 | "existing": "पहिले नै खाता छ?", 23 | "check_mail": "आफ्नो इमेल चेक गर्नुहोस्!", 24 | "verified_account": "तपाईंको खाता प्रमाणित भयो!", 25 | "verified_continue": "लगइन गर्नुहोस्", 26 | "error": { 27 | "login": "लगइन गर्न सकिएन!", 28 | "resend": "पुन: पठाउन सकिएन!", 29 | "verify": "प्रमाणित गर्न सकिएन!", 30 | "reset": "रिसेट गर्न सकिएन!", 31 | "create": "हजुरलाई दर्ता गर्न सकिएन!" 32 | }, 33 | "totp": "अथेन्टिकेटर एप", 34 | "cancel": "अनुरोध रद्द गर्नुहोस्", 35 | "recovery": "रिकभरी कोड", 36 | "current_password": "वर्तमान पासवर्ड", 37 | "log_out_other": "अन्य सभै सत्रबाट लगआउट गर्नुहोस्", 38 | "welcome2": "नमस्कार!", 39 | "subtitle2": "खाता खोल्नुहोस्", 40 | "forgot": "पासवर्ड बिर्सनुभयो?", 41 | "reset": "पासवर्ड रिसेट गर्नुहोस्", 42 | "new": "रिभोल्टमा नयाँ हुनुहुन्छ?", 43 | "create": "नयाँ खाता सिर्जना गर्नुहोस्", 44 | "missing_verification": "के इमेल प्राप्त गर्नुभएन?", 45 | "resend": "पुष्टिकरण पुनः पठाउनुहोस्", 46 | "email_delay": "हामीले तपाईंलाई प्रमाणीकरण ईमेल पठाएका छौं। ईमेल प्राप्त हुन १० मिनेट सम्म लाग्न सक्छ।", 47 | "check_spam": "यदि ईमेल भेटाउनुभएन भने तपाईंको स्पैम (spam) फोल्डरमा जाँच गर्नुहोस्", 48 | "successful_registration": "सफलतापूर्वक दर्ता गरियो!", 49 | "verifying_account": "तपाईंको खाता प्रमाणित गरिदै छ…", 50 | "open_mail_provider": "खोल्नुहोस् {{provider}}", 51 | "unofficial_instance": "तेस्रो पक्षको उदाहरण।" 52 | }, 53 | "general": { 54 | "learn_more": "थप जान्नुहोस", 55 | "about": "बारे", 56 | "tos": "सेवाका सर्तहरु", 57 | "privacy": "गोपनीयता नीति", 58 | "unavailable": "उपलब्ध छैन", 59 | "loading": "लोड हुँदैछ…", 60 | "disabled": "बन्द", 61 | "image_by": "चित्र पठाउने", 62 | "on": "उल्लेख गर्नुहोस्", 63 | "off": "उल्लेख नगर्नुहोस्" 64 | }, 65 | "actions": { 66 | "submit": "पेश गर्नुहोस्" 67 | }, 68 | "app": { 69 | "status": { 70 | "focus": "फोकस", 71 | "offline": "अफलाइन", 72 | "invisible": "अदृश्य", 73 | "reconnect": "पुन: जडान", 74 | "online": "अनलाइन", 75 | "idle": "निष्क्रिय", 76 | "busy": "कुनै पनि व्यवहार नगर्नुहोस्" 77 | }, 78 | "navigation": { 79 | "tabs": { 80 | "dev": "विकासकर्ता", 81 | "friends": "साथीहरु", 82 | "saved": "बचत गरिएका नोटहरू", 83 | "home": "गृह पृष्ठ", 84 | "unreads": "नपढिएको" 85 | } 86 | }, 87 | "home": { 88 | "goto-testers": "परीक्षक सर्भरमा जानुहोस्", 89 | "group": "एउटा समूह बनाउनुहोस्", 90 | "directs": "प्रत्यक्ष सन्देशहरू", 91 | "join-testers": "परीक्षक सर्भरमा सामेल हुनुहोस्", 92 | "join-testers_desc": "तपाईं यहाँ समस्याहरू रिपोर्ट गर्न र हामीसँग सिधै सुधारहरू छलफल गर्न सक्नुहुन्छ।", 93 | "goto-testers_desc": "तपाईं यहाँ समस्याहरू रिपोर्ट गर्न र हामीसँग सिधै सुधारहरू छलफल गर्न सक्नुहुन्छ।", 94 | "donate": "रिभोल्टलाई दान गर्नुहोस्", 95 | "donate_desc": "दान गरेर यस परियोजनालाई समर्थन गर्नुहोस् - धन्यवाद!", 96 | "feedback": "रिभोल्टमा प्रतिक्रिया दिनुहोस्", 97 | "feedback_desc": "हामीले हाम्रो एपलाई कसरी सुधार गर्न सक्छौं भनी हामीलाई प्रतिक्रिया दिएर थाहा दिनुहोस्।", 98 | "settings": "सेटिङ्हरू खोल्नुहोस्", 99 | "settings-tooltip": "तपाइँ माथि बायाँमा रहेको प्रयोगकर्ता आइकनमा दायाँ क्लिक गर्न सक्नुहुन्छ, वा यदि तपाइँ पहिले नै गृह पृष्ठमा हुनुहुन्छ भने यसलाई बायाँ क्लिक गर्नुहोस्।", 100 | "discover": "रिभोल्टको बारेमा थप पत्ता लगाउनुहोस्", 101 | "discover_desc": "तपाईंको शौक वा रुचिहरूमा आधारित समुदाय खोज्नुहोस्।", 102 | "group_desc": "तपाईंका सबै साथीहरू र केही सुन्दर बटहरूलाई निमन्त्रणा दिनुहोस्, र पार्टी गर्नुहोस्।" 103 | }, 104 | "main": { 105 | "categories": { 106 | "conversations": "कुराकानीहरू", 107 | "participants": "सहभागीहरू", 108 | "channels": "च्यानलहरू", 109 | "members": "सदस्यहरू" 110 | }, 111 | "channel": { 112 | "message_where": "सन्देश{{channel_name}}", 113 | "message_who": "सन्देश @{{person}}", 114 | "message_saved": "नोटमा सुरक्षित गर्नुहोस्", 115 | "uploading_file": "अपलोड गरिदै छ…", 116 | "failed_upload": "अपलोड गर्न सकिएन!", 117 | "attached_file": "संलग्न {{filename}}", 118 | "reactions": { 119 | "others_reacted": "{{userlist}} र {{count}} अन्यहरूले प्रतिक्रिया दिएका छन्।", 120 | "unknown_reacted": "\"{{count}} व्यक्तिहरूले प्रतिक्रिया दिएका छन्\"", 121 | "single_reacted": "१ व्यक्ति ले प्रतिक्रिया दिएका छन्" 122 | } 123 | } 124 | } 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /scripts/src/core.ts: -------------------------------------------------------------------------------- 1 | import { readFileSync, writeFileSync } from "fs"; 2 | import { Octokit } from "octokit"; 3 | 4 | import { ISO_MAP } from "./consts.js"; 5 | import "./env.js"; 6 | 7 | type Contributor = { 8 | id: string; 9 | github: string; 10 | weblate: string; 11 | }; 12 | 13 | type Language = { 14 | maintainer: string[]; 15 | users: Contributor[]; 16 | }; 17 | 18 | type ContributorList = { 19 | [key: string]: Language; 20 | }; 21 | 22 | type ParsedIssueObject = { 23 | languages: string[]; 24 | id: string; 25 | weblate: string; 26 | }; 27 | 28 | interface AddCommand { 29 | command: "add"; 30 | maintainer: boolean; 31 | issue: number; 32 | } 33 | 34 | type Command = AddCommand; 35 | 36 | async function readContributors() { 37 | console.log(`[FS] Fetching existing data...`); 38 | const buffer = readFileSync("../contributors.json"); 39 | const rawData = buffer.toString("utf8"); 40 | const data = JSON.parse(rawData) as ContributorList; 41 | console.log(`[FS] Fetched existing data!`); 42 | return data; 43 | } 44 | 45 | async function writeContributors(newDataObject: ContributorList) { 46 | console.log(`[FS] Saving new data...`); 47 | const newData = JSON.stringify(newDataObject, null, 4); 48 | writeFileSync("../contributors.json", newData); 49 | console.log(`[FS] Saved new data!`); 50 | } 51 | 52 | function parseLanguage(language: string) { 53 | let parsedLanguage; 54 | for (const l of ISO_MAP) { 55 | if (language.toLowerCase() === l.name) { 56 | parsedLanguage = l.code; 57 | } 58 | } 59 | return parsedLanguage ?? "unknown"; 60 | } 61 | 62 | function parseIssueBody(body: string, maintainer: boolean) { 63 | let newText = body; 64 | 65 | // make sure new lines are the correct format 66 | newText = newText.replaceAll(/\r/g, '\n'); 67 | // remove headers 68 | newText = newText.replace( 69 | /### What language\(s\) did you translate\?\n*/, 70 | "" 71 | ); 72 | newText = newText.replace( 73 | /### What language do you want to maintain\?\n*/, 74 | "" 75 | ); 76 | newText = newText.replace(/\n*### What is your Revolt ID\?\n*/, " | "); 77 | newText = newText.replace(/\n*### Revolt ID\n*/, " | "); 78 | newText = newText.replace(/\n*### Link to Weblate profile\n*/, " | "); 79 | 80 | // remove validations section 81 | newText = newText.replace(/\n### Validations\n*.*\n*.*/, ""); 82 | 83 | // extract Weblate username, then remove trailing slashes/new lines 84 | newText = newText.replace(/https:\/\/(weblate|translate)\.(insrt|revolt)\.(uk|chat)\/user\//, ""); 85 | newText = newText.replace(/\//, ""); 86 | newText = newText.replaceAll(/\n/g, ""); 87 | 88 | // convert it into an array, then parse the languages... 89 | const array = newText.split(" | "); 90 | const rawLanguages = array[0].split(", "); 91 | const languages = []; 92 | for (const l of rawLanguages) { 93 | const parsedLanguage = parseLanguage(l); 94 | if (parsedLanguage === "unknown") { 95 | console.error(`[PARSER] Unknown language ${l} found in issue body - this could be a typo from the issue author, a non-English name for the language or a missing language in the map`) 96 | } 97 | languages.push(parsedLanguage); 98 | } 99 | 100 | // ...and map everything into an object 101 | const finalObject = { 102 | languages: languages, 103 | id: maintainer ? array[2] : array[1], 104 | weblate: maintainer? array[1] : array[2], 105 | } as ParsedIssueObject; 106 | console.debug(`[PARSER] Parsed object: ${JSON.stringify(finalObject)}`); 107 | return finalObject; 108 | } 109 | 110 | export async function main(command: Command) { 111 | // read the contributors file 112 | const data = await readContributors(); 113 | 114 | // if the user wants to add a new contributor... 115 | if (command.command === "add") { 116 | // ...we log into github... 117 | const octokit = new Octokit({ 118 | auth: process.env.GITHUB_TOKEN, 119 | userAgent: "revolt-translations-scripts/v0.1.0", 120 | timeZone: "Europe/London", 121 | }); 122 | 123 | // ...and fetch the issue data... 124 | const issueData = await octokit.rest.issues.get({ 125 | owner: "revoltchat", 126 | repo: "translations", 127 | issue_number: command.issue, 128 | }); 129 | 130 | // ...then ensure the author exists/has been fetched... 131 | if (!issueData.data.user || issueData.data.user === null) { 132 | return console.error("[MAIN] Couldn't fetch issue author, or it was null") 133 | } 134 | 135 | // ...and check for the issue body... 136 | if (!issueData.data.body) { 137 | return console.error(`[MAIN] Couldn't fetch issue body/author`) 138 | }; 139 | 140 | // ...which is then parsed here 141 | const obj = parseIssueBody(`${issueData.data.body}`, command.maintainer); 142 | 143 | // we then create a contributor object from the parsed info... 144 | const newContributor = { 145 | id: obj.id, 146 | github: issueData.data.user.login, 147 | weblate: obj.weblate, 148 | }; 149 | 150 | console.debug(`[MAIN] Contributor object: ${JSON.stringify(newContributor)}`); 151 | 152 | // ...and add it to the language's contributor list 153 | for (const lang of obj.languages) { 154 | if (data[lang]) { 155 | var shouldPushObject = true; 156 | for (const c of data[lang].users) { 157 | if (c.github === newContributor.github) { 158 | console.log(command.maintainer ? 159 | `[MAIN] User already in ${lang} contributors list; only adding to maintainer list...` 160 | : `[MAIN] User already in ${lang} contributors list; skipping...`) 161 | shouldPushObject = false; 162 | } 163 | } 164 | if (command.maintainer) { 165 | if (!data[lang].maintainer.includes(newContributor.github)) { 166 | data[lang].maintainer.push(newContributor.github); 167 | } else { 168 | console.log(shouldPushObject ? `[MAIN] User already in ${lang} maintainers list; only adding to contributor list...` : `[MAIN] User already in ${lang} maintainers list; skipping...`) 169 | } 170 | } 171 | if (shouldPushObject) { 172 | data[lang].users.push(newContributor); 173 | } 174 | } 175 | } 176 | } 177 | 178 | await writeContributors(data); 179 | } 180 | 181 | /* 182 | * WEBLATE INFORMATION 183 | * WEB URL: POST https://weblate.insrt.uk/access/revolt/add/ 184 | * REQ DATA: "user" = username, plus CSRF token 185 | */ 186 | -------------------------------------------------------------------------------- /ota.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": { 3 | "subtitle2": "Bir hesap oluştur", 4 | "register": "Kayıt ol", 5 | "username": "Kullanıcı adı", 6 | "totp": "Kimlik Doğrulama Uygulaması", 7 | "missing_verification": "Herhangi bir email almadın mı?", 8 | "email_delay": "Size bir doğrulama e-postası gönderdik. Lütfen ulaşması için 10 dakikaya kadar bekleyin.", 9 | "error": { 10 | "resend": "Yeniden gönderme işlemi başarısız!", 11 | "create": "Kayıt işlemi başarısız!", 12 | "login": "Giriş işlemi başarısız!", 13 | "reset": "Sıfırlama işlemi başarısız!", 14 | "verify": "Doğrulama işlemi başarısız!" 15 | }, 16 | "title": "Giriş yap", 17 | "welcome": "Hoşgeldin!", 18 | "subtitle": "Revolt'a Giriş Yap", 19 | "welcome2": "Merhaba!", 20 | "email": "Email", 21 | "password": "Şifre", 22 | "new_password": "Yeni Şifre", 23 | "recovery": "Kurtarma Kodu", 24 | "invite": "Davet Kodu", 25 | "current_password": "Şuanki Şifre", 26 | "log_out_other": "Diğer bütün cihazlardan çıkış yap", 27 | "enter": { 28 | "username": "Tercih ettiğin kullanıcı adını gir.", 29 | "email": "Lütfen Email adresini gir.", 30 | "password": "Şifreni gir.", 31 | "new_password": "Yeni bir şifre gir.", 32 | "invite": "Davet kodunu gir.", 33 | "current_password": "Şuanki şifreni gir." 34 | }, 35 | "forgot": "Şifreni mi unuttun?", 36 | "reset": "Şifreni sıfırla", 37 | "set_password": "Yeni şifre belirle", 38 | "remembered": "Giriş'e geri dön", 39 | "new": "Revolt'da yeni misin?", 40 | "existing": "Zaten bir hesabın mı var?", 41 | "create": "Yeni bir hesap oluştur", 42 | "resend": "Doğrulama kodunu tekrar gönder", 43 | "cancel": "İsteği iptal et", 44 | "check_mail": "Email'ini kontrol et!", 45 | "check_spam": "Eğer bulamazsanız lütfen spam klasörünüzü kontrol edin", 46 | "open_mail_provider": "Aç {{provider}}", 47 | "successful_registration": "Başarıyla kayıt olundu!", 48 | "verifying_account": "Hesabınız doğrulanıyor…", 49 | "verified_account": "Hesabınız doğrulandı!", 50 | "verified_continue": "Giriş yapmaya devam et", 51 | "unofficial_instance": "Üçüncü taraf örneği." 52 | }, 53 | "app": { 54 | "status": { 55 | "online": "Çevrimiçi", 56 | "reconnect": "Yeniden bağlan", 57 | "idle": "Boşta", 58 | "focus": "Odaklanma", 59 | "busy": "Rahatsız Etmeyin", 60 | "invisible": "Görünmez", 61 | "offline": "Çevrimdışı" 62 | }, 63 | "home": { 64 | "join-testers_desc": "Sorunları bize doğrudan buradan bildirebilir ve iyileştirmeleri tartışabilirsiniz.", 65 | "feedback": "Revolt'da geri bildirimde bulunun", 66 | "settings-tooltip": "Ayrıca sol üstteki kullanıcı simgesine sağ tıklayabilir veya evdeyseniz sol tıklayabilirsiniz.", 67 | "directs": "Direkt mesajlar", 68 | "join-testers": "Test sunucusuna katılın", 69 | "goto-testers": "Test sunucusuna git", 70 | "goto-testers_desc": "Sorunları bize doğrudan buradan bildirebilir ve iyileştirmeleri tartışabilirsiniz.", 71 | "donate": "Revolt'a bağış yap", 72 | "donate_desc": "Bağış yaparak projeyi destekleyin - teşekkürler!", 73 | "feedback_desc": "Geri bildirimde bulunarak uygulamamızı nasıl geliştirebileceğimizi bize bildirin.", 74 | "settings": "Ayarları aç", 75 | "discover": "Revolt'u keşfet", 76 | "discover_desc": "Hobilerinize veya ilgi alanlarınıza göre bir topluluk bulun.", 77 | "group": "Bir grup oluştur", 78 | "group_desc": "Tüm arkadaşlarınızı ve birkaç harika botu davet edin ve büyük bir parti verin." 79 | }, 80 | "main": { 81 | "channel": { 82 | "message_saved": "Notlarına kaydet", 83 | "reactions": { 84 | "single_reacted": "1 kişi tepki gösterdi", 85 | "others_reacted": "{{userlist}} ve {{count}} diğerleri tepki gösterdi", 86 | "unknown_reacted": "{{count}} kişi tepki gösterdi", 87 | "people_reacted": "{{people}} tepki gösterdi" 88 | }, 89 | "system": { 90 | "user_left": "{{user}} Ayrıldı", 91 | "added_by": "{{user}} , {{other_user}} tarafından eklendi", 92 | "user_joined": "{{user}} Katıldı", 93 | "user_kicked": "{{user}} Atıldı", 94 | "user_banned": "{{user}} Yasaklandı", 95 | "removed_by": "{{user}} , {{other_user}} Tarafından silindi", 96 | "channel_renamed": "{{user}} , kanalın adını {{name}} olarak değiştirdi" 97 | }, 98 | "message_where": "Mesaj {{channel_name}}", 99 | "message_who": "Mesaj @{{person}}", 100 | "uploading_file": "Yükleniyor…", 101 | "failed_upload": "Yükleme başarısız!", 102 | "attached_file": "Ekli {{filename}}", 103 | "reply": { 104 | "replying": "Yanıtlanıyor", 105 | "toggle": "Yazar ping'ini Ayarla" 106 | }, 107 | "typing": { 108 | "single": "{{user}} Yazıyor…", 109 | "multiple": "{{userlist}} ve {{user}} Yazıyor…", 110 | "several": "Birkaç kişi yazıyor…" 111 | } 112 | }, 113 | "categories": { 114 | "conversations": "Konuşmalar", 115 | "participants": "Katılımcılar", 116 | "channels": "Kanallar", 117 | "members": "Üyeler" 118 | } 119 | }, 120 | "navigation": { 121 | "tabs": { 122 | "home": "Ev", 123 | "dev": "Geliştirici", 124 | "friends": "Arkadaşlar", 125 | "unreads": "Okunmayanlar", 126 | "saved": "Kaydedilen notlar" 127 | } 128 | } 129 | }, 130 | "general": { 131 | "tos": "Hizmet Şartları", 132 | "privacy": "Gizlilik Politikası", 133 | "image_by": "Resim tarafından", 134 | "loading": "Yükleniyor…", 135 | "on": "Aktif", 136 | "off": "Deaktif", 137 | "learn_more": "Daha fazla öğren", 138 | "about": "Hakkında" 139 | }, 140 | "actions": { 141 | "submit": "Gönder" 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /ang.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "Be", 4 | "tos": "T'rms of s'rvice", 5 | "privacy": "Díegolnes Policy", 6 | "image_by": "Onlicnes fore", 7 | "loading": "Loading…", 8 | "on": "To", 9 | "off": "ûtan", 10 | "disabled": "Unfêre", 11 | "unavailable": "Unavailable", 12 | "learn_more": "Wot moe" 13 | }, 14 | "app": { 15 | "settings": { 16 | "tips": { 17 | "sessions": { 18 | "b": "secureth thy account by changing thy passw'rd and using 2FA." 19 | } 20 | }, 21 | "pages": { 22 | "bots": { 23 | "public_bot_desc": "Wheth'r to alloweth oth'r us'rs to inviteth this bot." 24 | }, 25 | "feedback": { 26 | "bug_desc": "View currently factious bug rep'rts h're.", 27 | "issue_desc": "To holp us m're easily triage issues, thee can maketh an issue on GitHub." 28 | }, 29 | "sync": { 30 | "descriptions": { 31 | "locale": "This shall sync thy currently chosen language.", 32 | "theme": "This shall sync thy chosen theme, colours and any custom CSS." 33 | } 34 | }, 35 | "profile": { 36 | "placeholder": "Writeth something about yourself…" 37 | }, 38 | "appearance": { 39 | "color": { 40 | "light": "lighteth", 41 | "dark": "dark" 42 | } 43 | }, 44 | "audio": { 45 | "tip_retry": "Thee didn't giveth the p'rmission to access thy microphone, prithee {{retryBtn}}." 46 | } 47 | } 48 | }, 49 | "special": { 50 | "modals": { 51 | "prompt": { 52 | "confirm_leave_long": "Thee wonneth't beest able to rejoin unless thou art re-invit'd.", 53 | "confirm_close_dm_long": "Thee can re-open t lat'r but 'twill disappeareth on both sides.", 54 | "unfriend_user_long": "Thee may not beest able to talketh to those folk again until thee addeth those folk backeth." 55 | }, 56 | "signed_out": "Thee w're sign'd out!", 57 | "external_links": { 58 | "trust_domain": "Trusteth this domain" 59 | } 60 | }, 61 | "popovers": { 62 | "user_profile": { 63 | "badges": { 64 | "translator": "Translat'r" 65 | } 66 | } 67 | }, 68 | "requires_online": "Thee needeth to beest online to view this." 69 | }, 70 | "main": { 71 | "channel": { 72 | "typing": { 73 | "multiple": "{{userlist}} and {{user}} be scribing…", 74 | "single": "{{user}} be scribing…" 75 | }, 76 | "misc": { 77 | "no_sending": "Thee has't not p'rmission to sendeth messages in this channel." 78 | } 79 | } 80 | }, 81 | "home": { 82 | "donate": "[Donate]wiðerwinnan [Revolt]", 83 | "join-testers": "Befêgan dôð [testers] [server]", 84 | "feedback": "Tîðian [feedback] onuppan [Revolt]", 85 | "join-testers_desc": "Êower canne spellian [issues] swâðêana geondsmêagan [improvements] mid ûs of pro ic sôna hêr.", 86 | "goto-testers_desc": "Êower canne spellian [issues] swâðêana geondsmêagan [improvements] mid ûs of pro ic sôna hêr.", 87 | "donate_desc": "Fêdan duguð oferhlîfan fram from [donating] [-] wil−sum êow!", 88 | "directs": "Benemnan [messages]" 89 | }, 90 | "status": { 91 | "idle": "Unbeðyrfe", 92 | "busy": "Yfelian Nâteðæshwôn Dweald", 93 | "invisible": "Ungesýne" 94 | }, 95 | "navigation": { 96 | "tabs": { 97 | "home": "Heorð", 98 | "friends": "Frîend" 99 | } 100 | } 101 | }, 102 | "notifications": { 103 | "now_friends": "Thou art anon cater-cousins with @{{person}}!" 104 | }, 105 | "error": { 106 | "TooShort": "Too sh'rt", 107 | "TooLong": "Too longeth", 108 | "DeniedNotification": "Thee did deny notification access, checketh page settings.", 109 | "ReachedMaximumBots": "Thee've hath reached the maximum amount of bots.", 110 | "RenderFail": "Template rendering failed." 111 | }, 112 | "login": { 113 | "check_mail": "Wiðwinnan êower herew¯æd!", 114 | "error": { 115 | "reset": "Failed to reset ye!", 116 | "resend": "[failed] âsettan [resend]!", 117 | "login": "[failed] oðferian [login]!", 118 | "create": "[failed] stêpan [register]!" 119 | }, 120 | "enter": { 121 | "password": "Hladan êower lêafnesword.", 122 | "current_password": "Tredan and êower brimstrêam lêafnesword.", 123 | "invite": "R¯æran êower ingelaðian [code].", 124 | "username": "R¯æran êower [preferred] [username].", 125 | "email": "Bestæppan êower [email]." 126 | }, 127 | "missing_verification": "[Didn't] of−gân ealdgenîðla [email]?", 128 | "title": "[login]", 129 | "password": "Passgeweorc", 130 | "invite": "Ingelaðian [code]", 131 | "remembered": "Edhwyrfan oðtêon [login]", 132 | "new": "Nîwianwiðerwinnan [Revolt]?", 133 | "forgot": "[Forgot] êower lêafnesword?", 134 | "reset": "[Reset] lêafnesword", 135 | "set_password": "ðurhbregdan geong lêafnesword", 136 | "create": "Onstellan wiðerbreca eahtan", 137 | "cancel": "Undôn biddan", 138 | "email_delay": "Weldôn âl¯ætanoð pîcian [minutes] swâðêana sêbecuman becuman.", 139 | "check_spam": "Hagian wiðhabban [spam] heonu êow [can't] infindan hit hê", 140 | "open_mail_provider": "Gêap {{provider}}", 141 | "successful_registration": "W¯æwærðlic [registered]!", 142 | "welcome": "Willkommen!", 143 | "subtitle": "Segn binnan [Revolt]", 144 | "subtitle2": "Tâwian wiðerbreca scêad", 145 | "current_password": "Êastrêam Lêafnesword", 146 | "existing": "Hêrbeforan hæbbe ealdgenîðla eahtian?", 147 | "new_password": "Niewe Passgeweorc", 148 | "email": "Letter", 149 | "register": "Regester", 150 | "username": "Gebrucernama", 151 | "welcome2": "Hál!", 152 | "totp": "Tostyrnend App", 153 | "recovery": "Wihtsweord" 154 | }, 155 | "actions": { 156 | "submit": "Abugan" 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /mt.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "tos": "Termini tas-Servizz", 4 | "privacy": "Regoli tal-privatezza", 5 | "loading": "Tagħbija…", 6 | "on": "Mixgħul", 7 | "off": "Mitfi", 8 | "unavailable": "Ma jeżistix", 9 | "about": "Dwar il-proġett", 10 | "disabled": "Mitfi", 11 | "image_by": "Immaġni minn", 12 | "learn_more": "Informazzjoni Aktar" 13 | }, 14 | "login": { 15 | "title": "Idħol f'account", 16 | "welcome": "Merħba lura!", 17 | "subtitle": "Idħol f'Revolt", 18 | "welcome2": "Bongu!", 19 | "subtitle2": "Aghmel account", 20 | "register": "Aghmel account", 21 | "username": "Isem tal-utent", 22 | "password": "Il-Kodiċi", 23 | "enter": { 24 | "username": "Daħħal l-isem preferut tiegħek.", 25 | "password": "Daħħal il-password magħżula tiegħek,", 26 | "email": "Daħħal l-email tiegħek.", 27 | "invite": "Daħħal il-kodiċi tal-istedina tiegħek.", 28 | "current_password": "Daħħal il-password attwali tiegħek.", 29 | "new_password": "Daħħal password ġdħol" 30 | }, 31 | "set_password": "Agħmel password ġdida", 32 | "current_password": "Kodiċi kurrenti", 33 | "forgot": "Insejt il-password?", 34 | "email": "Email", 35 | "invite": "Stieden Kodiċi", 36 | "reset": "Irrisettja l-password", 37 | "remembered": "Mur lura għall-login", 38 | "new": "Ġdid għar-Revolt?", 39 | "existing": "Diġà għandek kont?", 40 | "create": "Oħloq kont ġdid", 41 | "missing_verification": "Ma rċevejtx email?", 42 | "resend": "Ibgħat mill-ġdid il-verifika", 43 | "cancel": "Ikkanċella t-talba", 44 | "check_mail": "Iċċekkja l-posta tiegħek!", 45 | "email_delay": "Jekk jogħġbok ħalli sa 10 minuti biex tasal.", 46 | "check_spam": "Jekk jogħġbok iċċekkja l-ispam jekk ma tistax issibha", 47 | "open_mail_provider": "Iftaħ {{provditur}}", 48 | "successful_registration": "irreġistrat b'suċċess", 49 | "error": { 50 | "create": "naqas milli jirreġistra!", 51 | "login": "naqas milli login!", 52 | "reset": "Naqas li reset!", 53 | "resend": "Naqas milli jerġa' jibgħat!", 54 | "verify": "Verifikazzjoni falliet!" 55 | }, 56 | "unofficial_instance": "Instanza terza parti", 57 | "log_out_other": "Ħalli Sessjonijiet Oħrajn Kollha", 58 | "new_password": "Password Ġdħol", 59 | "totp": "App Tal-Awtentikazzjoni", 60 | "recovery": "Kodi Tal-Ġimgħat", 61 | "verifying_account": "Verifikazzjoni tal-kont tiegħek…", 62 | "verified_account": "Il-kont tiegħek ġie verifikat!", 63 | "verified_continue": "Kompli jidħol fil-kont" 64 | }, 65 | "app": { 66 | "status": { 67 | "reconnect": "Erġa' qabbad", 68 | "online": "Online", 69 | "idle": "Idle", 70 | "busy": "Ittellifx", 71 | "invisible": "Inviżibbli", 72 | "offline": "Offline", 73 | "focus": "Fokus" 74 | }, 75 | "home": { 76 | "settings-tooltip": "Tista 'wkoll tikklikkja bil-lemin fuq l-ikona tal-utent fin-naħa ta' fuq tax-xellug, jew tikklikkja fuq ix-xellug jekk int diġà d-dar.", 77 | "discover_desc": "Sib komunità bbażata fuq il-passatempi jew l-interessi tiegħek.", 78 | "group": "Oħloq grupp", 79 | "group_desc": "Stieden lil sħabek kollha, xi bots friski, u agħmel festa kbira.", 80 | "join-testers": "Ingħaqad mas-server tat-testers", 81 | "join-testers_desc": "Tista' tirrapporta kwistjonijiet u tiddiskuti titjib magħna direttament hawn.", 82 | "goto-testers": "Mur fis-server tat-testers", 83 | "goto-testers_desc": "Tista' tirrapporta kwistjonijiet u tiddiskuti titjib magħna direttament hawn.", 84 | "directs": "Messaġġi Diretti", 85 | "donate_desc": "Appoġġa l-proġett billi tagħti donazzjoni - grazzi!", 86 | "feedback": "Agħti feedback dwar Revolt", 87 | "feedback_desc": "Għidilna kif nistgħu ntejbu l-app tagħna billi tagħtina feedback.", 88 | "settings": "Iftaħ is-settings", 89 | "donate": "Agħti donazzjoni lil Revolt", 90 | "discover": "Skopri Revolt" 91 | }, 92 | "main": { 93 | "categories": { 94 | "conversations": "Konversazzjonijiet", 95 | "participants": "Parteċipanti", 96 | "channels": "Kanali", 97 | "members": "Membri" 98 | }, 99 | "channel": { 100 | "message_where": "Messaġġ {{channel_name}}", 101 | "message_who": "Messaġġ {{persuna}}", 102 | "message_saved": "Ħlief fin-noti tiegħek", 103 | "uploading_file": "Qed ittella'…", 104 | "failed_upload": "Naqas milli ttella!", 105 | "attached_file": "Mehmuż {{filename}}", 106 | "reply": { 107 | "replying": "Twieġeb għal", 108 | "toggle": "Aqleb il-ping tal-awtur" 109 | }, 110 | "typing": { 111 | "single": "{{user}} qed ittajpja…", 112 | "multiple": "{{userlist}} u {{user}} qed jittajpja…", 113 | "several": "Diversi nies qed ittajpjaw…" 114 | }, 115 | "system": { 116 | "user_joined": "{{user}} ingħaqad", 117 | "user_left": "{{utent}} telaq", 118 | "channel_description_changed": "{{user}} biddel id-diskrizzjoni tal-kanal", 119 | "channel_renamed": "{{user}} biddel il-kanal għal {{name}}", 120 | "registered_at": "Rreġistrat {{time}}", 121 | "user_kicked": "{{user}} ġie bħallet", 122 | "user_banned": "{{user}} ġie bannat", 123 | "added_by": "ġie miżjud mill-{{other_user}}", 124 | "removed_by": "{{user}} ġie rimosso mill-{{other_user}}", 125 | "channel_icon_changed": "{{user}} biddel l-ikona tal-kanal", 126 | "channel_ownership_changed": "{{from}} ttella {{to}} l-għaxar titolu tal-grupp" 127 | }, 128 | "voice": { 129 | "leave": "Ivvjaħt", 130 | "connected": "Vokali konnessa", 131 | "mute": "Mutizza", 132 | "unmute": "Unmutizza" 133 | }, 134 | "start": { 135 | "group": "Dan huwa l-bidu tal-konversazzjoni tiegħek.", 136 | "saved": "Din il-bidu ta' noti tiegħek. traduċi għall-Malti" 137 | }, 138 | "misc": { 139 | "viewing_old": "Qarrej ta' messaġġi qodma", 140 | "jump_present": "Lur għal dik l-Attuali", 141 | "jump_beginning": "Lur għal bidu" 142 | } 143 | } 144 | }, 145 | "navigation": { 146 | "tabs": { 147 | "dev": "Żviluppatur", 148 | "friends": "Ħbieb", 149 | "unreads": "Mhux moqrija", 150 | "home": "Dar", 151 | "saved": "Noti Salvati" 152 | } 153 | } 154 | }, 155 | "actions": { 156 | "submit": "Ibgħat" 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /Languages.ts: -------------------------------------------------------------------------------- 1 | export enum Language { 2 | // English 3 | ENGLISH = "en", 4 | ENGLISH_STUPEFIED = "en_US", 5 | 6 | // Foreign Languages 7 | ARABIC = "ar", 8 | ASSAMESE = "as", 9 | AZERBAIJANI = "az", 10 | BELARUSIAN = "be", 11 | BULGARIAN = "bg", 12 | BENGALI = "bn", 13 | BRETON = "br", 14 | CATALONIAN = "ca", 15 | CEBUANO = "ceb", 16 | CENTRAL_KURDISH = "ckb", 17 | CZECH = "cs", 18 | DANISH = "da", 19 | GERMAN = "de", 20 | GREEK = "el", 21 | SPANISH = "es", 22 | SPANISH_LATIN_AMERICA = "es_419", 23 | ESTONIAN = "et", 24 | FINNISH = "fi", 25 | FILIPINO = "fil", 26 | FRENCH = "fr", 27 | IRISH = "ga", 28 | HINDI = "hi", 29 | CROATIAN = "hr", 30 | HUNGARIAN = "hu", 31 | ARMENIAN = "hy", 32 | INDONESIAN = "id", 33 | ICELANDIC = "is", 34 | ITALIAN = "it", 35 | JAPANESE = "ja", 36 | KOREAN = "ko", 37 | LUXEMBOURGISH = "lb", 38 | LITHUANIAN = "lt", 39 | MACEDONIAN = "mk", 40 | MALAY = "ms", 41 | NORWEGIAN_BOKMAL = "nb_NO", 42 | DUTCH = "nl", 43 | PERSIAN = "fa", 44 | POLISH = "pl", 45 | PORTUGUESE_BRAZIL = "pt_BR", 46 | PORTUGUESE_PORTUGAL = "pt_PT", 47 | ROMANIAN = "ro", 48 | RUSSIAN = "ru", 49 | SLOVAK = "sk", 50 | SLOVENIAN = "sl", 51 | ALBANIAN = "sq", 52 | SERBIAN = "sr", 53 | SINHALESE = "si", 54 | SWEDISH = "sv", 55 | TAMIL = "ta", 56 | THAI = "th", 57 | TURKISH = "tr", 58 | UKRANIAN = "uk", 59 | URDU = "ur", 60 | VENETIAN = "vec", 61 | VIETNAMESE = "vi", 62 | CHINESE_SIMPLIFIED = "zh_Hans", 63 | CHINESE_TRADITIONAL = "zh_Hant", 64 | LATVIAN = "lv", 65 | 66 | // Constructed Languages 67 | TOKIPONA = "tokipona", 68 | ESPERANTO = "esperanto", 69 | 70 | // Joke Languages 71 | OWO = "owo", 72 | PIRATE = "pr", 73 | BOTTOM = "bottom", 74 | LEET = "leet", 75 | PIGLATIN = "piglatin", 76 | ENCHANTMENT_TABLE = "enchantment", 77 | } 78 | 79 | export interface LanguageEntry { 80 | /** 81 | * What should appear in the UI as the name for the language 82 | */ 83 | display: string; 84 | 85 | /** 86 | * What emoji should be displayed 87 | */ 88 | emoji: string; 89 | 90 | /** 91 | * Filename of the related language file 92 | */ 93 | i18n: string; 94 | 95 | /** 96 | * Dayjs locale file if different 97 | */ 98 | dayjs?: string; 99 | 100 | /** 101 | * Whether the UI should be right-to-left 102 | */ 103 | rtl?: boolean; 104 | 105 | /** 106 | * Whether the language is a conlang (constructed language) or a joke 107 | */ 108 | cat?: "const" | "alt"; 109 | 110 | /** 111 | * Whether the language has a maintainer 112 | * (patched in) 113 | */ 114 | verified?: boolean; 115 | 116 | /** 117 | * Whether the language is incomplete 118 | * (patched in) 119 | */ 120 | incomplete?: boolean; 121 | } 122 | 123 | export const Languages: { [key in Language]: LanguageEntry } = { 124 | // English and "English" 125 | en: { 126 | display: "English (Traditional)", 127 | emoji: "🇬🇧", 128 | i18n: "en", 129 | dayjs: "en-gb", 130 | }, 131 | en_US: { 132 | display: "English (Simplified)", 133 | emoji: "🇺🇸", 134 | i18n: "en_US", 135 | dayjs: "en", 136 | }, 137 | 138 | // Foreign languages 139 | ar: { display: "عربي", emoji: "🇸🇦", i18n: "ar", rtl: true, verified: true }, 140 | as: { 141 | display: "অসমীয়া", 142 | emoji: "🇮🇳", 143 | i18n: "as", 144 | }, 145 | az: { display: "Azərbaycan dili", emoji: "🇦🇿", i18n: "az" }, 146 | be: { display: "Беларуская", emoji: "🇧🇾", i18n: "be" }, 147 | bg: { display: "Български", emoji: "🇧🇬", i18n: "bg" }, 148 | bn: { display: "বাংলা", emoji: "🇧🇩", i18n: "bn" }, 149 | br: { display: "Brezhoneg", emoji: "br", i18n: "br", verified: true }, 150 | ca: { display: "Català", emoji: "🇪🇸", i18n: "ca" }, 151 | ceb: { display: "Bisaya", emoji: "🇵🇭", i18n: "ceb" }, 152 | ckb: { 153 | display: "کوردی", 154 | emoji: "krd", 155 | i18n: "ckb", 156 | dayjs: "ku", 157 | }, 158 | cs: { display: "Čeština", emoji: "🇨🇿", i18n: "cs" }, 159 | da: { display: "Dansk", emoji: "🇩🇰", i18n: "da" }, 160 | de: { display: "Deutsch", emoji: "🇩🇪", i18n: "de", verified: true }, 161 | el: { display: "Ελληνικά", emoji: "🇬🇷", i18n: "el" }, 162 | es: { display: "Español", emoji: "🇪🇸", i18n: "es" }, 163 | es_419: { display: "Español (América Latina)", emoji: "🇪🇸", i18n: "es_419", dayjs: "es" }, 164 | et: { display: "eesti", emoji: "🇪🇪", i18n: "et", verified: true }, 165 | fi: { display: "suomi", emoji: "🇫🇮", i18n: "fi" }, 166 | fil: { 167 | display: "Filipino", 168 | emoji: "🇵🇭", 169 | i18n: "fil", 170 | dayjs: "tl-ph", 171 | }, 172 | fr: { display: "Français", emoji: "🇫🇷", i18n: "fr", verified: true }, 173 | ga: { display: "Gaeilge", emoji: "🇮🇪", i18n: "ga" }, 174 | hi: { display: "हिन्दी", emoji: "🇮🇳", i18n: "hi" }, 175 | hr: { display: "Hrvatski", emoji: "🇭🇷", i18n: "hr" }, 176 | hu: { display: "Magyar", emoji: "🇭🇺", i18n: "hu", verified: true }, 177 | hy: { display: "հայերեն", emoji: "🇦🇲", i18n: "hy" }, 178 | id: { display: "Bahasa Indonesia", emoji: "🇮🇩", i18n: "id" }, 179 | is: { display: "Íslenska", emoji: "🇮🇸", i18n: "is" }, 180 | it: { display: "Italiano", emoji: "🇮🇹", i18n: "it" }, 181 | ja: { display: "日本語", emoji: "🇯🇵", i18n: "ja" }, 182 | ko: { display: "한국어", emoji: "🇰🇷", i18n: "ko" }, 183 | lb: { display: "Lëtzebuergesch", emoji: "🇱🇺", i18n: "lb" }, 184 | lt: { display: "Lietuvių", emoji: "🇱🇹", i18n: "lt" }, 185 | lv: { display: "Latviešu", emoji: "🇱🇻", i18n: "lv", verified: true }, 186 | mk: { display: "Македонски", emoji: "🇲🇰", i18n: "mk" }, 187 | ms: { display: "Bahasa Melayu", emoji: "🇲🇾", i18n: "ms" }, 188 | nb_NO: { display: "Norsk bokmål", emoji: "🇳🇴", i18n: "nb_NO", dayjs: "nb" }, 189 | nl: { display: "Nederlands", emoji: "🇳🇱", i18n: "nl" }, 190 | fa: { display: "فارسی", emoji: "🇮🇷", i18n: "fa", verified: true }, 191 | pl: { display: "Polski", emoji: "🇵🇱", i18n: "pl" }, 192 | pt_BR: { 193 | display: "Português (do Brasil)", 194 | emoji: "🇧🇷", 195 | i18n: "pt_BR", 196 | dayjs: "pt-br", 197 | }, 198 | pt_PT: { 199 | display: "Português (Portugal)", 200 | emoji: "🇵🇹", 201 | i18n: "pt_PT", 202 | dayjs: "pt", 203 | }, 204 | ro: { display: "Română", emoji: "🇷🇴", i18n: "ro" }, 205 | ru: { display: "Русский", emoji: "🇷🇺", i18n: "ru", verified: true }, 206 | sk: { display: "Slovensky", emoji: "🇸🇰", i18n: "sk" }, 207 | sl: { display: "Slovenščina", emoji: "🇸🇮", i18n: "sl" }, 208 | sq: { display: "Shqip", emoji: "🇦🇱", i18n: "sq" }, 209 | sr: { display: "Српски", emoji: "🇷🇸", i18n: "sr" }, 210 | si: { display: "සිංහල", emoji: "🇱🇰", i18n: "si" }, 211 | sv: { display: "Svenska", emoji: "🇸🇪", i18n: "sv", verified: true }, 212 | ta: { display: "தமிழ்", emoji: "🇮🇳", i18n: "ta" }, 213 | th: { display: "ไทย", emoji: "🇹🇭", i18n: "th" }, 214 | tr: { display: "Türkçe", emoji: "🇹🇷", i18n: "tr" }, 215 | ur: { display: "اردو", emoji: "🇵🇰", i18n: "ur" }, 216 | uk: { display: "Українська", emoji: "🇺🇦", i18n: "uk", verified: true }, 217 | vec: { display: "Vèneto", emoji: "vec", i18n: "vec", dayjs: "en-gb" }, 218 | vi: { display: "Tiếng Việt", emoji: "🇻🇳", i18n: "vi" }, 219 | zh_Hans: { 220 | display: "简体中文", 221 | emoji: "🇨🇳", 222 | i18n: "zh_Hans", 223 | dayjs: "zh", 224 | }, 225 | zh_Hant: { 226 | display: "繁體中文", 227 | emoji: "🇹🇼", 228 | i18n: "zh_Hant", 229 | dayjs: "zh", 230 | }, 231 | 232 | // Constructed languages 233 | tokipona: { 234 | display: "Toki Pona", 235 | emoji: "🙂", 236 | i18n: "tokipona", 237 | dayjs: "en-gb", 238 | cat: "const", 239 | }, 240 | esperanto: { 241 | display: "Esperanto", 242 | emoji: "EO", 243 | i18n: "eo", 244 | dayjs: "eo", 245 | cat: "const", 246 | }, 247 | 248 | // Joke languages 249 | owo: { 250 | display: "OwO", 251 | emoji: "😸", 252 | i18n: "owo", 253 | dayjs: "en-gb", 254 | cat: "alt", 255 | }, 256 | pr: { 257 | display: "Pirate", 258 | emoji: "🏴‍☠️", 259 | i18n: "pr", 260 | dayjs: "en-gb", 261 | cat: "alt", 262 | }, 263 | bottom: { 264 | display: "Bottom", 265 | emoji: "🥺", 266 | i18n: "bottom", 267 | dayjs: "en-gb", 268 | cat: "alt", 269 | }, 270 | leet: { 271 | display: "1337", 272 | emoji: "💾", 273 | i18n: "leet", 274 | dayjs: "en-gb", 275 | cat: "alt", 276 | }, 277 | enchantment: { 278 | display: "Enchantment Table", 279 | emoji: "🪄", 280 | i18n: "enchantment", 281 | dayjs: "en-gb", 282 | cat: "alt", 283 | }, 284 | piglatin: { 285 | display: "Pig Latin", 286 | emoji: "🐖", 287 | i18n: "piglatin", 288 | dayjs: "en-gb", 289 | cat: "alt", 290 | }, 291 | }; 292 | -------------------------------------------------------------------------------- /es-419ES@419.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "privacy": "política de privacidad", 4 | "image_by": "Imagen de", 5 | "loading": "Cargando…", 6 | "on": "Prendido", 7 | "off": "Apagado", 8 | "disabled": "Desactivado", 9 | "unavailable": "No disponible", 10 | "learn_more": "Más información", 11 | "about": "Acerca de", 12 | "tos": "Terminos de servicio" 13 | }, 14 | "actions": { 15 | "submit": "Entregar" 16 | }, 17 | "login": { 18 | "title": "Iniciar sesión", 19 | "welcome": "¡Bienvenido!", 20 | "subtitle": "Iniciar sesión en Revolt", 21 | "welcome2": "¡Hola!", 22 | "subtitle2": "Crear una cuenta", 23 | "register": "Registro", 24 | "username": "Nombre de usuario", 25 | "email": "Correo electrónico", 26 | "password": "Contraseña", 27 | "new_password": "Nueva contraseña", 28 | "totp": "Aplicación de autenticación", 29 | "recovery": "Código de recuperación", 30 | "invite": "Código de invitación", 31 | "current_password": "Contraseña actual", 32 | "log_out_other": "Cerrar sesión en todas las demás sesiones", 33 | "enter": { 34 | "username": "Introduzca su nombre de usuario preferido.", 35 | "email": "Por favor, introduzca su correo electrónico.", 36 | "password": "Introduzca su contraseña.", 37 | "new_password": "Introduzca una nueva contraseña.", 38 | "current_password": "Introduzca su contraseña actual.", 39 | "invite": "Introduzca su código de invitación." 40 | }, 41 | "forgot": "¿Olvidaste tu contraseña?", 42 | "reset": "Restablecer contraseña", 43 | "set_password": "Establecer nueva contraseña", 44 | "remembered": "Regresar al inicio de sesión", 45 | "new": "¿Eres nuevo en Revolt?", 46 | "existing": "¿Ya tienes una cuenta?", 47 | "missing_verification": "¿No recibiste un correo electrónico?", 48 | "resend": "Reenviar verificación", 49 | "cancel": "Cancelar solicitud", 50 | "check_mail": "¡Revisa tu correo!", 51 | "email_delay": "Te enviamos un correo electrónico de verificación. Espera hasta 10 minutos para que llegue.", 52 | "check_spam": "Por favor revise su carpeta de correo no deseado si no lo encuentra", 53 | "open_mail_provider": "Abrir {{provider}}", 54 | "successful_registration": "¡Registrado exitosamente!", 55 | "verifying_account": "Verificando su cuenta…", 56 | "verified_account": "¡Tu cuenta ha sido verificada!", 57 | "verified_continue": "Continuar para iniciar sesión", 58 | "error": { 59 | "create": "¡Error al registrarse!", 60 | "login": "¡Error al iniciar sesión!", 61 | "reset": "¡Error al reiniciar!", 62 | "resend": "¡Error al reenviar!", 63 | "verify": "¡Error al verificar!" 64 | }, 65 | "unofficial_instance": "Instancia de terceros.", 66 | "create": "Crear una nueva cuenta" 67 | }, 68 | "app": { 69 | "status": { 70 | "online": "En línea", 71 | "idle": "Inactivo", 72 | "focus": "Enfocado", 73 | "busy": "No molestar", 74 | "invisible": "Invisible", 75 | "offline": "Desconectado", 76 | "reconnect": "Reconectando" 77 | }, 78 | "navigation": { 79 | "tabs": { 80 | "home": "Principal", 81 | "dev": "Desarrollador", 82 | "friends": "Amigos", 83 | "unreads": "No leídos", 84 | "saved": "Notas guardadas" 85 | } 86 | }, 87 | "home": { 88 | "directs": "Mensajes directos", 89 | "join-testers": "Únase al servidor de probadores", 90 | "join-testers_desc": "Puedes informar problemas y discutir mejoras con nosotros directamente aquí.", 91 | "goto-testers": "Ir al servidor de pruebas", 92 | "goto-testers_desc": "Puedes informar problemas y discutir mejoras con nosotros directamente aquí.", 93 | "donate": "Donar a Revolt", 94 | "donate_desc": "Apoye el proyecto con una donación: ¡gracias!", 95 | "feedback": "Dar una opinión sobre Revolt", 96 | "settings": "Abrir configuración", 97 | "settings-tooltip": "También puedes hacer clic derecho en el ícono de usuario en la parte superior izquierda, o hacer clic izquierdo si ya estás en casa.", 98 | "discover": "Descubre Revolt", 99 | "group": "Crear un grupo", 100 | "group_desc": "Invita a todos tus amigos, algunos bots geniales y organiza una gran fiesta.", 101 | "feedback_desc": "Permítanos saber cómo podemos mejorar nuestra aplicación enviándonos sus comentarios.", 102 | "discover_desc": "Encuentra una comunidad basada en tus pasatiempos o intereses." 103 | }, 104 | "main": { 105 | "categories": { 106 | "conversations": "Conversaciones", 107 | "participants": "Los participantes", 108 | "channels": "Canales", 109 | "members": "Miembros" 110 | }, 111 | "channel": { 112 | "message_where": "Mensaje {{channel_name}}", 113 | "message_who": "Mensaje @{{person}}", 114 | "message_saved": "Guardar en tus notas", 115 | "uploading_file": "Subiendo…", 116 | "failed_upload": "¡Error al cargar!", 117 | "attached_file": "Adjunto {{filename}}", 118 | "reactions": { 119 | "others_reacted": "{{userlist}} y {{count}} otros reaccionaron", 120 | "unknown_reacted": "{{count}} personas reaccionaron", 121 | "single_reacted": "1 persona reaccionó", 122 | "people_reacted": "{{people}} reaccionaron" 123 | }, 124 | "reply": { 125 | "replying": "Respondiendo a", 126 | "toggle": "Activar ping del autor" 127 | }, 128 | "typing": { 129 | "single": "{{user}} está escribiendo…", 130 | "multiple": "{{userlist}} y {{user}} están escribiendo…", 131 | "several": "Varias personas están escribiendo…" 132 | }, 133 | "system": { 134 | "user_joined": "{{user}} se unió", 135 | "user_left": "Se fue {{user}}", 136 | "user_kicked": "{{user}} fue expulsado", 137 | "user_banned": "{{user}} fue baneado", 138 | "added_by": "{{user}} fue agregado por {{other_user}}", 139 | "removed_by": "{{user}} fue eliminado por {{other_user}}", 140 | "channel_renamed": "{{user}} cambió el nombre del canal a {{name}}", 141 | "channel_description_changed": "{{user}} cambió la descripción del canal", 142 | "channel_icon_changed": "{{user}} cambió el ícono del canal", 143 | "channel_ownership_changed": "{{from}} dio {{to}} la propiedad del grupo", 144 | "registered_at": "Registrado {{time}}" 145 | }, 146 | "start": { 147 | "group": "Este es el comienzo de tu conversación.", 148 | "saved": "Aquí es donde comienzan tus notas." 149 | }, 150 | "voice": { 151 | "connected": "Voz conectada", 152 | "leave": "Dejar", 153 | "mute": "Silenciar", 154 | "unmute": "Dejar de silenciar" 155 | }, 156 | "misc": { 157 | "viewing_old": "Visualización de mensajes antiguos", 158 | "jump_present": "Saltar al presente", 159 | "jump_beginning": "Saltar al principio", 160 | "new_messages": "Nuevos mensajes desde {{time_ago}}", 161 | "spoiler_attachment": "Spoiler", 162 | "failed_load": "No se pudo cargar el mensaje.", 163 | "not_loaded": "Mensaje no cargado, haga clic para saltar", 164 | "no_sending": "No tienes permiso para enviar mensajes en este canal.", 165 | "timed_out": "Se agotó el tiempo de espera por {{time}}.", 166 | "blocked_messages": "{{count}} mensajes bloqueados", 167 | "blocked_user": "Usuario bloqueado", 168 | "sent_file": "Envió un archivo adjunto", 169 | "sent_multiple_files": "Enviar varios archivos adjuntos" 170 | } 171 | } 172 | } 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /te.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "గురించి", 4 | "tos": "సేవా నిబంధనలు", 5 | "loading": "లోడింగ్…", 6 | "unavailable": "అందుబాటులో లేదు", 7 | "image_by": "చిత్రం ద్వారా", 8 | "privacy": "గోప్యతా విధానం", 9 | "on": "పై", 10 | "off": "ఆఫ్", 11 | "disabled": "వికలాంగుడు", 12 | "learn_more": "మరింత సమాచారం" 13 | }, 14 | "login": { 15 | "title": "లోగిన్", 16 | "username": "వినియోగదారు పేరు", 17 | "email": "ఇమెయిల్", 18 | "password": "పాస్వర్డ్", 19 | "current_password": "ప్రస్తుతం ఉపయోగించచ్పా స్వర్డ్", 20 | "enter": { 21 | "username": "వినియోగదారు పేరు నమోదు చేయండి.", 22 | "invite": "మీ ఆహ్వాన కోడ్‌ని నమోదు చేయండి.", 23 | "current_password": "మీ ప్రస్తుత పాస్వర్డ్ ను ఎంటర్ చేయండి.", 24 | "email": "మీ ఇమెయిల్‌ను నమోదు చేయండి.", 25 | "password": "మీ పాస్వర్డ్ ని నమోదుచేయండి.", 26 | "new_password": "కొత్త పాస్ వర్డ్ నమోదు చేయండి." 27 | }, 28 | "successful_registration": "విజయవంతంగా నమోదు చేయబడింది!", 29 | "error": { 30 | "create": "నమోదు చేయడంలో విఫలమైంది!", 31 | "login": "లాగిన్ చేయడంలో విఫలమైంది!", 32 | "resend": "మళ్లీ పంపడంలో విఫలమైంది!", 33 | "reset": "రీసెట్ చేయడంలో విఫలమైంది!", 34 | "verify": "ధృవీకరించడం విఫలమైంది!" 35 | }, 36 | "welcome2": "హలో!", 37 | "subtitle2": "ఒక ఎకౌంటు సృష్టించు", 38 | "register": "నమోదు చేసుకోండి", 39 | "email_delay": "ఇది రావడానికి దయచేసి 10 నిమిషాల వరకు సమయం ఇవ్వండి.", 40 | "check_spam": "మీరు స్పామ్‌ని కనుగొనలేకపోతే దయచేసి దాన్ని తనిఖీ చేయండి", 41 | "forgot": "మీ పాస్వర్డ్ మర్చిపోయారా?", 42 | "welcome": "స్వాగతం!", 43 | "subtitle": "తిరుగుబాటుకు సైన్ ఇన్ చేయండి", 44 | "invite": "ఆహ్వాన కోడ్", 45 | "set_password": "కొత్త పాస్‌వర్డ్‌ని సెట్ చేయండి", 46 | "create": "కొత్త ఖాతాను సృష్టించండి", 47 | "resend": "ధృవీకరణను మళ్ళీ పంపు", 48 | "cancel": "అభ్యర్ధన రద్దు చెయ్యండి", 49 | "open_mail_provider": "{{provider}}ని తెరవండి", 50 | "remembered": "లాగిన్‌కి తిరిగి వెళ్లండి", 51 | "new": "తిరుగుబాటుకు కొత్త?", 52 | "reset": "రహస్యపదాన్ని మార్చుకోండి", 53 | "existing": "ఖాతా కలిగి ఉన్నారా?", 54 | "missing_verification": "ఇమెయిల్ అందలేదా?", 55 | "check_mail": "నీ మెయిల్ చూసుకో!", 56 | "log_out_other": "అన్ని ఇతర సెషన్ లను లాగ్ అవుట్ చేయండి", 57 | "recovery": "రికవరీ కోడ్", 58 | "totp": "Authenticator App", 59 | "new_password": "కొత్త పాస్ వర్డ్", 60 | "unofficial_instance": "థర్డ్ పార్టీ ఉదాహరణ..", 61 | "verifying_account": "మీ ఖాతాను ధృవీకరించడం…", 62 | "verified_account": "మీ ఖాతా ధృవీకరించబడింది!", 63 | "verified_continue": "లాగిన్ చేయడం కొనసాగించండి" 64 | }, 65 | "app": { 66 | "status": { 67 | "online": "ఆన్‌లైన్", 68 | "idle": "పనిలేకుండా", 69 | "busy": "డిస్టర్బ్ చేయకు", 70 | "offline": "ఆఫ్‌లైన్", 71 | "invisible": "అదృశ్య", 72 | "reconnect": "తిరిగి కనెక్ట్ చేయండి" 73 | }, 74 | "main": { 75 | "channel": { 76 | "system": { 77 | "user_left": "{{user}} వదిలేశారు", 78 | "user_joined": "{{user}} చేరారు", 79 | "channel_icon_changed": "{{user}} ఛానెల్ చిహ్నాన్ని మార్చారు", 80 | "user_kicked": "{{user}} తన్నాడు", 81 | "user_banned": "{{user}} నిషేధించబడింది", 82 | "added_by": "{{user}} ద్వారా జోడించబడింది {{other_user}}", 83 | "removed_by": "{{user}} ద్వారా తొలగించబడింది {{other_user}}", 84 | "channel_renamed": "{{user}} ఛానెల్ పేరు మార్చారు {{name}}", 85 | "channel_description_changed": "{{user}} ఛానెల్ వివరణను మార్చారు", 86 | "registered_at": "రిజిస్టర్ {{time}}", 87 | "channel_ownership_changed": "{{from}} {{to}} సమూహ యాజమాన్యాన్ని ఇచ్చింది" 88 | }, 89 | "misc": { 90 | "jump_beginning": "ప్రారంభానికి వెళ్లండి", 91 | "viewing_old": "పాత సందేశాలను వీక్షించడం", 92 | "jump_present": "ప్రస్తుతానికి వెళ్లండి", 93 | "spoiler_attachment": "స్పాయిలర్", 94 | "failed_load": "సందేశాన్ని లోడ్ చేయడం సాధ్యపడలేదు.", 95 | "no_sending": "ఈ ఛానెల్‌లో సందేశాలను పంపడానికి మీకు అనుమతి లేదు.", 96 | "blocked_messages": "{{count}} నిరోధించబడిన సందేశాలు", 97 | "new_messages": "అప్పటి నుండి కొత్త సందేశాలు {{time_ago}}", 98 | "load_file": "లోడ్ ఫైల్", 99 | "not_loaded": "సందేశం లోడ్ చేయబడలేదు, జంప్ చేయడానికి క్లిక్ చేయండి", 100 | "timed_out": "మీరు {{time}}కు సమయం కేటాయించారు.", 101 | "sent_file": "ఒక అటాచ్ మెంట్ పంపబడింది", 102 | "sent_multiple_files": "బహుళ అటాచ్ మెంట్ లను పంపారు" 103 | }, 104 | "typing": { 105 | "several": "చాలా మంది వ్యక్తులు టైప్ చేస్తున్నారు…", 106 | "single": "{{user}} టైప్ చేస్తోంది…", 107 | "multiple": "{{userlist}} మరియు {{user}} టైప్ చేస్తున్నార…" 108 | }, 109 | "start": { 110 | "saved": "ఇది మీ గమనికల ప్రారంభం.", 111 | "group": "ఇది మీ సంభాషణ ప్రారంభం." 112 | }, 113 | "failed_upload": "అప్‌లోడ్ చేయడంలో విఫలమైంది!", 114 | "attached_file": "జోడించబడింది {{filename}}", 115 | "uploading_file": "అప్‌లోడ్ చేస్తోంది…", 116 | "voice": { 117 | "connected": "వాయిస్ కనెక్ట్ చేయబడింది", 118 | "leave": "వదిలేయండి", 119 | "mute": "మ్యూట్ చేయండి", 120 | "unmute": "అన్‌మ్యూట్ చేయండి" 121 | }, 122 | "message_where": "సందేశం {{channel_name}}", 123 | "message_saved": "మీ గమనికలకు సేవ్ చేయండి", 124 | "message_who": "సందేశం {{person}}", 125 | "unknown_user": "<అ తెలియని వాడుకరి>", 126 | "edited": "(సవరించబడింది)", 127 | "reply": { 128 | "toggle": "టోగిల్ రచయిత పింగ్", 129 | "replying": "దీనికి రిప్లై ఇస్తూ" 130 | }, 131 | "nsfw": { 132 | "channel": { 133 | "marked": "ఈ ఛానల్ ఎన్ ఎస్ ఎఫ్ డబ్ల్యు గా మార్క్ చేయబడింది.", 134 | "confirm": "ఛానల్ నమోదు చేయండి" 135 | }, 136 | "confirm": "నా వయస్సు కనీసం 18 సంవత్సరాలు అని నేను ధృవీకరిస్తున్నాను." 137 | } 138 | }, 139 | "categories": { 140 | "conversations": "సంభాషణలు", 141 | "channels": "ఛానెల్‌లు", 142 | "members": "సభ్యులు", 143 | "participants": "పాల్గొనేవారు" 144 | } 145 | }, 146 | "home": { 147 | "directs": "ప్రత్యక్ష సందేశాలు", 148 | "join-testers": "టెస్టర్ సర్వర్‌లో చేరండి", 149 | "feedback": "తిరుగుబాటుపై అభిప్రాయాన్ని తెలియజేయండి", 150 | "settings": "సెట్టింగ్‌లను తెరవండి", 151 | "goto-testers": "టెస్టర్ సర్వర్‌కి వెళ్లండి", 152 | "donate": "తిరుగుబాటుకు విరాళం ఇవ్వండి", 153 | "settings-tooltip": "మీరు ఎగువ ఎడమ వైపున ఉన్న వినియోగదారు చిహ్నాన్ని కుడి-క్లిక్ చేయవచ్చు లేదా మీరు ఇప్పటికే ఇంట్లో ఉన్నట్లయితే దానిపై ఎడమ క్లిక్ చేయవచ్చు.", 154 | "social": "సర్వర్‌లు & బాట్‌లను కనుగొనండి", 155 | "join-testers_desc": "మీరు సమస్యలను నివేదించవచ్చు మరియు మెరుగుదలలను ఇక్కడ నేరుగా మాతో చర్చించవచ్చు.", 156 | "goto-testers_desc": "మీరు సమస్యలను నివేదించవచ్చు మరియు మెరుగుదలలను ఇక్కడ నేరుగా మాతో చర్చించవచ్చు.", 157 | "group": "ఒక సమూహాన్ని సృష్టించు", 158 | "discover_desc": "మీ అభిరుచులు లేదా ఆసక్తుల ఆధారంగా కమ్యూనిటీని కనుగొనండి.", 159 | "feedback_desc": "ఫీడ్ బ్యాక్ ఇవ్వడం ద్వారా మన యాప్ ని ఎలా మెరుగుపరుచుకోవచ్చో తెలుసుకుందాం.", 160 | "group_desc": "మీ స్నేహితులందరినీ ఆహ్వానించండి, కొంతమంది చల్లని బాట్స్, మరియు పెద్ద పార్టీ ఇవ్వండి.", 161 | "donate_desc": "విరాళం ఇవ్వడం ద్వారా ప్రాజెక్టుకు మద్దతు ఇవ్వండి - ధన్యవాదాలు!", 162 | "discover": "రివోల్ట్ ను కనుగొనండి" 163 | }, 164 | "navigation": { 165 | "tabs": { 166 | "home": "హోమ్", 167 | "dev": "డెవలపర్", 168 | "friends": "స్నేహితులు", 169 | "unreads": "చదవనివి", 170 | "saved": "సేవ్ చేసిన గమనికలు" 171 | } 172 | } 173 | }, 174 | "actions": { 175 | "submit": "సమర్పించు" 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /ur.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "بارے میں", 4 | "loading": "لوڈ ہو رہا ہے…", 5 | "off": "ختم", 6 | "tos": "خدمت کی شرائط", 7 | "privacy": "رازداری کی پالیسی", 8 | "image_by": "تصویر بذریعہ", 9 | "on": "شروع", 10 | "disabled": "معذور", 11 | "unavailable": "دستیاب نہیں ہے", 12 | "learn_more": "مزید جانیں" 13 | }, 14 | "actions": { 15 | "submit": "جمع کرائیں" 16 | }, 17 | "login": { 18 | "new_password": "نیا پاس ورڈ", 19 | "enter": { 20 | "new_password": "نیا پاسورڈ درج کریں.", 21 | "username": "اپنے یوزر نام کا اندراج کرو.", 22 | "email": "براہ کرم اپنا ای میل درج کریں۔", 23 | "password": "اپنا پاس ورڈ درج کریں.", 24 | "invite": "اپنا دعوتی کوڈ درج کریں۔", 25 | "current_password": "اپنا موجودہ پاس ورڈ درج کریں." 26 | }, 27 | "log_out_other": "دوسرے تمام سیشنز کو لاگ آؤٹ کریں", 28 | "subtitle": "بغاوت میں سائن ان کریں", 29 | "subtitle2": "کھاتا کھولیں", 30 | "title": "لاگ ان کریں", 31 | "username": "صارف نام", 32 | "email": "ای میل", 33 | "welcome": "خوش آمدید!", 34 | "welcome2": "ہیلو!", 35 | "register": "رجسٹر کریں", 36 | "invite": "بلانے کا اشارہ", 37 | "password": "پاس ورڈ", 38 | "current_password": "موجودہ خفیہ لفظ", 39 | "totp": "تصدیق کنندہ ایپ", 40 | "recovery": "ریکوری کوڈ", 41 | "error": { 42 | "resend": "دوبارہ بھیجنے میں ناکام!", 43 | "login": "لاگ ان کرنے میں ناکام!", 44 | "reset": "دوبارہ ترتیب دینے میں ناکام!", 45 | "create": "رجسٹر کرنے میں ناکام!", 46 | "verify": "توثیق کرنے میں ناکام!" 47 | }, 48 | "unofficial_instance": "تیسری پارٹی کی مثال۔", 49 | "reset": "پاس ورڈ ری سیٹ", 50 | "set_password": "نیا پاس ورڈ سیٹ کریں۔", 51 | "forgot": "اپنا پاس ورڈ بھول گئے؟", 52 | "new": "بغاوت کے لیے نئے؟", 53 | "existing": "پہلے سے ہی ایک اکاؤنٹ ہے؟", 54 | "create": "نیا اکاؤنٹ بنائیں", 55 | "resend": "تصدیق دوبارہ بھیجیں", 56 | "cancel": "درخواست منسوخ", 57 | "check_mail": "اپنا میل چیک کریں!", 58 | "check_spam": "اگر آپ اسے تلاش نہیں کرسکتے ہیں تو براہ کرم اسپام کو چیک کریں۔", 59 | "open_mail_provider": "کھولیں۔{{provider}}", 60 | "successful_registration": "کامیابی سے رجسٹرڈ!", 61 | "remembered": "لاگ ان پر واپس جائیں۔", 62 | "missing_verification": "ای میل موصول نہیں ہوئی؟", 63 | "email_delay": "براہ کرم اسے پہنچنے کے لیے 10 منٹ تک کا وقت دیں۔", 64 | "verifying_account": "آپ کے اکاؤنٹ کی تصدیق ہو رہی ہے…", 65 | "verified_account": "آپ کے اکاؤنٹ کی تصدیق ہو گئی ہے!", 66 | "verified_continue": "لاگ ان کرنا جاری رکھیں" 67 | }, 68 | "app": { 69 | "home": { 70 | "donate_desc": "عطیہ کرکے پروجیکٹ کی حمایت کریں - آپ کا شکریہ!", 71 | "directs": "براہ راست پیغامات", 72 | "join-testers": "ٹیسٹرز سرور میں شامل ہوں۔", 73 | "goto-testers": "ٹیسٹرز سرور پر جائیں۔", 74 | "goto-testers_desc": "آپ یہاں براہ راست ہمارے ساتھ مسائل کی اطلاع دے سکتے ہیں اور بہتری پر بات کر سکتے ہیں۔", 75 | "donate": "کو عطیہ کریں۔Revolt", 76 | "settings-tooltip": "آپ اوپر بائیں جانب صارف کے آئیکون پر بھی دائیں کلک کر سکتے ہیں، یا اگر آپ پہلے سے ہی گھر پر ہیں تو بائیں طرف کلک کر سکتے ہیں۔", 77 | "discover": "بغاوت دریافت کریں۔", 78 | "feedback": "بغاوت پر رائے دیں۔", 79 | "feedback_desc": "ہمیں رائے دے کر ہمیں بتائیں کہ ہم اپنی ایپ کو کیسے بہتر بنا سکتے ہیں۔", 80 | "settings": "ترتیبات کھولیں۔", 81 | "discover_desc": "اپنے مشاغل یا دلچسپیوں پر مبنی کمیونٹی تلاش کریں۔", 82 | "group": "ایک گروپ بنائیں", 83 | "group_desc": "اپنے تمام دوستوں کو مدعو کریں، کچھ ٹھنڈے بوٹس، اور ایک بڑی پارٹی دیں۔", 84 | "join-testers_desc": "آپ مسائل کی اطلاع دے سکتے ہیں اور ہمارے ساتھ براہ راست یہاں بہتری پر بات کر سکتے ہیں۔" 85 | }, 86 | "status": { 87 | "online": "آن لائن", 88 | "idle": "بیکار", 89 | "focus": "فوکس", 90 | "busy": "پریشان نہ کرو", 91 | "invisible": "غیر مرئی", 92 | "offline": "آف لائن", 93 | "reconnect": "دوبارہ جڑیں۔" 94 | }, 95 | "navigation": { 96 | "tabs": { 97 | "home": "گھر", 98 | "dev": "ڈویلپر", 99 | "friends": "دوستو", 100 | "unreads": "پڑھے بغیر", 101 | "saved": "محفوظ شدہ نوٹس" 102 | } 103 | }, 104 | "main": { 105 | "categories": { 106 | "participants": "امیدوار", 107 | "members": "ممبران", 108 | "conversations": "بات چیت", 109 | "channels": "چینلز" 110 | }, 111 | "channel": { 112 | "typing": { 113 | "multiple": "{{userlist}} اور {{user}} ٹائپ کر رہے ہیں…", 114 | "several": "کئی لوگ ٹائپ کر رہے ہیں…", 115 | "single": "{{user}} ٹائپ کر رہا ہے…" 116 | }, 117 | "system": { 118 | "user_joined": "{{user}} شامل ہوئے۔", 119 | "user_left": "{{user}} رہ گئے۔", 120 | "channel_icon_changed": "{{user}} نے چینل کا آئیکن تبدیل کر دیا۔", 121 | "user_kicked": "{{user}} کو لات مار دی گئی۔", 122 | "user_banned": "{{user}} پر پابندی لگا دی گئی۔", 123 | "added_by": "{{user}} کو {{other_user}} نے شامل کیا", 124 | "channel_description_changed": "{{user}} نے چینل کی تفصیل بدل دی۔", 125 | "removed_by": "{{user}} کو {{other_user}} نے ہٹا دیا", 126 | "channel_renamed": "{{user}} نے چینل کا نام {{name}} رکھ دیا", 127 | "channel_ownership_changed": "{{from}} نے {{to}} کو گروپ کی ملکیت دی۔", 128 | "registered_at": "رجسٹرڈ {{time}}" 129 | }, 130 | "misc": { 131 | "blocked_messages": "{{count}} مسدود پیغامات", 132 | "not_loaded": "پیغام لوڈ نہیں ہوا، چھلانگ لگانے کے لیے کلک کریں۔", 133 | "timed_out": "آپ کا وقت {{time}} کے لیے ختم ہو گیا ہے۔", 134 | "viewing_old": "پرانے پیغامات دیکھنا", 135 | "jump_present": "پیش کرنے کے لیے چھلانگ لگائیں۔", 136 | "jump_beginning": "شروع پر جائیں", 137 | "spoiler_attachment": "سپوئلر", 138 | "failed_load": "پیغام لوڈ نہیں ہو سکا۔", 139 | "no_sending": "آپ کو اس چینل میں پیغامات بھیجنے کی اجازت نہیں ہے۔", 140 | "sent_file": "ایک اٹیچمنٹ بھیجی۔", 141 | "load_file": "فائل لوڈ کریں۔", 142 | "sent_multiple_files": "متعدد منسلکات بھیجے۔", 143 | "new_messages": "{{time_ago}} سے نئے پیغامات", 144 | "blocked_user": "مسدود صارف" 145 | }, 146 | "message_where": "پیغام {{channel_name}}", 147 | "message_who": "پیغام {{person}}", 148 | "message_saved": "اپنے نوٹوں میں محفوظ کریں۔", 149 | "failed_upload": "اپ لوڈ کرنے میں ناکام!", 150 | "reply": { 151 | "replying": "کا جواب دے رہا ہے۔", 152 | "toggle": "مصنف پنگ کو ٹوگل کریں۔" 153 | }, 154 | "start": { 155 | "group": "یہ آپ کی گفتگو کا آغاز ہے۔", 156 | "saved": "یہ آپ کے نوٹوں کا آغاز ہے۔" 157 | }, 158 | "voice": { 159 | "leave": "چھوڑو", 160 | "unmute": "چالو کریں۔", 161 | "connected": "آواز منسلک ہے۔", 162 | "mute": "خاموش" 163 | }, 164 | "uploading_file": "اپ لوڈ ہو رہا ہے…", 165 | "attached_file": "منسلک {{filename}}", 166 | "unknown_user": "<نامعلوم صارف>", 167 | "edited": "(ترمیم شدہ)", 168 | "nsfw": { 169 | "channel": { 170 | "marked": "اس چینل کو کام کے لیے محفوظ نہیں کے بطور نشان زد کیا گیا ہے۔", 171 | "confirm": "چینل داخل کریں۔" 172 | }, 173 | "confirm": "میں تصدیق کرتا ہوں کہ میری عمر کم از کم 18 سال ہے۔" 174 | }, 175 | "bot": "بوٹ" 176 | } 177 | }, 178 | "context_menu": { 179 | "leave_server": "سرور چھوڑنا", 180 | "remove_friend": "دوست ہٹانا" 181 | } 182 | }, 183 | "keys": { 184 | "CapsLock": { 185 | "full": "کیپس لاک" 186 | } 187 | }, 188 | "error": { 189 | "Unavailable": "غیر مجاز۔" 190 | } 191 | } 192 | -------------------------------------------------------------------------------- /enm.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "About", 4 | "tos": "Terms of Service", 5 | "privacy": "Privacy Policy", 6 | "image_by": "Image by", 7 | "loading": "Loading…", 8 | "on": "On", 9 | "off": "Off", 10 | "unavailable": "Unavailable", 11 | "disabled": "Disabled", 12 | "learn_more": "More infromation" 13 | }, 14 | "login": { 15 | "title": "Login", 16 | "register": "Register", 17 | "username": "Username", 18 | "password": "Password", 19 | "invite": "Invite Code", 20 | "email": "Email", 21 | "current_password": "Current Password", 22 | "enter": { 23 | "username": "Enter your preferred username.", 24 | "email": "Please enter your email.", 25 | "password": "Enter your password.", 26 | "invite": "Enter your invite code.", 27 | "current_password": "Enter your current password." 28 | }, 29 | "forgot": "Forgot your password?", 30 | "reset": "Reset password.", 31 | "set_password": "Set a new password.", 32 | "remembered": "Go back to login.", 33 | "new": "New to Revolt?", 34 | "existing": "Already have an account?", 35 | "create": "Create a new account.", 36 | "missing_verification": "Noon email?", 37 | "resend": "Resend verification.", 38 | "cancel": "Cancel request.", 39 | "check_mail": "Check your mail.", 40 | "email_delay": "Please allow up to 10 minutes for it to arrive.", 41 | "check_spam": "Please check spam if you can't find it", 42 | "open_mail_provider": "Open {{provider}}", 43 | "successful_registration": "Successfully registered!", 44 | "error": { 45 | "create": "Failed to register!", 46 | "login": "Failed to login!", 47 | "reset": "Failed to reset!", 48 | "resend": "Failed to resend!" 49 | }, 50 | "welcome": "Welcome!", 51 | "welcome2": "Hello!", 52 | "subtitle2": "Sign up", 53 | "subtitle": "Sign into Revolt", 54 | "recovery": "Recovery Code", 55 | "new_password": "New Password", 56 | "totp": "Authenticator App", 57 | "log_out_other": "Log out of all other devices" 58 | }, 59 | "app": { 60 | "status": { 61 | "online": "Online", 62 | "idle": "Idle", 63 | "busy": "Do Not Disturb", 64 | "invisible": "Invisible", 65 | "offline": "Offline" 66 | }, 67 | "navigation": { 68 | "tabs": { 69 | "home": "Home", 70 | "dev": "Developer", 71 | "friends": "Friends", 72 | "unreads": "Unreads", 73 | "saved": "Saved Notes" 74 | } 75 | }, 76 | "main": { 77 | "categories": { 78 | "conversations": "Conversations", 79 | "participants": "Participants", 80 | "channels": "Channels", 81 | "members": "Members" 82 | }, 83 | "channel": { 84 | "message_where": "Message {{channel_name}}", 85 | "message_who": "Message {{person}}", 86 | "message_saved": "Save to your notes", 87 | "uploading_file": "Uploading…", 88 | "failed_upload": "Failed to upload!", 89 | "attached_file": "Attached {{filename}}", 90 | "typing": { 91 | "single": "{{user}} is typing…", 92 | "multiple": "{{userlist}} and {{user}} are typing…", 93 | "several": "Several people are typing…" 94 | }, 95 | "system": { 96 | "user_joined": "{{user}} joined", 97 | "user_left": "{{user}} left", 98 | "user_kicked": "{{user}} was kicked", 99 | "user_banned": "{{user}} was banned", 100 | "added_by": "{{user}} was added by {{other_user}}", 101 | "removed_by": "{{user}} was removed by {{other_user}}", 102 | "channel_icon_changed": "{{user}} changed the channel icon", 103 | "channel_renamed": "{{user}} renamed the channel to {{name}}", 104 | "channel_description_changed": "{{user}} changed the channel description" 105 | }, 106 | "start": { 107 | "group": "This is the start of your conversation.", 108 | "saved": "This is the start of your notes." 109 | }, 110 | "voice": { 111 | "connected": "Voice connected", 112 | "leave": "Leave", 113 | "mute": "Mute", 114 | "unmute": "Unmute" 115 | }, 116 | "misc": { 117 | "viewing_old": "Viewing older messages", 118 | "spoiler_attachment": "Spoiler", 119 | "failed_load": "Couldn't load message.", 120 | "no_sending": "You don't have permission to send messages in this channel.", 121 | "blocked_messages": "{{count}} blocked messages", 122 | "blocked_user": "Blocked User", 123 | "sent_file": "Sent an attachment", 124 | "sent_multiple_files": "Sent multiple attachments", 125 | "jump_present": "Jump to present" 126 | }, 127 | "nsfw": { 128 | "channel": { 129 | "confirm": "Enter Channel", 130 | "marked": "This channel is marked as NSFW." 131 | }, 132 | "confirm": "I confirm that I am at least 18 years old." 133 | }, 134 | "edited": "(edited)", 135 | "bot": "bot", 136 | "notifications": { 137 | "default": "Use Default", 138 | "mention": "Mentions Only", 139 | "none": "None", 140 | "muted": "Muted", 141 | "all": "All Messages" 142 | }, 143 | "search": { 144 | "title": "Search", 145 | "sort": { 146 | "relevance": "Relevance", 147 | "latest": "Latest", 148 | "oldest": "Oldest" 149 | } 150 | }, 151 | "unknown_user": "", 152 | "errors": { 153 | "title": "Oops, there's nothing here!", 154 | "nochannels": "This server has no channels, or you don't have access to any.", 155 | "nochannel": "No channel" 156 | } 157 | }, 158 | "groups": { 159 | "name": "Group Name", 160 | "description": "Group Description", 161 | "create": "Create a group", 162 | "owner": "Group Owner" 163 | }, 164 | "servers": { 165 | "create": "Create a server", 166 | "name": "Server Name", 167 | "description": "Server Description", 168 | "channel_type": "Channel Type", 169 | "channel_description": "Channel Description", 170 | "channel_name": "Channel Name", 171 | "custom_banner": "Custom Banner", 172 | "owner": "Server Owner", 173 | "text_channel": "Text Channel", 174 | "voice_channel": "Voice Channel" 175 | } 176 | }, 177 | "settings": { 178 | "categories": { 179 | "user_settings": "User Settings", 180 | "client_settings": "Client Settings" 181 | }, 182 | "title": "Settings", 183 | "actions": { 184 | "upload": "Lataa", 185 | "remove": "Poista", 186 | "max_filesize": "(max {{filesize}})" 187 | }, 188 | "pages": { 189 | "account": { 190 | "title": "My Account", 191 | "change_field": "Change", 192 | "2fa": { 193 | "description": "Add an extra layer of security by enabling 2FA on your account.", 194 | "add_auth": "Add Authenticator", 195 | "title": "Two-factor Authentication", 196 | "remove_auth": "Remove Authenticator" 197 | }, 198 | "unique_id": "This is a unique user identifier for your account." 199 | }, 200 | "notifications": { 201 | "enable_push": "Enable Push Notifications." 202 | } 203 | } 204 | } 205 | }, 206 | "actions": { 207 | "submit": "Submit" 208 | } 209 | } 210 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

3 | Revolt Translations 4 | 5 | [![Stars](https://img.shields.io/github/stars/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/stargazers) 6 | [![Forks](https://img.shields.io/github/forks/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/network/members) 7 | [![Pull Requests](https://img.shields.io/github/issues-pr/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/pulls) 8 | [![Issues](https://img.shields.io/github/issues/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/issues) 9 | [![Contributors](https://img.shields.io/github/contributors/revoltchat/translations?style=flat-square)](https://github.com/DeclanChidlowRepo/Template/graphs/contributors) 10 | [![Licence](https://img.shields.io/github/license/revoltchat/translations?style=flat-square)](https://github.com/revoltchat/translations/blob/main/LICENCE) 11 |
12 | [![Revolt Server](https://img.shields.io/revolt/invite/01H14M0JCRWT52VW7BR1XH5Y5W?style=flat-square&label=revolt%20server)](https://rvlt.gg/translation) 13 | [![Weblate Projects](https://img.shields.io/weblate/projects?server=https%3A%2F%2Ftranslate.revolt.chat&style=flat-square 14 | )](https://translate.revolt.chat/projects) 15 | [![Weblate Users](https://img.shields.io/weblate/users?server=https%3A%2F%2Ftranslate.revolt.chat&style=flat-square 16 | )](https://translate.revolt.chat/user) 17 | [![Weblate Languages](https://img.shields.io/weblate/languages?server=https%3A%2F%2Ftranslate.revolt.chat&style=flat-square 18 | )](https://translate.revolt.chat/languages) 19 |

20 | The repo managing translations at Revolt. 21 |
22 |
23 | 24 | This repository contains translation files and acts as a way to handle and manage requests. You can help translate Revolt to new languages and improve existing translations on [Revolt's Weblate](https://translate.revolt.chat). 25 | 26 | > [!IMPORTANT] 27 | > **Don't** submit fixes or new translations via pull requests. Please only open a pull request if adding new strings to the source language (en_GB) or modifying the scripts contained within this repository. 28 | 29 | ## Languages 30 | 31 | The following table shows a list of languages, their contributors, and maintainers (people enlisted to verify that the language's translations are up to standard). 32 | 33 | Please note that this table **only includes languages that are currently available in the app**. If a language has been translated via Weblate and you want it to be added to the app, [please click here](https://github.com/revoltchat/frontend/issues/135). 34 | 35 | | | Language | Maintainers | Contributors | 36 | |:-:|---|---|---| 37 | |🇬🇧|English (Traditional) / en|[@insertish](https://github.com/insertish)|| 38 | |🇺🇸|English (Simplified) / en_US||| 39 | |🇸🇦|عربي / ar|[@LedaThemis](https://github.com/LedaThemis)|[@vloddot](https://github.com/vloddot) [@AbdoDev](https://github.com/AbdoDev) [@DaRandomCube](https://github.com/DaRandomCube)| 40 | |🇮🇳|অসমীয়া / as||| 41 | |🇦🇿|Azərbaycan dili / az||| 42 | |🇧🇾|Беларуская / be|[@1enify](https://github.com/1enify)|| 43 | |🇧🇬|Български / bg||| 44 | |🇧🇩|বাংলা / bn|[@Cynycal2003](https://github.com/Cynycal2003)|| 45 | |br|Brezhoneg / br|[@SperedAnveliour](https://github.com/SperedAnveliour)|| 46 | |🇪🇸|Català / ca|[@khleyhub](https://github.com/khleyhub)|[@TallerThanShort](https://github.com/TallerThanShort)| 47 | |🇵🇭|Bisaya / ceb|[@zee-html](https://github.com/zee-html)|| 48 | |krd|کوردی / ckb|[@fanticwastaken](https://github.com/fanticwastaken)|[@NoLogicAlan](https://github.com/NoLogicAlan)| 49 | |🇨🇿|Čeština / cs|[@Fjuro](https://github.com/Fjuro)|[@Cikarin3](https://github.com/Cikarin3)| 50 | |🇩🇰|Dansk / da|[@krestenlaust](https://github.com/krestenlaust)|| 51 | |🇩🇪|Deutsch / de|[@sussycatgirl](https://github.com/sussycatgirl)|[@nitrobw](https://github.com/nitrobw) [@arktn](https://github.com/arktn) [@infi](https://github.com/infi) [@GoodestGoyim](https://github.com/GoodestGoyim)| 52 | |🇬🇷|Ελληνικά / el|[@SudoJanast](https://github.com/SudoJanast)|| 53 | |🇪🇸|Español / es|[@z3ro0k](https://github.com/z3ro0k) [@fernandopal](https://github.com/fernandopal) [@gatomod](https://github.com/gatomod)|[@Dorovich](https://github.com/Dorovich) [@DevArxify](https://github.com/DevArxify) [@undefined](https://github.com/undefined) [@Mathesito](https://github.com/Mathesito)| 54 | |🇪🇸|Español (América Latina) / es_419|[@7Macros](https://github.com/7Macros) [@gatomod](https://github.com/gatomod)|[@undefined](https://github.com/undefined) [@exelenuwu](https://github.com/exelenuwu)| 55 | |🇪🇪|eesti / et|[@Kentledge](https://github.com/Kentledge)|[@u032](https://github.com/u032) [@Lefromrevolt](https://github.com/Lefromrevolt)| 56 | |🇫🇮|suomi / fi|[@blarpdog](https://github.com/blarpdog)|| 57 | |🇵🇭|Filipino / fil|[@I2rys](https://github.com/I2rys)|[@searinminecraft](https://github.com/searinminecraft) [@zee-html](https://github.com/zee-html)| 58 | |🇫🇷|Français / fr|[@Hades785](https://github.com/Hades785) [@Kasahe](https://github.com/Kasahe) [@Achlys12](https://github.com/Achlys12) [@TapwaveZodiac](https://github.com/TapwaveZodiac)|[@RedNight-was-taken](https://github.com/RedNight-was-taken) [@Gaby5873](https://github.com/Gaby5873) [@ay700r](https://github.com/ay700r) [@Unknown-user-dev](https://github.com/Unknown-user-dev)| 59 | |🇮🇪|Gaeilge / ga||| 60 | |🇮🇳|हिन्दी / hi|[@Infiniticity](https://github.com/Infiniticity)|[@CodeWhiteWeb](https://github.com/CodeWhiteWeb) [@FakeFerg](https://github.com/FakeFerg) [@Yeikzy](https://github.com/Yeikzy)| 61 | |🇭🇷|Hrvatski / hr||| 62 | |🇭🇺|Magyar / hu|[@f3rr31](https://github.com/f3rr31)|| 63 | |🇦🇲|հայերեն / hy||| 64 | |🇮🇩|Bahasa Indonesia / id|[@liimee](https://github.com/liimee)|[@ilhamfauzan](https://github.com/ilhamfauzan) [@DaGamerFiles](https://github.com/DaGamerFiles)| 65 | |🇮🇸|Íslenska / is||| 66 | |🇮🇹|Italiano / it|[@plumcakey](https://github.com/plumcakey)|[@Gabriele73](https://github.com/Gabriele73) [@SpheLC](https://github.com/SpheLC) [@Pantanino](https://github.com/Pantanino)| 67 | |🇯🇵|日本語 / ja|[@chelley](https://github.com/chelley)|[@Joshument](https://github.com/Joshument)| 68 | |🇰🇷|한국어 / ko||| 69 | |🇱🇺|Lëtzebuergesch / lb||| 70 | |🇱🇹|Lietuvių / lt|[@ErnestasKaralius](https://github.com/ErnestasKaralius)|| 71 | |🇱🇻|Latviešu / lv|[@rMazeiks](https://github.com/rMazeiks)|[@GGLVXD](https://github.com/GGLVXD)| 72 | |🇲🇰|Македонски / mk||| 73 | |🇲🇾|Bahasa Melayu / ms|[@isPxyhl](https://github.com/isPxyhl)|| 74 | |🇳🇴|Norsk bokmål / nb_NO|[@tobggs](https://github.com/tobggs)|| 75 | |🇳🇱|Nederlands / nl|[@sympact06](https://github.com/sympact06)|| 76 | |🇮🇷|فارسی / fa|[@DevEvil99](https://github.com/DevEvil99) [@shareghzadeh](https://github.com/shareghzadeh)|| 77 | |🇵🇱|Polski / pl|[@Pawelek-dev](https://github.com/Pawelek-dev) [@HosachiPL](https://github.com/HosachiPL)|[@CyberL1](https://github.com/CyberL1)| 78 | |🇧🇷|Português (do Brasil) / pt_BR|[@yanndere](https://github.com/yanndere)|[@Hokiper](https://github.com/Hokiper) [@YoshiroOno](https://github.com/YoshiroOno) [@carmoswitch](https://github.com/carmoswitch) [@kibsbs](https://github.com/kibsbs) [@CachorroninjaBot](https://github.com/CachorroninjaBot) [@itsyounotme](https://github.com/itsyounotme)| 79 | |🇵🇹|Português (Portugal) / pt_PT|[@Tmpod](https://github.com/Tmpod)|[@SlicedBlueApple](https://github.com/SlicedBlueApple) [@undefined](https://github.com/undefined)| 80 | |🇷🇴|Română / ro|[@Edward205](https://github.com/Edward205)|[@S703T](https://github.com/S703T)| 81 | |🇷🇺|Русский / ru|[@div2005](https://github.com/div2005)|[@zptr1](https://github.com/zptr1) [@arslee07](https://github.com/arslee07) [@saikodemuchi](https://github.com/saikodemuchi)| 82 | |🇸🇰|Slovensky / sk|[@ShadowLp174](https://github.com/ShadowLp174)|| 83 | |🇸🇮|Slovenščina / sl||| 84 | |🇦🇱|Shqip / sq||| 85 | |🇷🇸|Српски / sr||| 86 | |🇱🇰|සිංහල / si||[@11257896](https://github.com/11257896)| 87 | |🇸🇪|Svenska / sv|[@raggebatman](https://github.com/raggebatman)|| 88 | |🇮🇳|தமிழ் / ta||| 89 | |🇹🇭|ไทย / th|[@xhayper](https://github.com/xhayper)|| 90 | |🇹🇷|Türkçe / tr|[@KerizAlperwastaken](https://github.com/KerizAlperwastaken) [@ramazaneris](https://github.com/ramazaneris)|[@vesley1](https://github.com/vesley1) [@omerasaf01](https://github.com/omerasaf01)| 91 | |🇵🇰|اردو / ur||| 92 | |🇺🇦|Українська / uk|[@div2005](https://github.com/div2005)|[@zptr1](https://github.com/zptr1) [@saikodemuchi](https://github.com/saikodemuchi)| 93 | |vec|Vèneto / vec||| 94 | |🇻🇳|Tiếng Việt / vi|[@barnacl437](https://github.com/barnacl437)|| 95 | |🇨🇳|简体中文 / zh_Hans|[@deluxghost](https://github.com/deluxghost)|[@YouTubeGameNana](https://github.com/YouTubeGameNana)| 96 | |🇹🇼|繁體中文 / zh_Hant|[@Zhuzi-ouo](https://github.com/Zhuzi-ouo)|| 97 | |🙂|Toki Pona / tokipona|[@Gapva](https://github.com/Gapva)|| 98 | |EO|Esperanto / esperanto|[@Fussmatte](https://github.com/Fussmatte)|| 99 | |😸|OwO / owo|[@sussycatgirl](https://github.com/sussycatgirl) [@FanMclaine](https://github.com/FanMclaine)|| 100 | |🏴‍☠️|Pirate / pr||| 101 | |🥺|Bottom / bottom||| 102 | |💾|1337 / leet||| 103 | |🪄|Enchantment Table / enchantment||| 104 | |🐖|Pig Latin / piglatin||| 105 | 106 | If you would like to maintain a language, please [open an issue](https://github.com/revoltchat/translations/issues/new/choose) with your request. 107 | 108 | ## What is a Maintainer? 109 | 110 | Maintainers gain access to the Reviewer role on Weblate. This permits them to approve new strings, edit approved strings, and accept new suggestions. They may also be mentioned in GitHub issues to approve badges for others. 111 | 112 | ![Approval UI](assets/approve_ui.png) 113 | 114 | If you're a maintainer and no longer wish to be one, please [open an issue](https://github.com/revoltchat/translations/issues/new). Note that you will remain on the contributions list. 115 | 116 | ## Repo-level Maintenance 117 | 118 | When adding badges to people, it must be done by editing the `contributors.json` file! 119 | -------------------------------------------------------------------------------- /mk.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "За", 4 | "tos": "Услови за услуга", 5 | "privacy": "Политика за приватност", 6 | "image_by": "Слика од", 7 | "disabled": "Oневозможено", 8 | "loading": "Се вчитува…", 9 | "on": "Вклучено", 10 | "off": "Исклучено", 11 | "unavailable": "Недостапен" 12 | }, 13 | "login": { 14 | "title": "Логирај Се", 15 | "email": "Епошта", 16 | "password": "Лозинка", 17 | "enter": { 18 | "email": "Внесете ја вашата епошта.", 19 | "password": "Внесете ја вашата лозинка.", 20 | "username": "Внеси корисничко име.", 21 | "current_password": "Внеси ја сегашната лозинка.", 22 | "invite": "Внеси го вашиот код за покана." 23 | }, 24 | "forgot": "Ја заборавивте лозинката?", 25 | "new": "Нов на Revolt?", 26 | "create": "Направете нова сметка.", 27 | "check_mail": "Провери си го е-маилот.", 28 | "open_mail_provider": "Отвори {{provider}}", 29 | "successful_registration": "Успешно све регистрирани!", 30 | "error": { 31 | "reset": "Неуспешно ресетирање!", 32 | "resend": "Неуспешно препраќање!", 33 | "create": "Неуспешна регистрација!", 34 | "login": "Неуспеешно логирање!" 35 | }, 36 | "cancel": "Откажи барање.", 37 | "existing": "Веќе имате сметка?", 38 | "username": "Корисничко име", 39 | "reset": "Ресетирај лозинка.", 40 | "remembered": "Врати се на најава.", 41 | "register": "Регистрирај се", 42 | "current_password": "Сегашна лозинка", 43 | "invite": "Код за покана", 44 | "missing_verification": "Немате е-маил?", 45 | "check_spam": "Проверете го спамот ако неможете да го најдете", 46 | "set_password": "Поставете нова лозинка.", 47 | "resend": "Препрати верификација.", 48 | "email_delay": "Ве молиме дозволете 10 минути да пристигне.", 49 | "welcome2": "Здраво!", 50 | "subtitle2": "Креирај сметка", 51 | "subtitle": "Пријавете се во REVOLT", 52 | "welcome": "Добредојде назад!" 53 | }, 54 | "app": { 55 | "main": { 56 | "channel": { 57 | "message": "Пиши на {{name}}", 58 | "message_where": "Прати порака во {{channel_name}}", 59 | "system": { 60 | "user_left": "{{user}} изпадна", 61 | "channel_renamed": "{{user}} го преименува каналот во {{name}}", 62 | "user_joined": "{{user}} влези", 63 | "channel_icon_changed": "{{user}} ја смени иконата за каналот", 64 | "channel_description_changed": "{{user}} го смени описот на каналот", 65 | "user_kicked": "{{user}} беше исфрлен", 66 | "user_banned": "{{user}} беше баниран", 67 | "removed_by": "{{user}} беше отстранет од {{other_user}}", 68 | "added_by": "{{user}} беше додаден од {{other_user}}" 69 | }, 70 | "message_saved": "Зачувајте на вашите белешки", 71 | "uploading_file": "Се праќа…", 72 | "failed_upload": "Не успеа да се прати!", 73 | "attached_file": "Прикачи {{filename}}", 74 | "typing": { 75 | "several": "Неколку луѓе пишуваат…", 76 | "single": "{{user}} пишува…", 77 | "multiple": "{{userlist}} и {{user}} пишуваат…" 78 | }, 79 | "message_who": "Прати порака на {{person}}", 80 | "start": { 81 | "group": "Ова е почетокот на вашиот разговор.", 82 | "saved": "Ова е почеток на вашите белешки." 83 | }, 84 | "voice": { 85 | "leave": "Излези", 86 | "connected": "Гласот е поврзан", 87 | "unmute": "Вклучи звук", 88 | "mute": "Исклучи звук" 89 | }, 90 | "misc": { 91 | "no_sending": "Немате дозвола да испраќате пораки во овој канал.", 92 | "viewing_old": "Гледате постари пораки", 93 | "jump_present": "Скокни до сегашноста", 94 | "spoiler_attachment": "Спојлер", 95 | "failed_load": "Пораката не може да се вчита.", 96 | "blocked_user": "Блокиран корисник", 97 | "sent_file": "Испрати прилог", 98 | "sent_multiple_files": "Испрати повеќе прилози", 99 | "blocked_messages": "{{count}} блокирани пораки", 100 | "jump_beginning": "Скокни на почеток", 101 | "load_file": "Вчитај датотека", 102 | "new_messages": "Нови пораки од {{time_ago}}" 103 | }, 104 | "nsfw": { 105 | "channel": { 106 | "confirm": "Внесете канал", 107 | "marked": "Овој канал е означен како NSFW." 108 | }, 109 | "confirm": "Потврдувам дека имам најмалку 18 години." 110 | }, 111 | "notifications": { 112 | "none": "Ниту еден", 113 | "all": "Сите пораки", 114 | "muted": "Исклучен звук", 115 | "default": "Користете го стандардното", 116 | "mention": "Само спомнувања" 117 | }, 118 | "reply": { 119 | "toggle": "Вклучете го пингот за автор", 120 | "replying": "Одговарајќи на" 121 | }, 122 | "search": { 123 | "title": "Барај", 124 | "sort": { 125 | "oldest": "Најстар", 126 | "relevance": "Релевантност", 127 | "latest": "Најнови" 128 | } 129 | }, 130 | "errors": { 131 | "nochannels": "Овој сервер нема канали или немате пристап до ниту еден.", 132 | "nochannel": "Без канал", 133 | "title": "Упс, нема ништо овде!" 134 | }, 135 | "unknown_user": "<Непознат корисник>", 136 | "edited": "(едитирано)", 137 | "bot": "бот", 138 | "bridge": "мост" 139 | }, 140 | "categories": { 141 | "members": "Членови", 142 | "conversations": "Разговори", 143 | "channels": "Канали", 144 | "participants": "Учесници" 145 | }, 146 | "servers": { 147 | "name": "Име на сервер", 148 | "channel_name": "Име на каналот", 149 | "voice_channel": "Гласовен канал", 150 | "custom_banner": "Прилагоден банер", 151 | "create": "Направете сервер", 152 | "description": "Опис на серверот", 153 | "channel_type": "Тип на канал", 154 | "channel_description": "Опис на каналот", 155 | "owner": "Сопственик на сервер", 156 | "text_channel": "Текст канал", 157 | "category_name": "Име на категоријата" 158 | }, 159 | "groups": { 160 | "description": "Опис на групата", 161 | "create": "Креирај група", 162 | "name": "Име на групата", 163 | "owner": "Сопственик на групата" 164 | } 165 | }, 166 | "status": { 167 | "online": "Онлајн", 168 | "offline": "Офлајн", 169 | "idle": "Неактивен", 170 | "busy": "Не вознемирувај", 171 | "invisible": "Невидлив", 172 | "reconnect": "Поврзете се повторно" 173 | }, 174 | "navigation": { 175 | "tabs": { 176 | "home": "Дома", 177 | "dev": "Девелопер", 178 | "saved": "Зачувани белешки", 179 | "unreads": "Непрочитани", 180 | "friends": "Другари" 181 | } 182 | }, 183 | "settings": { 184 | "categories": { 185 | "user_settings": "Кориснички поставки", 186 | "client_settings": "Поставки на клиентот", 187 | "danger_zone": "Опасна зона" 188 | }, 189 | "title": "Поставки", 190 | "actions": { 191 | "upload": "Прикачи", 192 | "remove": "Отстрани", 193 | "max_filesize": "(максимална {{filesize}})" 194 | } 195 | }, 196 | "home": { 197 | "directs": "Директни пораки", 198 | "discover_desc": "Најдете заедница заснована на вашите хоби или интереси.", 199 | "group": "Креирај група", 200 | "settings-tooltip": "Можете исто така да кликнете со десното копче на иконата на корисникот во горниот лев агол или да кликнете лево на неа ако сте веќе дома.", 201 | "donate": "Донирајте на REVOLT", 202 | "discover": "Откријте го REVOLT", 203 | "group_desc": "Поканете ги сите ваши пријатели, неколку кул ботови и организирајте голема забава.", 204 | "join-testers": "Придружете се на серверот за тестирање", 205 | "feedback": "Дајте повратни информации за REVOLT", 206 | "settings": "Отвори поставки", 207 | "join-testers_desc": "Можете да пријавите проблеми и да разговарате за подобрувањата со нас директно овде.", 208 | "goto-testers_desc": "Придружете се на серверот за тестирање.", 209 | "donate_desc": "Поддржете го проектот со донирање - ви благодариме!", 210 | "feedback_desc": "Кажете ни како можеме да ја подобриме нашата апликација со давање повратни информации." 211 | } 212 | }, 213 | "error": { 214 | "UnknownUser": "Непознат корисник.", 215 | "EmailInUse": "Е-пошта во употреба.", 216 | "EmailFailed": "Емеила не успеа да се испрати." 217 | }, 218 | "permissions": { 219 | "MoveMembers": { 220 | "d": "Овозможува членовите да преместуваат други меѓу гласовните канали." 221 | } 222 | } 223 | } 224 | -------------------------------------------------------------------------------- /lzh.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "on": "啟", 4 | "off": "閉", 5 | "disabled": "閉", 6 | "image_by": "出畫影之處", 7 | "loading": "待頃刻…", 8 | "unavailable": "用之不可", 9 | "learn_more": "了解更多", 10 | "tos": "行事律法", 11 | "privacy": "私隱律法", 12 | "about": "關於" 13 | }, 14 | "login": { 15 | "title": "入之", 16 | "subtitle": "入 Revolt", 17 | "subtitle2": "造一帳本", 18 | "register": "登名造冊", 19 | "username": "汝之名諱", 20 | "email": "洋飛鴿", 21 | "password": "暗語", 22 | "enter": { 23 | "username": "書君好之名。", 24 | "password": "書君之暗語。", 25 | "current_password": "書君今之暗語。", 26 | "email": "書君洋飛鴿之名。", 27 | "new_password": "書一新暗語。", 28 | "invite": "書君之請束。" 29 | }, 30 | "current_password": "今之暗語", 31 | "forgot": "汝忘暗語?", 32 | "reset": "重書暗語", 33 | "set_password": "書新暗語", 34 | "new": "初用 Revolt?", 35 | "cancel": "請罷", 36 | "missing_verification": "未得洋飛鴿?", 37 | "email_delay": "請待洋飛鴿達,久至二三刻。", 38 | "open_mail_provider": "啟 {{provider}}", 39 | "check_mail": "請君察洋飛鴿!", 40 | "check_spam": "若不得,請察荒棄之洋飛鴿", 41 | "welcome": "歡迎!", 42 | "welcome2": "近來可好!", 43 | "create": "造新冊", 44 | "error": { 45 | "login": "入之不成!", 46 | "create": "冊之造不成!", 47 | "resend": "重送不成!", 48 | "verify": "鑑定未成!" 49 | }, 50 | "remembered": "返至入之處", 51 | "existing": "已登名造冊?", 52 | "resend": "使洋飛鴿重送暗語", 53 | "successful_registration": "已造冊!", 54 | "new_password": "新暗語", 55 | "invite": "請束", 56 | "verifying_account": "鑑定汝之冊…", 57 | "verified_account": "汝之冊已鑑定!", 58 | "verified_continue": "續入", 59 | "recovery": "恢復代碼", 60 | "totp": "身份驗證器應用程序" 61 | }, 62 | "app": { 63 | "status": { 64 | "online": "上朝", 65 | "idle": "悠哉", 66 | "invisible": "隱居山林", 67 | "busy": "勿擾", 68 | "focus": "專心致志", 69 | "offline": "下朝" 70 | }, 71 | "navigation": { 72 | "tabs": { 73 | "home": "首頁", 74 | "unreads": "未批閱", 75 | "saved": "笏", 76 | "dev": "開天闢地之士", 77 | "friends": "友" 78 | } 79 | }, 80 | "home": { 81 | "directs": "密件", 82 | "join-testers_desc": "君可於此上奏。", 83 | "goto-testers_desc": "君可於此上奏。", 84 | "donate": "打賞Revolt", 85 | "discover": "窮Revolt之面貌", 86 | "discover_desc": "尋與君志同道合之朋黨。", 87 | "group": "立黨", 88 | "group_desc": "迎汝之友,炫洋鐵俑辦一筵席。", 89 | "feedback_desc": "請示高見使吾等知何修業益進。", 90 | "donate_desc": "以銀兩援助之 不勝感激!", 91 | "feedback": "予 Revolt 高見", 92 | "join-testers": "入試者伺服器" 93 | }, 94 | "main": { 95 | "categories": { 96 | "conversations": "語", 97 | "participants": "與會之士", 98 | "members": "黨眾" 99 | }, 100 | "channel": { 101 | "system": { 102 | "user_joined": "{{user}} 入", 103 | "user_left": "{{user}} 去", 104 | "user_kicked": "驅 {{user}}", 105 | "user_banned": "禁 {{user}}", 106 | "added_by": "{{other_user}} 邀 {{user}}", 107 | "removed_by": "{{other_user}} 除 {{user}}" 108 | }, 109 | "uploading_file": "郵驛急傳中…", 110 | "voice": { 111 | "leave": "離席", 112 | "mute": "斷其音訊", 113 | "unmute": "通其音訊" 114 | }, 115 | "misc": { 116 | "spoiler_attachment": "文矣", 117 | "viewing_old": "閱舊訊", 118 | "blocked_user": "與其不相來往", 119 | "jump_present": "躍至當今", 120 | "jump_beginning": "躍至始", 121 | "sent_file": "已傳件" 122 | }, 123 | "edited": "(修)", 124 | "bot": "洋鐵俑", 125 | "notifications": { 126 | "none": "無" 127 | }, 128 | "search": { 129 | "sort": { 130 | "oldest": "舊雨", 131 | "latest": "新知", 132 | "relevance": "最適" 133 | }, 134 | "title": "尋" 135 | }, 136 | "message_saved": "存汝之笏", 137 | "nsfw": { 138 | "confirm": "吾已過束髮之年。" 139 | }, 140 | "failed_upload": "未傳至!", 141 | "attached_file": "附 {{filename}}", 142 | "start": { 143 | "group": "此為言之始。", 144 | "saved": "此為笏之始。" 145 | }, 146 | "errors": { 147 | "title": "此處無物!" 148 | }, 149 | "reply": { 150 | "replying": "曰" 151 | }, 152 | "new_to_server": "初來乍到", 153 | "reactions": { 154 | "single_reacted": "一人應", 155 | "people_reacted": "{{people}} 應" 156 | } 157 | } 158 | }, 159 | "settings": { 160 | "title": "擇法", 161 | "actions": { 162 | "remove": "除名", 163 | "upload": "傳於郵驛" 164 | }, 165 | "pages": { 166 | "account": { 167 | "change_field": "更", 168 | "title": "吾之冊", 169 | "manage": { 170 | "title": "冊司", 171 | "disable": "棄冊" 172 | } 173 | }, 174 | "notifications": { 175 | "title": "報", 176 | "sounds": "樂", 177 | "push_notifications": "傳送報", 178 | "enable_desktop": "啟桌面之報", 179 | "enable_push": "啟傳送報" 180 | }, 181 | "experiments": { 182 | "title": "講工部" 183 | }, 184 | "profile": { 185 | "info": "訊", 186 | "title": "名刺" 187 | }, 188 | "sessions": { 189 | "title": "入之方位" 190 | }, 191 | "audio": { 192 | "input_device": "傳話使", 193 | "device_label_NA": "用之不可", 194 | "button_retry": "復試" 195 | }, 196 | "appearance": { 197 | "title": "面目", 198 | "theme": "景", 199 | "display": { 200 | "default": "本位", 201 | "compact": "儉" 202 | }, 203 | "color": { 204 | "light": "陽", 205 | "dark": "陰" 206 | }, 207 | "font": "書文" 208 | }, 209 | "sync": { 210 | "title": "相應" 211 | }, 212 | "language": { 213 | "title": "言語", 214 | "select": "擇汝語言" 215 | }, 216 | "bots": { 217 | "add": "增洋鐵俑", 218 | "title": "吾之洋鐵俑", 219 | "create_bot": "建洋鐵俑", 220 | "unique_id": "此為汝洋鐵俑之牒,非令牌。", 221 | "token": "令牌", 222 | "public_bot_tip": "此洋鐵俑為公。眾皆可邀之。", 223 | "private_bot_tip": "此洋鐵俑為私。僅汝可邀之。", 224 | "public_bot": "公之洋鐵俑", 225 | "public_bot_desc": "是否允眾邀約此洋鐵俑。" 226 | }, 227 | "theme_shop": { 228 | "category": { 229 | "saved": "存", 230 | "viewall": "閱盡" 231 | } 232 | } 233 | }, 234 | "server_pages": { 235 | "invites": { 236 | "code": "請束" 237 | }, 238 | "categories": { 239 | "title": "類別" 240 | } 241 | }, 242 | "tips": { 243 | "languages": { 244 | "a": "缺乏汝需之語?" 245 | } 246 | } 247 | }, 248 | "special": { 249 | "copy": "得一抄本", 250 | "friends": { 251 | "incoming": "求與君識之士。", 252 | "nobody": "尚無眾於此!" 253 | }, 254 | "modals": { 255 | "error": "見壹誤也!", 256 | "account": { 257 | "change": { 258 | "username": "更汝之稱呼", 259 | "email": "更汝之洋飛鴿", 260 | "password": "更汝之暗語" 261 | }, 262 | "failed": "更之不成!" 263 | }, 264 | "mfa": { 265 | "recovery_codes": "汝之復語", 266 | "enable_totp": "啟二重密語之器" 267 | }, 268 | "actions": { 269 | "ok": "是", 270 | "ban": "禁", 271 | "save": "存", 272 | "done": "成", 273 | "kick": "驅逐", 274 | "create": "建" 275 | }, 276 | "prompt": { 277 | "create_invite_created": "此為汝之新請束:", 278 | "confirm_ban": "君將禁 {{name}}", 279 | "confirm_ban_reason": "禁之故" 280 | }, 281 | "changelogs": { 282 | "older": "閱舊聞" 283 | } 284 | }, 285 | "popovers": { 286 | "create_bot": { 287 | "failed": "建洋鐵俑之不成!" 288 | }, 289 | "user_profile": { 290 | "sub": { 291 | "badges": "獎章" 292 | }, 293 | "badges": { 294 | "translator": "譯者", 295 | "supporter": "助者" 296 | }, 297 | "no_groups": "無同群體" 298 | } 299 | }, 300 | "requires_online": "君需上朝方可閱此。", 301 | "invite": { 302 | "login": "入 Revolt", 303 | "invited_by": "{{user}} 邀之", 304 | "invalid": "無用之請束!" 305 | } 306 | }, 307 | "context_menu": { 308 | "save_image": "存圖畫", 309 | "open_image": "開圖像", 310 | "mark_as_read": "標示已閱", 311 | "mark_unread": "標記未閱", 312 | "retry_message": "重送", 313 | "kick_member": "驅逐成員" 314 | } 315 | }, 316 | "error": { 317 | "EmailInUse": "洋飛鴿方用也。", 318 | "InvalidCredentials": "洋飛鴿或暗語有誤", 319 | "EmailFailed": "洋飛鴿未傳至。" 320 | }, 321 | "notifications": { 322 | "now_friends": "汝今爲@{{person}}友矣!", 323 | "sent_request": "@{{person}} 欲與汝結為友。" 324 | }, 325 | "actions": { 326 | "submit": "上呈" 327 | } 328 | } 329 | -------------------------------------------------------------------------------- /ka.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "privacy": "კონფიდენციალურობის პოლიტიკა", 4 | "image_by": "სურათის ავტორი", 5 | "loading": "იტვირთება…", 6 | "off": "გამორთული", 7 | "disabled": "გამორთული", 8 | "learn_more": "მეტის გაგება", 9 | "about": "ჩვენს შესახებ", 10 | "tos": "მომსახურების პირობები", 11 | "on": "ჩართული", 12 | "unavailable": "მიუწვდომელია" 13 | }, 14 | "login": { 15 | "title": "შესვლა", 16 | "welcome": "მოგესალმებით!", 17 | "subtitle": "შესვლა Revolt-ში", 18 | "welcome2": "გამარჯობა!", 19 | "register": "რეგისტრაცია", 20 | "username": "მომხმარებლის სახელი", 21 | "email": "ელექტრონული მისამართი", 22 | "password": "პაროლი", 23 | "totp": "აუტენტიკაციის პროგრამა", 24 | "invite": "მოწვევის კოდი", 25 | "subtitle2": "აკაუნტის შექმნა", 26 | "new_password": "ახალი პაროლი", 27 | "recovery": "აღდგენის კოდი", 28 | "current_password": "მიმდინარე პაროლი", 29 | "log_out_other": "გამოსვლა ყველა სხვა სესიიდან", 30 | "enter": { 31 | "username": "შეიყვანეთ თქვენი მომხმარებლის სახელი.", 32 | "invite": "შეიყვანეთ თქვენი მოწვევის კოდი.", 33 | "email": "გთხოვთ შეიყვანოთ თქვენი ელ. ფოსტა.", 34 | "password": "შეიყვანეთ თქვენი პაროლი.", 35 | "new_password": "შეიყვანეთ ახალი პაროლი.", 36 | "current_password": "შეიყვანეთ თქვენი მიმდინარე პაროლი." 37 | }, 38 | "forgot": "დაგავიწყდათ პაროლი?", 39 | "reset": "პაროლის გადაყენება", 40 | "set_password": "დააყენეთ ახალი პაროლი", 41 | "remembered": "დაბრუნდით შესვლაზე", 42 | "existing": "უკვე გაქვთ აკაუნტი?", 43 | "create": "შექმათ ახალი აკაუნტი", 44 | "resend": "ხელახლა გააგზავნეთ ვერიფიკაცია", 45 | "cancel": "მოთხოვნის გაუქმება", 46 | "check_spam": "თხოვთ, შეამოწმოთ თქვენი სპამის ფოლდერი, თუ ვერ პოულობთ მას", 47 | "successful_registration": "წარმატებით რეგისტრირდით!", 48 | "verifying_account": "თქვენი ანგარიშის მოწმდება…", 49 | "error": { 50 | "login": "შესვლა არ მოხერხდა!", 51 | "reset": "აღდგენა ვერ მოხერხდა!", 52 | "create": "რეგისტრაცია არ მოხერხდა!", 53 | "resend": "ხელმეორედ გაგზავნა ვერ მოხერხდა!", 54 | "verify": "ვერ მოხერხდა გადამოწმება!" 55 | }, 56 | "new": "ახალი რევოლტის მომხმარებელი?", 57 | "missing_verification": "არ მიიღეთ ელექტრონული წერილი?", 58 | "check_mail": "შეამოწმეთ თქვენი ელ. ფოსტა!", 59 | "email_delay": "ჩვენ გამოგიგზავნეთ დამოწმების წერილი. გთხოვთ, დაელოდოთ 10 წუთი სანამ მოვა.", 60 | "open_mail_provider": "გახსენით {{provider}}", 61 | "verified_account": "თქვენი ანგარიში შემოწმდა!", 62 | "verified_continue": "გააგრძელეთ შესვლა", 63 | "unofficial_instance": "არაოფიციალური ვერსია." 64 | }, 65 | "actions": { 66 | "submit": "დაადასტურე" 67 | }, 68 | "app": { 69 | "status": { 70 | "online": "ონლაინ", 71 | "idle": "არააქტიური", 72 | "focus": "ფოკუსირებული", 73 | "busy": "არ შემაწუხოთ", 74 | "invisible": "უხილავი", 75 | "offline": "ოფლაინი", 76 | "reconnect": "ხელახლა დაკავშირება" 77 | }, 78 | "navigation": { 79 | "tabs": { 80 | "home": "მთავარი გვერდი", 81 | "dev": "დეველოპერი", 82 | "friends": "მეგობრები", 83 | "unreads": "წაუკითხავი", 84 | "saved": "შენახული ჩანაწერები" 85 | } 86 | }, 87 | "home": { 88 | "join-testers": "შემოუერთდით ტესტერების სერვერს", 89 | "join-testers_desc": "შეგიძლიათ შეგახსენოთ პრობლემების შესახებ და განიხილოთ გაუმჯობესებები ჩვენთან უშუალოდ აქ.", 90 | "goto-testers_desc": "შეგიძლიათ შეგახსენოთ პრობლემების შესახებ და განიხილოთ გაუმჯობესებები ჩვენთან უშუალოდ აქ.", 91 | "settings-tooltip": "ასევე შეგიძლიათ მაუსის მარჯვენა ღილაკით დააწკაპუნოთ მომხმარებლის ხატულაზე მარცხენა ზედა კუთხეში, ან დააწკაპუნოთ მარცხენა ღილაკზე, თუ უკვე მთავარი გვერდზე ხართ.", 92 | "discover_desc": "იპოვეთ საზოგადოება თქვენი ჰობიების ან ინტერესების მიხედვით.", 93 | "directs": "პირადი შეტყობინებები", 94 | "goto-testers": "გადით ტესტერების სერვერზე", 95 | "donate": "შეწირეთ Revolt", 96 | "donate_desc": "მხარი დაუჭირეთ პროექტს შეწირულობის საშუალებით - მადლობა!", 97 | "feedback": "Revolt-ზე კავშირის შესახებ გამოხმაურება", 98 | "feedback_desc": "გვაცნობეთ, როგორ შეგვიძლია გავაუმჯობესოთ ჩვენი აპი, მოგვაწოდოთ გამოხმაურება.", 99 | "settings": "გახსენით პარამეტრები", 100 | "discover": "აღმოაჩინეთ Revolt", 101 | "group": "შექმენით ჯგუფი", 102 | "group_desc": "დაპატიჟეთ ყველა თქვენი მეგობარი, რამდენიმე მაგარი ბოტი და მოაწყვეთ დიდი წვეულება." 103 | }, 104 | "main": { 105 | "channel": { 106 | "reactions": { 107 | "unknown_reacted": "{{count}} ხალხმა რეაგირება მოახდინა", 108 | "others_reacted": "{{userlist}} და {{count}} სხვები რეაგირებდნენ", 109 | "single_reacted": "1 პირმა რეაგირება მოახდინა", 110 | "people_reacted": "{{people}} რეაგირება მოახდინა" 111 | }, 112 | "typing": { 113 | "multiple": "{{userlist}} და {{user}} კრეფენ…", 114 | "several": "რამდენიმე ადამიანი კრეფს…", 115 | "single": "{{user}} კრეფს…" 116 | }, 117 | "system": { 118 | "removed_by": "{{user}} ამოღებულია მიერ {{other_user}}", 119 | "channel_icon_changed": "{{user}} შეცვალა არხის ხატი", 120 | "user_joined": "{{user}} დაიწერა", 121 | "user_left": "{{user}} დატოვა", 122 | "user_kicked": "{{user}} გაძევებული", 123 | "user_banned": "{{user}} დაბლოკილი", 124 | "added_by": "{{user}} დაემატა მიერ {{other_user}}", 125 | "channel_renamed": "{{user}} არხს გადაარქვა სახელი{{name}}", 126 | "channel_description_changed": "{{user}} შეცვალა არხის აღწერა", 127 | "channel_ownership_changed": "{{from}} მიუტანა {{to}} ჯგუფის მფლობელობა", 128 | "registered_at": "რეგისტრირებული {{time}}" 129 | }, 130 | "start": { 131 | "group": "ეს არის თქვენი საუბრის დასაწყისი.", 132 | "saved": "ეს არის თქვენი შენიშვნების დასაწყისი." 133 | }, 134 | "misc": { 135 | "viewing_old": "ძველ შეტყობინებებზე გადასვლა", 136 | "jump_present": "ახლანდელზე გადასვლა", 137 | "new_messages": "ახალი შეტყობინებები შემდეგ {{time_ago}}", 138 | "not_loaded": "შეტყობინება ვერ ჩაიტვირთა, დააწკაპუნეთ გადადისთვის", 139 | "timed_out": "დროის შეზღუდვა გაქვთ {{time}}.", 140 | "jump_beginning": "დასაწყისზე გადასვლა", 141 | "spoiler_attachment": "სპოილერი", 142 | "failed_load": "შეტყობინება ვერ ჩაიტვირთა.", 143 | "no_sending": "თქვენ არ გაქვთ უფლებამოსილება ამ არხზე შეტყობინებების გაგზავნისთვის." 144 | }, 145 | "message_where": "შეტყობინება {{channel_name}}", 146 | "message_who": "შეტყობინება @{{person}}", 147 | "message_saved": "შეინახეთ თქვენს შენიშვნებში", 148 | "uploading_file": "ატვირთვა…", 149 | "failed_upload": "ატვირთვა ვერ მოხერხდა!", 150 | "attached_file": "დამაგრებული {{filename}}", 151 | "reply": { 152 | "replying": "პასუხი", 153 | "toggle": "ავტორის შეტყობინებების ჩართვა/გამორთვა" 154 | }, 155 | "voice": { 156 | "connected": "ხმა დაკავშირებულია", 157 | "leave": "დატოვეთ", 158 | "mute": "გათიშვა", 159 | "unmute": "გააქტიურება" 160 | } 161 | }, 162 | "categories": { 163 | "conversations": "საუბრები", 164 | "participants": "მონაწილეები", 165 | "channels": "არხები", 166 | "members": "წევრები" 167 | } 168 | } 169 | }, 170 | "error": { 171 | "InvalidSession": "არასწორი სესია.", 172 | "ProbeError": "ფაილის მეტამონაცემების მიღება ვერ მოხერხდა.", 173 | "ReachedMaximumBots": "თქვენმა მომხმარებელმა მიაღწია შესაძლო ბოტების ლიმიტს", 174 | "OperationFailed": "ოპერაცია ჩაიშალა.", 175 | "RenderFail": "შაბლონის რენდერინგი ვერ მოხერხდა.", 176 | "MissingHeaders": "სათაურები აკლია.", 177 | "UnverifiedAccount": "დაუდასტურებელი ანგარიში.", 178 | "IoError": "სერვერს შეექმნა შეყვანის/გამოყვანის შეცდომა.", 179 | "UnsupportedBrowser": "ბრაუზერს ამ ფუნქციის მხარდაჭერა აკლია.", 180 | "DeniedNotification": "თქვენ უარი თქვით შეტყობინებებზე წვდომაზე. შეამოწმეთ გვერდის პარამეტრები.", 181 | "CompromisedPassword": "ეს კომბინაცია მონიშნულია საზოგადოებრივი უსაფრთხოების მონაცემთა ბაზებში. გთხოვთ, აირჩიოთ სხვა პაროლი.", 182 | "AudioPermissionBlock": "თქვენს მიკროფონზე წვდომა არ არის. გთხოვთ, შეამოწმოთ თქვენი ბრაუზერის კონფიგურაცია.", 183 | "DiscriminatorChangeRatelimited": "თეგის ძალიან ბევრი ცვლილებაა.", 184 | "LockedOut": "ძალიან ბევრი შესვლის მცდელობა, სცადეთ მოგვიანებით ან გადააყენეთ პაროლი." 185 | }, 186 | "permissions": { 187 | "KickMembers": { 188 | "t": "კიკ წევრი", 189 | "d": "წევრებს საშუალებას აძლევს, წაშალონ წევრები ამ სერვერიდან. გარიცხულ წევრებს შეუძლიათ ხელახლა შეუერთდნენ მოწვევით." 190 | }, 191 | "TimeoutMembers": { 192 | "d": "საშუალებას აძლევს წევრებს დროებით შეუშალონ ხელი მომხმარებლებს სერვერთან ურთიერთქმედებაში.", 193 | "t": "ტაიმ-აუტის წევრები" 194 | }, 195 | "ManageCustomisation": { 196 | "d": "წევრებს საშუალებას აძლევს შექმნან, შეცვალონ და წაშალონ ემოჯიები.", 197 | "t": "პერსონალიზაციის მართვა" 198 | }, 199 | "ManagePermissions": { 200 | "t": "ნებართვების მართვა", 201 | "d": "წევრებს საშუალებას აძლევს შეცვალონ ნებართვები უფრო დაბალი რანგის მქონე არხებისა და როლებისთვის." 202 | }, 203 | "BanMembers": { 204 | "d": "წევრებს საშუალებას აძლევს სამუდამოდ წაშალონ წევრები ამ სერვერიდან.", 205 | "t": "წევრების აკრძალვა" 206 | }, 207 | "ManageRole": { 208 | "t": "როლების მართვა", 209 | "d": "საშუალებას აძლევს წევრებს შექმნან, შეცვალონ და წაშალონ მათზე დაბალი რანგის მქონე როლები, ასევე შეცვალონ როლების ნებართვები არხებზე." 210 | }, 211 | "ManageChannels": { 212 | "t": "არხების მართვა", 213 | "d": "წევრებს საშუალებას აძლევს შექმნან, შეცვალონ და წაშალონ არხები." 214 | }, 215 | "AssignRoles": { 216 | "t": "როლების მინიჭება" 217 | }, 218 | "ManageServer": { 219 | "t": "სერვერის მართვა", 220 | "d": "წევრებს საშუალებას აძლევს შეცვალონ ამ სერვერის სახელი, აღწერა, ხატულა და სხვა დაკავშირებული ინფორმაცია." 221 | } 222 | }, 223 | "shortcuts": { 224 | "ctrlc": "Ctrl + C" 225 | } 226 | } 227 | -------------------------------------------------------------------------------- /as.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": { 3 | "invite": "আমন্ত্ৰণ কোড", 4 | "enter": { 5 | "username": "আপোনাৰ ব্যৱহাৰকাৰীনাম প্ৰবিষ্ট কৰক।", 6 | "current_password": "আপোনাৰ বৰ্তমানৰ পাছৱৰ্ড প্ৰবিষ্ট কৰক।", 7 | "email": "অনুগ্ৰহ কৰি আপোনাৰ ইমেইল প্ৰবিষ্ট কৰক।", 8 | "password": "আপোনাৰ পাছৱৰ্ড প্ৰবিষ্ট কৰক।", 9 | "invite": "আপোনাৰ আমন্ত্ৰণ কোড প্ৰবিষ্ট কৰক।", 10 | "new_password": "আপোনাৰ ইমেইল প্ৰবিষ্ট কৰক।" 11 | }, 12 | "check_spam": "অনুগ্ৰহ কৰি স্পাম পৰীক্ষা কৰক যদি আপুনি ইয়াক বিচাৰি নাপায়", 13 | "error": { 14 | "reset": "ৰিছেট কৰিবলৈ ব্যৰ্থ!", 15 | "create": "পঞ্জীয়ন কৰিবলৈ ব্যৰ্থ!", 16 | "login": "লগইন কৰিবলৈ ব্যৰ্থ!", 17 | "resend": "পুনৰ প্ৰেৰণ কৰিবলৈ ব্যৰ্থ!", 18 | "verify": "প্ৰমাণিত কৰিব পৰা নগল!" 19 | }, 20 | "title": "লগইন", 21 | "welcome": "স্বাগতম!", 22 | "welcome2": "নমস্কাৰ!", 23 | "subtitle2": "এটা একাওন্ট সৃষ্টি কৰক", 24 | "subtitle": "ৰিভল্টত ছাইন ইন কৰক", 25 | "register": "পঞ্জীয়ন কৰক", 26 | "username": "ব্যৱহাৰকাৰীনাম", 27 | "email": "ইমেইল", 28 | "password": "পাসওয়ার্ড", 29 | "totp": "প্ৰমাণীকৰণ এপ্প", 30 | "recovery": "পুনৰুদ্ধাৰ কোড", 31 | "current_password": "বৰ্তমান পাছৱাৰ্ড", 32 | "forgot": "আপোনাৰ পাছৱৰ্ড পাহৰিছে নেকি?", 33 | "reset": "পাছৱাৰ্ড ৰিছেট কৰক", 34 | "new": "ৰিভেল্টলৈ নতুন?", 35 | "set_password": "নতুন পাছৱাৰ্ড ছেট কৰক", 36 | "remembered": "লগইনলৈ ঘূৰি যাওক", 37 | "existing": "ইতিমধ্যে এটা একাউণ্ট আছে নেকি?", 38 | "create": "এটা নতুন একাউণ্ট সৃষ্টি কৰক", 39 | "missing_verification": "ইমেইল এটা প্ৰাপ্ত কৰা নাই নেকি?", 40 | "resend": "প্ৰমাণীকৰণ পুনৰ প্ৰেৰণ কৰক", 41 | "cancel": "অনুৰোধ বাতিল কৰক", 42 | "check_mail": "আপোনাৰ মেইল পৰীক্ষা কৰক!", 43 | "email_delay": "অনুগ্ৰহ কৰি ইয়াক আহিপোৱাৰ বাবে 10 মিনিটলৈকে অনুমতি দিয়ক।", 44 | "open_mail_provider": "{{provider}} খোলক", 45 | "successful_registration": "সফলতাৰে পঞ্জীয়ন কৰা হৈছে!", 46 | "unofficial_instance": "তৃতীয় পক্ষৰ উদাহৰণ।", 47 | "verified_account": "অপুনাৰ একাউণ্ট প্ৰমণিত কৰা হয় গইছে!", 48 | "verified_continue": "লগইন অব্যাহত ৰাখক", 49 | "verifying_account": "অপুনাৰ একাউণ্ট প্ৰমণিত কৰা হয় আছে…", 50 | "new_password": "নতুন পাছৱাৰ্ড", 51 | "log_out_other": "অন্য সকলো অধিবেশনৰ পৰা লগ আউট কৰক" 52 | }, 53 | "app": { 54 | "home": { 55 | "donate_desc": "দান কৰি প্ৰকল্পটো সমৰ্থন কৰক - ধন্যবাদ!", 56 | "feedback": "ৰিভল্ট ওপৰত মতামত দিয়ক", 57 | "directs": "প্ৰত্যক্ষ বাৰ্তা", 58 | "join-testers": "পৰীক্ষক সেৱকত যোগদান কৰক", 59 | "join-testers_desc": "আপুনি সমস্যাবোৰ প্ৰতিবেদন কৰিব পাৰে আৰু ইয়াত পোনপটীয়াকৈ আমাৰ সৈতে উন্নতিৰ বিষয়ে আলোচনা কৰিব পাৰে।", 60 | "goto-testers": "পৰীক্ষক চাৰ্ভাৰলৈ যাওক", 61 | "goto-testers_desc": "আপুনি সমস্যাবোৰ প্ৰতিবেদন কৰিব পাৰে আৰু ইয়াত পোনপটীয়াকৈ আমাৰ সৈতে উন্নতিৰ বিষয়ে আলোচনা কৰিব পাৰে।", 62 | "donate": "ৰিভল্টলৈ দান কৰক", 63 | "feedback_desc": "আমাক মতামত দি আমি কেনেকৈ আমাৰ এপটো উন্নত কৰিব পাৰোঁ আমাক জনাব।", 64 | "settings": "ছেটিংছ খোলক", 65 | "discover": "ৰিভল্ট আৱিষ্কাৰ কৰক", 66 | "settings-tooltip": "আপুনি ওপৰৰ বাওঁফালে থকা ব্যৱহাৰকাৰী আইকনটো সোঁ-ক্লিক কৰিব পাৰে, বা আপুনি ইতিমধ্যে ঘৰত থাকিলে ইয়াত ক্লিক কৰিব পাৰে।", 67 | "discover_desc": "আপোনাৰ ৰুচি বা আগ্ৰহৰ ওপৰত আধাৰিত কৰি এটা সম্প্ৰদায় বিচাৰি উলিয়াওক।", 68 | "group": "এটা গোট সৃষ্টি কৰক", 69 | "group_desc": "আপোনাৰ সকলো বন্ধুবৰ্গক নিমন্ত্ৰণ কৰক, কিছুমান শীতল বট, আৰু এটা ডাঙৰ পাৰ্টি দিয়ক।" 70 | }, 71 | "main": { 72 | "channel": { 73 | "failed_upload": "আপলোড কৰিবলৈ ব্যৰ্থ!", 74 | "message_who": "মেচেজ {{person}}", 75 | "start": { 76 | "group": "এয়া হৈছে আপোনাৰ কথোপকথনৰ আৰম্ভণি।", 77 | "saved": "এয়া হৈছে আপোনাৰ টোকাবোৰৰ আৰম্ভণি।" 78 | }, 79 | "voice": { 80 | "connected": "ভইচ সংযোজিত", 81 | "leave": "এৰি যাওক", 82 | "mute": "নিঃশব্দ", 83 | "unmute": "আনমিউট" 84 | }, 85 | "misc": { 86 | "viewing_old": "পুৰণি বাৰ্তাসমূহ দৰ্শন কৰা হৈছে", 87 | "new_messages": "{{time_ago}}ৰ পৰা নতুন বাৰ্তা", 88 | "no_sending": "এই চেনেলত বাৰ্তা প্ৰেৰণ কৰাৰ অনুমতি আপোনাৰ নাই।", 89 | "jump_present": "বৰ্তমানলৈ জাঁপ দিয়ক", 90 | "jump_beginning": "আৰম্ভণিলৈ জঁপিয়াওক", 91 | "spoiler_attachment": "স্পোইলাৰ", 92 | "failed_load": "বাৰ্তা লোড কৰিব পৰা নগল।", 93 | "timed_out": "অপুনক {{time}} সময়ৰ বাবে টাইম আউট কৰা হৈছে।", 94 | "blocked_messages": "{{count}} সংখ্যাটো অৱৰুদ্ধ কৰা মেছেজ", 95 | "blocked_user": "অৱৰুদ্ধ ব্যক্তি", 96 | "sent_file": "এটা ফাইল পঠাইছে", 97 | "sent_multiple_files": "বহু কেতা ফাইল পঠিয়াইছে", 98 | "load_file": "ফাইল লোড কৰক", 99 | "not_loaded": "বাৰ্তা লোড কৰা হোৱা নাই, জঁপিয়াবলৈ ক্লিক কৰক" 100 | }, 101 | "message_where": "মেচেজ {{channel_name}}", 102 | "attached_file": "সংলগ্ন {{filename}}", 103 | "message_saved": "আপোনাৰ টোকাসমূহত সংৰক্ষণ কৰক", 104 | "uploading_file": "আপলোড কৰা হৈছে…", 105 | "reply": { 106 | "replying": "উত্তৰ দিয়া হৈছে", 107 | "toggle": "টগল লেখক পিং" 108 | }, 109 | "system": { 110 | "user_kicked": "{{user}} লাথি মাৰিছিল", 111 | "user_banned": "{{user}} নিষিদ্ধ কৰা হৈছিল", 112 | "user_joined": "{{user}} যোগ দান কৰা হৈছে", 113 | "user_left": "{{user}} বাওঁফালে", 114 | "removed_by": "{{user}}ক {{other_user}}ৰ দ্বাৰা আঁতৰ োৱা হৈছিল", 115 | "added_by": "{{user}}ক {{other_user}}ৰ দ্বাৰা যোগ কৰা হৈছিল", 116 | "channel_renamed": "{{user}}ৱে চেনেলটোৰ নাম {{name}}লৈ ৰাখিলে", 117 | "channel_description_changed": "{{user}}ৱে চেনেলৰ বিৱৰণ সলনি কৰিলে", 118 | "channel_icon_changed": "{{user}}ৱে চেনেলৰ আইকন সলনি কৰিলে", 119 | "channel_ownership_changed": "{{from}}ৱে {{to}} গোটৰ মালিকীস্বত্ব দিছিল", 120 | "registered_at": "পঞ্জীভুক্ত {{time}}" 121 | }, 122 | "typing": { 123 | "single": "{{user}} টাইপ কৰি আছে…", 124 | "multiple": "{{userlist}} আৰু {{user}} টাইপ কৰি আছে…", 125 | "several": "কেইবাজনো লোকে টাইপ কৰি আছে…" 126 | }, 127 | "nsfw": { 128 | "channel": { 129 | "marked": "এই চেনেল টুক NSFW মাৰ্ক কৰা হৈছে।", 130 | "confirm": "চেনেলত প্ৰৱেশ কৰক" 131 | }, 132 | "confirm": "মই নিশ্চিত কৰো যে মোৰ বয়স ১৮ বছৰতকৈ অধিক।" 133 | }, 134 | "unknown_user": "<অজ্ঞাত ব্যৱহাৰকাৰী>", 135 | "edited": "(সম্পাদিত)", 136 | "bot": "বট", 137 | "bridge": "ব্ৰিজ", 138 | "user_timed_out": "ব্যৱহাৰকাৰীক {{time}} সময়ৰ বাবে টাইম আউট কৰা হৈছে।", 139 | "notifications": { 140 | "default": "ডিফল্ট ব্যৱহাৰ কৰক", 141 | "all": "সকলো বাৰ্তা", 142 | "none": "একো নাই", 143 | "mention": "কেৱল উল্লেখ কৰক", 144 | "muted": "নিস্তব্ধ কৰা হৈছে" 145 | }, 146 | "search": { 147 | "title": "বিছাৰক", 148 | "sort": { 149 | "relevance": "প্ৰাসংগিকতা", 150 | "latest": "শেহতীয়া", 151 | "oldest": "আটাইতকৈ পুৰণি" 152 | } 153 | }, 154 | "errors": { 155 | "title": "ক্ষমা কৰিব, ইয়াত একো নাই!", 156 | "nochannels": "এই চাৰ্ভাৰৰ কোনো চেনেল নাই, অথবা অপুনাৰ কোনো চেনেলত প্ৰৱেশ কৰাৰ অনুমতি নাই।", 157 | "nochannel": "কোনো চেনেল নাই" 158 | }, 159 | "bridged": "বাৰ্তা অন্য প্লেটফৰ্মত প্ৰেৰণ কৰা হৈছিল", 160 | "team": "অফিচিয়েল কমিউনিকেচন", 161 | "new_to_revolt": "নতুন Revolt", 162 | "new_to_server": "এই সেৱকলৈ নতুন", 163 | "reactions": { 164 | "others_reacted": "{{ব্যৱহাৰকৰ্তাতালিকা}} আৰু {{গণনা}} অন্যসকলে প্ৰতিক্ৰিয়া প্ৰকাশ কৰিছে", 165 | "unknown_reacted": "{{গণনা}} লোকে প্ৰতিক্ৰিয়া প্ৰকাশ কৰিছে", 166 | "single_reacted": "1 জন ব্যক্তিয়ে প্ৰতিক্ৰিয়া প্ৰকাশ কৰিছে", 167 | "people_reacted": "{{gt}} প্ৰতিক্ৰিয়া প্ৰকাশ কৰিছে" 168 | } 169 | }, 170 | "categories": { 171 | "conversations": "কথোপকথন", 172 | "participants": "অংশগ্ৰহণকাৰী", 173 | "channels": "চেনেলসমূহ", 174 | "members": "সদস্য" 175 | }, 176 | "groups": { 177 | "create": "এটা গোট সৃষ্টি কৰক", 178 | "owner": "গোটৰ মালিক", 179 | "name": "গোটৰ নাম", 180 | "description": "গোটৰ বৰ্ণনা" 181 | }, 182 | "servers": { 183 | "voice_channel": "ভইচ চেনেল", 184 | "create": "এটা চাৰ্ভাৰ বনাওক", 185 | "channel_type": "চেনেলৰ ধৰণ", 186 | "category_name": "শ্ৰেণীৰ নাম", 187 | "channel_description": "চেনেলৰ বিৱৰণ", 188 | "custom_banner": "কাষ্টম বেনাৰ", 189 | "owner": "চাৰ্ভাৰৰ মালিক", 190 | "name": "চাৰ্ভাৰৰ নাম", 191 | "description": "চাৰ্ভাৰৰ বিৱৰণ", 192 | "channel_name": "চেনেলৰ নাম", 193 | "text_channel": "টেক্সট চেনেল" 194 | } 195 | }, 196 | "status": { 197 | "online": "অনলাইন", 198 | "idle": "নিষ্ক্ৰিয়", 199 | "busy": "বিচলিত নকৰিব", 200 | "invisible": "অদৃশ্য", 201 | "offline": "অফলাইন", 202 | "reconnect": "পুনৰ সংযোগ কৰক", 203 | "focus": "ফোকাচ" 204 | }, 205 | "navigation": { 206 | "tabs": { 207 | "home": "ঘৰ", 208 | "dev": "বিকাশক", 209 | "friends": "বন্ধুসকল", 210 | "unreads": "পঢ়া নাই", 211 | "saved": "সংৰক্ষিত টোকাসমূহ" 212 | } 213 | }, 214 | "settings": { 215 | "actions": { 216 | "remove": "আঁতৰোৱা", 217 | "upload": "আপলোড কৰক", 218 | "max_filesize": "(সৰ্বোচ্চ {{filesize}})", 219 | "edit": "{{name}} সম্পাদনা কৰক" 220 | }, 221 | "categories": { 222 | "client_settings": "ক্লায়েন্টৰ ছেটিংছ", 223 | "danger_zone": "বিপদৰ অঞ্চল", 224 | "user_settings": "আপোনাৰ ছেটিংছ" 225 | }, 226 | "title": "ছেটিংছ", 227 | "pages": { 228 | "account": { 229 | "title": "মোৰ একাউণ্ট", 230 | "change_field": "সলনি কৰক", 231 | "2fa": { 232 | "title": "দুই-কাৰক প্ৰমাণীকৰণ", 233 | "generate_recovery": "পুনৰুদ্ধাৰ কোড সৃষ্টি কৰক", 234 | "description": "আপোনাৰ একাউণ্টত 2এফএ সক্ষম কৰি সুৰক্ষাৰ এক অতিৰিক্ত স্তৰ যোগ দিয়ক।", 235 | "view_recovery": "পুনৰুদ্ধাৰ কোডসমূহ দৰ্শন কৰক", 236 | "view_recovery_long": "আপোনাৰ 2এফএ পুনৰুদ্ধাৰ কোড চাওক আৰু ডাউনলোড কৰক।" 237 | }, 238 | "unique_id": "এইটো আপোনাৰ একাউণ্টৰ বাবে এক অনন্য ব্যৱহাৰকাৰী চিনাক্তকৰ্তা।" 239 | } 240 | } 241 | }, 242 | "context_menu": { 243 | "remove_friend": "বন্ধুক আঁতৰাওক", 244 | "cancel_friend": "অনুৰোধ বাতিল কৰক", 245 | "custom_status": "কাষ্টম ষ্টেটাছ", 246 | "clear_status": "ষ্টেটাছ আঁতৰাওক", 247 | "set_custom_status": "কাষ্টম ষ্টেটাছ যোগ কৰক", 248 | "leave_group": "গোট এৰি যাওক", 249 | "leave_server": "চাৰ্ভাৰ এৰি যাওক", 250 | "close_dm": "DM বন্ধ কৰক", 251 | "ban_member": "সদস্যজনক নিষিদ্ধ কৰক", 252 | "open_file": "ফাইলটো খোলক", 253 | "open_image": "ফটোখন খোলক", 254 | "save_file": "ফাইলটো চেভ কৰক", 255 | "add_friend": "বন্ধুক যোগ কৰক", 256 | "open_video": "ভিডিঅ'টো খোলক", 257 | "save_image": "ফটোখন চেভ কৰক", 258 | "copy_link": "লিংকটো কপি কৰক", 259 | "block_user": "ব্যৱহাৰকাৰীক ব্লক কৰক", 260 | "unblock_user": "ব্যৱহাৰকাৰীক আনব্লক কৰক", 261 | "open_link": "লিংকটো খোলক", 262 | "save_video": "ভিডিঅ'টো চেভ কৰক", 263 | "edit_identity": "আপোনাৰ পৰিচয় সম্পাদনা কৰক", 264 | "delete_server": "চাৰ্ভাৰ ডিলিট কৰক", 265 | "delete_channel": "চেনেল ডিলিট কৰক", 266 | "create_channel": "এটা চেনেল সৃষ্টি কৰক", 267 | "create_category": "এটা শ্ৰেণী সৃষ্টি কৰক" 268 | } 269 | }, 270 | "general": { 271 | "about": "বিষয়ে", 272 | "tos": "সেৱাৰ চৰ্তাৱলী", 273 | "privacy": "গোপনীয়তা নীতি", 274 | "image_by": "ছবিৰ দ্বাৰা", 275 | "loading": "লোড কৰা হৈছে…", 276 | "on": "অন", 277 | "off": "বন্ধ", 278 | "disabled": "অসামৰ্থবান", 279 | "unavailable": "উপলব্ধ নহয়", 280 | "learn_more": "অধিক জানা" 281 | }, 282 | "actions": { 283 | "submit": "দাখিল কৰক" 284 | } 285 | } 286 | -------------------------------------------------------------------------------- /de_CH.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "about": "Über", 4 | "image_by": "Bild vo", 5 | "loading": "Lade…", 6 | "on": "Aa", 7 | "off": "Uus", 8 | "disabled": "Deaktiviert", 9 | "unavailable": "Nid verfügbar", 10 | "tos": "Nutzigsbedingige", 11 | "privacy": "Dateschutzerklärig", 12 | "learn_more": "Meh erfahre" 13 | }, 14 | "login": { 15 | "title": "Aamelde", 16 | "subtitle": "Bii Revolt aamelde", 17 | "welcome2": "Hoi!", 18 | "subtitle2": "En Account erstelle", 19 | "register": "Registriere", 20 | "username": "Benutzername", 21 | "email": "E-Mail", 22 | "password": "Passwort", 23 | "current_password": "Aktuells Passwort", 24 | "enter": { 25 | "username": "Gib dine g'wünschte Bnutzername ii.", 26 | "email": "Bitte gib dini E-Mail ii.", 27 | "password": "Gib es Passwort aa.", 28 | "invite": "Gib din Iiladigscode ii.", 29 | "current_password": "Gib dis aktuells Passwort ii.", 30 | "new_password": "Neus Passwort iigeh." 31 | }, 32 | "forgot": "Passwort vergesse?", 33 | "reset": "Passwort zrucksetze", 34 | "set_password": "Neus Passwort festlege", 35 | "remembered": "Zruck zum Login", 36 | "new": "Neu bii Revolt?", 37 | "existing": "Hesch bereits es Account?", 38 | "create": "Neus Account erstelle", 39 | "missing_verification": "Kei E-Mail becho?", 40 | "resend": "Bestätigig neu sende", 41 | "cancel": "Aafrag abbreche", 42 | "check_mail": "Überprüef dis E-Mail Postfach!", 43 | "email_delay": "Mier hei dir es Bstätigungs-E-Mail gschickt. Wart bitte bis zu 10 Minute, bis es aachunnt.", 44 | "check_spam": "Bitte überprüefe spam wenn du's nöd finde chasch", 45 | "open_mail_provider": "Öffne {{provider}}", 46 | "successful_registration": "Erfolgriich regischtriert!", 47 | "error": { 48 | "create": "Regischtrierig fehlgschlagä!", 49 | "login": "Aamäuldig fehlgschlagä!", 50 | "resend": "Nöiversände fehlgschlagä!", 51 | "reset": "Zruggsätze fehlgschlagä!", 52 | "verify": "Verifikation fählgschlage!" 53 | }, 54 | "welcome": "Willchumme!", 55 | "invite": "Iiladigscode", 56 | "recovery": "Wiederherstelligscode", 57 | "totp": "Authentifizierigs-App", 58 | "new_password": "Neus Passwort", 59 | "log_out_other": "Uus alli anderi Sitzige abmelde", 60 | "unofficial_instance": "Drittanbieter-Instanz.", 61 | "verifying_account": "Account wird verifiziert…", 62 | "verified_account": "Di Account isch verifiziert worde!" 63 | }, 64 | "app": { 65 | "status": { 66 | "online": "Online", 67 | "idle": "Abwäsend", 68 | "busy": "Ned störe", 69 | "invisible": "Unsichtbar", 70 | "offline": "Unaktiv", 71 | "reconnect": "Wieder verbindä", 72 | "focus": "Fokus" 73 | }, 74 | "navigation": { 75 | "tabs": { 76 | "home": "Home", 77 | "dev": "Entwickler", 78 | "friends": "Früünde", 79 | "unreads": "Ungläse", 80 | "saved": "Gschpiichereti Notize" 81 | } 82 | }, 83 | "home": { 84 | "directs": "Direktnachrichte", 85 | "join-testers": "Tritt de Servers vo Testers bi", 86 | "goto-testers": "Ga zom Server vom Testern", 87 | "donate": "Mach e Spende zu Revolt", 88 | "donate_desc": "Unterstütz de Projekt mit e Spende - danke!", 89 | "feedback": "Gib rückmäldig uf Revolt", 90 | "join-testers_desc": "Hier chasch direkt Probleme mälde ond Verbesserige mit ons bespräche.", 91 | "settings": "Öffne Istellige", 92 | "discover": "Revolt entdäcke", 93 | "group": "Erstell e gruppe", 94 | "goto-testers_desc": "Hier chasch direkt Probleme mälde ond Verbesserige mit ons bespräche.", 95 | "feedback_desc": "La üs wösse, wie mer üseri App verbessere cha, indäm du üs Feedback gibsch.", 96 | "settings-tooltip": "Du chasch au mit de rechte Muustaschte uf das Benutzersymbol obe links klicke oder mit de linke Muustaschte druf klicke, wenn du scho bi Home bisch.", 97 | "discover_desc": "Find e Community basiert uf dini Hobbies oder interesse.", 98 | "group_desc": "Lad all dini Fründe i, e paar cooli Bots ond mach e grossi Party." 99 | }, 100 | "main": { 101 | "categories": { 102 | "conversations": "Konversatione", 103 | "participants": "Mitglieder", 104 | "channels": "Kanäle", 105 | "members": "Mitglieder" 106 | }, 107 | "channel": { 108 | "message_who": "Schick Nachricht a {{person}}", 109 | "message_saved": "Spiichere zu dini Notize", 110 | "uploading_file": "Uelade…", 111 | "message_where": "Nachricht a {{channel_name}}", 112 | "misc": { 113 | "spoiler_attachment": "Spoiler", 114 | "no_sending": "Du bisch nöd berechtigt, Nachrichte z versände in disem Kanal.", 115 | "viewing_old": "Zeigt altere Nachrichte a", 116 | "jump_present": "Zu itzige springe", 117 | "jump_beginning": "Zum afang springe", 118 | "new_messages": "Nöi Nachrichte sit {{time_ago}}", 119 | "failed_load": "Nachrichte lade fehlgschlagä.", 120 | "blocked_messages": "{{count}} blockierte Nachrichte", 121 | "blocked_user": "Blockierte Benutzer", 122 | "sent_file": "Ahang gsändet", 123 | "sent_multiple_files": "Mehrer Ahäng gsändet", 124 | "not_loaded": "Nachrichtä nid glade, klick zum springe", 125 | "timed_out": "Du häsch e Timeout für {{time}}.", 126 | "load_file": "Lade Datei" 127 | }, 128 | "notifications": { 129 | "muted": "Stummgschalte", 130 | "default": "Standard benutze", 131 | "all": "Alli Nachrichte", 132 | "mention": "Nur Erwähnige", 133 | "none": "Cheni" 134 | }, 135 | "search": { 136 | "sort": { 137 | "relevance": "Relevanz", 138 | "latest": "Nöiste", 139 | "oldest": "Alteste" 140 | }, 141 | "title": "Sueche" 142 | }, 143 | "failed_upload": "sUelade fehlgschlagä!", 144 | "attached_file": "{{filename}} Aaghange", 145 | "typing": { 146 | "single": "{{user}} schriibt…", 147 | "multiple": "{{userlist}} ond {{user}} schriibe…", 148 | "several": "Mehreri Lüüt schriibe…" 149 | }, 150 | "system": { 151 | "user_joined": "{{user}} isch bigtrete", 152 | "user_left": "{{user}} het verlaa", 153 | "user_kicked": "{{user}} isch usegworfe worde", 154 | "user_banned": "{{user}} isch gsperrt worde", 155 | "added_by": "{{user}} isch vo {{other_user}} hizuegfüegt worde", 156 | "removed_by": "{{user}} isch vo {{other_user}} usegworfe worde", 157 | "channel_renamed": "{{user}} het de Kanal zu {{name}} umbenannt", 158 | "channel_description_changed": "{{user}} het de Kanalbeschribig gändert", 159 | "channel_icon_changed": "{{user}} het de Kanal-Icon gändert", 160 | "channel_ownership_changed": "{{from}} hät {{to}} gruppe besitzerrächte gä", 161 | "registered_at": "Registriert am {{time}}" 162 | }, 163 | "start": { 164 | "group": "Das isch de Start vo de Konversation.", 165 | "saved": "Das isch de Start vo dini Notize." 166 | }, 167 | "voice": { 168 | "connected": "Sprachchat verbunde", 169 | "leave": "Verlaa", 170 | "mute": "Stummschalte", 171 | "unmute": "Stummschaltig ufhäbe" 172 | }, 173 | "nsfw": { 174 | "channel": { 175 | "marked": "Diese Kanal isch als NSFW markiert worde.", 176 | "confirm": "Im Kanal inegaa" 177 | }, 178 | "confirm": "Ich bestätige dass ich zumindenscht 18 jahr alt bi." 179 | }, 180 | "unknown_user": "", 181 | "edited": "(editiert)", 182 | "bot": "Bot", 183 | "errors": { 184 | "title": "Ups, hier isch nüt!", 185 | "nochannels": "De Server het cheni Kanäle, oder du häsch che Zuegriff zu dene.", 186 | "nochannel": "Ches Kanal" 187 | }, 188 | "reply": { 189 | "replying": "Antwortet zue", 190 | "toggle": "Autor erwähne" 191 | }, 192 | "user_timed_out": "User hät e Timeout für {{time}}.", 193 | "new_to_revolt": "Neu bi Revolt", 194 | "reactions": { 195 | "unknown_reacted": "{{count}} persone hei reagiert", 196 | "single_reacted": "1 person hät reagiert", 197 | "people_reacted": "{{people}} hei reagiert", 198 | "others_reacted": "{{userlist}} u {{count}} angeri hei reagiert" 199 | }, 200 | "new_to_server": "Neu ufm Server", 201 | "team": "Offizielli Kommunikation", 202 | "bridged": "Nachricht isch uf ere angeri plattform gsendet worde" 203 | }, 204 | "groups": { 205 | "create": "Erstell e Gruppe", 206 | "name": "Gruppename", 207 | "description": "Gruppebeschriibig", 208 | "owner": "Gruppebesitzer" 209 | }, 210 | "servers": { 211 | "create": "E Server erstelle", 212 | "name": "Servername", 213 | "description": "Serverbeschriibig", 214 | "channel_name": "Kanalname", 215 | "channel_type": "Kanaltyp", 216 | "channel_description": "Kanalbeschriibig", 217 | "custom_banner": "Benutzerdefiniertes Banner", 218 | "owner": "Serverbesitzer", 219 | "text_channel": "Textkanal", 220 | "voice_channel": "Sprochkanal", 221 | "category_name": "Kategoriename" 222 | } 223 | }, 224 | "settings": { 225 | "title": "Istellige", 226 | "categories": { 227 | "user_settings": "Benutzer-istellige", 228 | "client_settings": "Clientistellige", 229 | "danger_zone": "Gefahräzone" 230 | }, 231 | "pages": { 232 | "account": { 233 | "2fa": { 234 | "two_factor_off": "Du muesch Zwei-Faktor-Authentifizierig aktiviere!", 235 | "view_recovery": "Wiederherstelligs Codes aluege", 236 | "view_recovery_long": "2FA Wiederherstelligs Codes aluege und abelade.", 237 | "remove_auth": "Authenticator entferne", 238 | "add_auth": "Authenticator hizuefüege", 239 | "description": "Mehr sicherheit uf dim Account wenn du 2FA aktiviersch.", 240 | "title": "Zwei-Factor-Authentifizierig", 241 | "generate_recovery": "Wiederherstelligcodes erstelle", 242 | "generate_recovery_long": "Mach dich bereit 2FA zu benutze, in dem du e Wiederherstelligs Methode erstellsch.", 243 | "two_factor_on": "Zwei-Factor-Authentifizierig isch zurzit aktiviert." 244 | }, 245 | "change_field": "Ändere", 246 | "manage": { 247 | "title": "Account Management" 248 | }, 249 | "title": "Mi Account", 250 | "unique_id": "Das isch e einzigartige User identifikation für di account." 251 | } 252 | }, 253 | "actions": { 254 | "edit": "Bearbeite {{name}}", 255 | "remove": "Entfernä", 256 | "upload": "Ufeladä", 257 | "max_filesize": "(max {{filesize}})" 258 | } 259 | }, 260 | "permissions": { 261 | "required": "Berechtigungen erforderlich" 262 | } 263 | }, 264 | "dayjs": { 265 | "lastDay": "[Gestern um] {{time}}", 266 | "sameDay": "[Heute um] {{time}}", 267 | "nextDay": "[Morgen um] {{time}}", 268 | "lastWeek": "[Letzter] dddd [um] {{time}}", 269 | "nextWeek": "dddd [um] {{time}}", 270 | "defaults": { 271 | "date_separator": "." 272 | } 273 | }, 274 | "error": { 275 | "UnknownError": "Siehe Konsole.", 276 | "InternalError": "Interner Fehler.", 277 | "MissingPermission": "Fehlende Erlaubnis.", 278 | "AlreadyFriends": "Bereits mit diesem Benutzer befreundet.", 279 | "OperationFailed": "Operation fehlgeschlagen.", 280 | "InvalidInvite": "Ungültiger Code", 281 | "InvalidCredentials": "Email oder Passwort ist falsch.", 282 | "MissingInvite": "Fehlender Einladungscode in Anfrage.", 283 | "UsernameTaken": "Benutzername ist vergeben.", 284 | "Unauthorized": "Unbefugt.", 285 | "Unlabelled": "Etwas passiert.", 286 | "Blocked": "Sie haben diesen Benutzer blockiert.", 287 | "NetworkError": "Netzwerkfehler.", 288 | "DatabaseError": "Datenbankfehler.", 289 | "InvalidToken": "Ungültiges Token", 290 | "RenderFail": "Rendern der Vorlage fehlgeschlagen.", 291 | "InvalidSession": "Ungültige Sitzung.", 292 | "UnverifiedAccount": "Unbestätigtes Konto.", 293 | "UnknownUser": "Unbekannter Benutzer.", 294 | "CompromisedPassword": "Dieses Passwort ist kompromittiert." 295 | }, 296 | "quantities": { 297 | "members": { 298 | "one": "1 Mitglied", 299 | "many": "{{count}} Mitglieder" 300 | } 301 | }, 302 | "notifications": { 303 | "now_friends": "Du bist jetzt mit @{{person}} befreundet!", 304 | "sent_request": "@{{person}} hat dir eine Freundschaftsanfrage gesendet." 305 | }, 306 | "actions": { 307 | "submit": "Iigeh" 308 | } 309 | } 310 | -------------------------------------------------------------------------------- /kk.json: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "loading": "Жүктелуде…", 4 | "off": "Өшірулі", 5 | "image_by": "Суретті жасаған:", 6 | "tos": "Қолдану шарттары", 7 | "privacy": "Құпиялық саясаты", 8 | "on": "Қосулы", 9 | "disabled": "Өшірулі", 10 | "unavailable": "Қолжетімсіз", 11 | "learn_more": "Толығырақ", 12 | "about": "Жоба жайында" 13 | }, 14 | "login": { 15 | "title": "Кіру", 16 | "email": "Электрондық пошта", 17 | "totp": "Аутентификатор қолданба", 18 | "log_out_other": "Басқа сессиялардан шығу", 19 | "enter": { 20 | "email": "Электрондық поштаңызды енгізіңіз.", 21 | "invite": "Шақыру кодын енгізіңіз.", 22 | "current_password": "Қазіргі құпиясөзіңізді енгізіңіз.", 23 | "username": "Пайдаланушы атыңызды енгізіңіз.", 24 | "password": "Құпиясөзіңізді енгізіңіз.", 25 | "new_password": "Жаңа құпиясөз енгізіңіз." 26 | }, 27 | "missing_verification": "Хат келмеді ме?", 28 | "email_delay": "Сізге растау хатын жібердік. Келуі 10 минуттың аралығында болуы тиіс.", 29 | "check_spam": "Оны таба алмасаңыз, спам қалтасын ашып көріңіз", 30 | "verifying_account": "Тіркелгіңізді растап жатырмыз…", 31 | "verified_account": "Тіркелгіңіз расталды!", 32 | "error": { 33 | "reset": "Қалпына келтіре алмадық!", 34 | "verify": "Растай алмадық!", 35 | "create": "Тіркелгі жасай алмадық!", 36 | "login": "Жүйеге кіре алмадық!", 37 | "resend": "Қайта жібере алмадық!" 38 | }, 39 | "welcome": "Қош келдіңіз!", 40 | "subtitle": "Revolt-қа кіру", 41 | "welcome2": "Сәлем!", 42 | "subtitle2": "Тіркелгі жасау", 43 | "register": "Тіркелу", 44 | "username": "Пайдаланушы аты", 45 | "password": "Құпиясөз", 46 | "new_password": "Жаңа құпиясөз", 47 | "recovery": "Сақтық код", 48 | "invite": "Шақыру коды", 49 | "current_password": "Қазіргі құпиясөз", 50 | "forgot": "Құпиясөзіңізді ұмытып қалдыңыз ба?", 51 | "reset": "Құпиясөзді қалпына келтіру", 52 | "set_password": "Жаңа құпиясөз қою", 53 | "new": "Revolt-қа жаңадан келдіңіз бе?", 54 | "existing": "Тіркелгі жасап қойғансыз ба?", 55 | "create": "Жаңа тіркелгі жасаңыз", 56 | "remembered": "Кіруге оралу", 57 | "resend": "Растау хатын қайта жіберу", 58 | "cancel": "Керек емес", 59 | "check_mail": "Поштаңызды тексеріңіз!", 60 | "open_mail_provider": "{{provider}} ашу", 61 | "successful_registration": "Тіркелгі сәтті жасалды!", 62 | "verified_continue": "Кіруді жалғастыру", 63 | "unofficial_instance": "Үшінші тараптың инстансы." 64 | }, 65 | "app": { 66 | "status": { 67 | "focus": "Жинақталып жатыр", 68 | "busy": "Мазаламаңдар", 69 | "online": "Желіде", 70 | "idle": "Белсенді емес", 71 | "invisible": "Елес", 72 | "offline": "Желіде емес", 73 | "reconnect": "Қайта қосылу" 74 | }, 75 | "navigation": { 76 | "tabs": { 77 | "dev": "Әзірлеуші", 78 | "home": "Басты бет", 79 | "friends": "Достар", 80 | "unreads": "Оқылмағандар", 81 | "saved": "Сақталған жазбалар" 82 | } 83 | }, 84 | "home": { 85 | "join-testers": "Тестерлер серверіне қосылыңыз", 86 | "join-testers_desc": "Тікелей бізге мәселе жайлы хабарлап, бірдеңе ұсына аласыз.", 87 | "donate_desc": "Жобаны ақша жіберіп қолдаңыз — рақмет!", 88 | "feedback_desc": "Пікір жазып, қолданбамызды қалай жақсарта алатынымызды көрсете аласыз.", 89 | "settings-tooltip": "Одан басқа баптауды үстіңгі сол жақтағы пайдаланушы суретін тінтуірдің оң жағын басып, немесе басты бетте болсаңыз, сол жағын басып аша аласыз.", 90 | "group_desc": "Бүкіл достарыңызды шақырып, бот қосып, шу той бастаңыз.", 91 | "directs": "Жеке хаттар", 92 | "goto-testers": "Тестерлер серверіне бару", 93 | "goto-testers_desc": "Тікелей бізге мәселе жайлы хабарлап, бірдеңе ұсына аласыз.", 94 | "donate": "Revolt-ты қаржылай қолдау", 95 | "feedback": "Revolt жайлы пікір айту", 96 | "settings": "Баптауды ашу", 97 | "discover": "Revolt-ты шолу", 98 | "discover_desc": "Қызығушылықтарыңызға сәйкес қауым табыңыз.", 99 | "group": "Топ құру" 100 | }, 101 | "main": { 102 | "categories": { 103 | "conversations": "Әңгімелер", 104 | "participants": "Қатысушылар", 105 | "channels": "Арналар", 106 | "members": "Мүшелер" 107 | }, 108 | "channel": { 109 | "message_where": "{{channel_name}} арнасына хат жіберу", 110 | "message_saved": "Жазбаларыңызға сақтау", 111 | "reactions": { 112 | "others_reacted": "{{userlist}} және тағы {{count}} адам реакция қосты", 113 | "people_reacted": "{{people}} реакция қосты", 114 | "unknown_reacted": "{{count}} адам реакция қосты", 115 | "single_reacted": "1 адам реакция қосты" 116 | }, 117 | "reply": { 118 | "replying": "Жауап:", 119 | "toggle": "Жауап бергенде авторды атап өту/өтпеу" 120 | }, 121 | "typing": { 122 | "several": "Бірнеше адам жазып жатыр…", 123 | "single": "{{user}} жазып жатыр…", 124 | "multiple": "{{userlist}} және {{user}} жазып жатыр…" 125 | }, 126 | "system": { 127 | "user_joined": "{{user}} қосылды", 128 | "user_banned": "{{user}} бұғатталды", 129 | "added_by": "{{user}} {{other_user}} арқылы қосылды", 130 | "channel_renamed": "{{user}} арнаның атауын {{name}} деп өзгертті", 131 | "channel_description_changed": "{{user}} арна сипаттамасын өзгертті", 132 | "channel_ownership_changed": "{{from}} {{to}} деген адамға топ иелігін берді", 133 | "user_left": "{{user}} шығып кетті", 134 | "user_kicked": "{{user}} шығарылды", 135 | "removed_by": "{{other_user}} {{user}} деген адамды бұғаттады", 136 | "channel_icon_changed": "{{user}} арна суретін өзгертті", 137 | "registered_at": "{{time}} тіркелді" 138 | }, 139 | "voice": { 140 | "connected": "Дауысарнаға қосылдыңыз", 141 | "mute": "Дауысты сөндіру", 142 | "unmute": "Дауысты қосу", 143 | "leave": "Шығу" 144 | }, 145 | "misc": { 146 | "new_messages": "{{time_ago}} бері жіберілген жаңа хаттар", 147 | "failed_load": "Хат жүктей алмадық.", 148 | "blocked_user": "Бұғатталған адам", 149 | "sent_file": "Құжат жіберді", 150 | "viewing_old": "Ескі хаттарды оқып жатырсыз", 151 | "jump_present": "Осы шаққа оралу", 152 | "jump_beginning": "Ең басын көру", 153 | "spoiler_attachment": "Спойлер", 154 | "not_loaded": "Хат жүктелмеді. Өту үшін басыңыз", 155 | "no_sending": "Мына арнада хат жіберуге құқыңыз жоқ.", 156 | "timed_out": "{{time}} дейін хат жіберуге құқыңыз жоқ.", 157 | "blocked_messages": "{{count}} бұғатталған хат", 158 | "sent_multiple_files": "Бірнеше құжат жіберді", 159 | "load_file": "Құжатты жүктеу" 160 | }, 161 | "nsfw": { 162 | "channel": { 163 | "marked": "Бұл арна ересектерге арналған.", 164 | "confirm": "Арнаны ашу" 165 | }, 166 | "confirm": "Мен 18 жастан асқанымды растаймын." 167 | }, 168 | "bridged": "Хат басқа платформаға жіберілді", 169 | "new_to_server": "Мына серверге жаңадан келген", 170 | "user_timed_out": "Пайдаланушының {{time}} дейін хат жіберуге құқы жоқ.", 171 | "notifications": { 172 | "none": "Ешқайсы", 173 | "default": "Әдепкі", 174 | "all": "Барлық хат", 175 | "mention": "Тек атап өтулер", 176 | "muted": "Сөндірілген" 177 | }, 178 | "search": { 179 | "sort": { 180 | "oldest": "Ең ескі", 181 | "relevance": "Өзекті", 182 | "latest": "Ең соңғы" 183 | }, 184 | "title": "Іздеу" 185 | }, 186 | "errors": { 187 | "nochannels": "Мына серверде еш арна жоқ, немесе сізде солардың ешқайсын көруге құқыңыз жоқ.", 188 | "title": "Ойбай, түк жоқ екен!", 189 | "nochannel": "Арна жоқ" 190 | }, 191 | "message_who": "{{person}} деген адамға хат жіберу", 192 | "uploading_file": "Жүктеп салынуда…", 193 | "failed_upload": "Жүктеп сала алмадық!", 194 | "attached_file": "{{filename}} бекітілді", 195 | "start": { 196 | "group": "Әңгіменіздің басы осында.", 197 | "saved": "Жазбаларыңыздың басы осында." 198 | }, 199 | "unknown_user": "<Белгісіз адам>", 200 | "edited": "(өңделген)", 201 | "bot": "Бот", 202 | "bridge": "көпір", 203 | "new_to_revolt": "Revolt-қа жаңадан келген", 204 | "team": "Ресми әңгіме" 205 | }, 206 | "groups": { 207 | "owner": "Топ құрылтайшысы", 208 | "create": "Топ құру", 209 | "name": "Топ атауы", 210 | "description": "Топ сипаты" 211 | }, 212 | "servers": { 213 | "create": "Сервер құру", 214 | "channel_type": "Арна түрі", 215 | "text_channel": "Мәтін арна", 216 | "name": "Сервер атауы", 217 | "description": "Сервер сипаты", 218 | "channel_name": "Арна атауы", 219 | "category_name": "Санат атауы", 220 | "channel_description": "Санат сипаты", 221 | "custom_banner": "Ерекше баннер", 222 | "owner": "Сервер иесі", 223 | "voice_channel": "Дауыс арна" 224 | } 225 | }, 226 | "settings": { 227 | "categories": { 228 | "danger_zone": "Қауіпті", 229 | "user_settings": "Пайдаланушы баптауы", 230 | "client_settings": "Клиент баптауы" 231 | }, 232 | "actions": { 233 | "upload": "Жүктеп салу", 234 | "remove": "Алып тастау", 235 | "max_filesize": "(ең жоғарғы көлемі — {{filesize}})", 236 | "edit": "{{name}} өңдеу" 237 | }, 238 | "pages": { 239 | "account": { 240 | "unique_id": "Бұл тіркелгіңіздің ерекше идентификаторы.", 241 | "2fa": { 242 | "title": "Екі сатылы растау", 243 | "description": "Тіркелгіңізге 2FA қосып қауіпсіздігіңізді нығайтыңыз.", 244 | "view_recovery": "Сақтық кодтарды көру", 245 | "view_recovery_long": "2FA-ның сақтық кодтарын көру не жүктеп алу.", 246 | "generate_recovery": "Сақтық код шығару", 247 | "add_auth": "Аутентификатор қосу", 248 | "remove_auth": "Аутентификаторды алып тастау", 249 | "two_factor_on": "Екі сатылы растау әзір қосулы.", 250 | "two_factor_off": "Екі сатылы растауды қоспадыңыз!" 251 | }, 252 | "manage": { 253 | "description": "Кез келген уақытта тіркелгіңізді сөндіріп немесе өшіріп тастай аласыз. Сөйтсеңіз белсенді сессияларыңыздың барлығы аяқталады.", 254 | "disable_description": "Бізге хабарласпасаңыз, тіркелгіңізге кіре алмай қоясыз — дегенмен, сіздің деректеріңіз өшірілінбейді.", 255 | "delete": "Тіркелгіңізді өшіріп тастауға белгілеу", 256 | "title": "Тіркелгіні басқару", 257 | "disable": "Тіркелгіні өшіру" 258 | }, 259 | "title": "Тіркелгім", 260 | "change_field": "Өзгерту" 261 | }, 262 | "profile": { 263 | "info": "Ақпарат", 264 | "placeholder": "Өзіңіз жайлы жазып жіберіңіз…", 265 | "edit_background": "Артқы жағын өңдеу", 266 | "profile_picture": "Бейін суреті", 267 | "custom_background": "Артқы жағын ерекшелеу", 268 | "edit_profile": "Бейінді өңдеу" 269 | }, 270 | "sessions": { 271 | "title": "Сессиялар", 272 | "active_sessions": "Белсенді сессиялар", 273 | "this_device": "Мына құрылғы", 274 | "created": "{{time_ago}} жасалған", 275 | "logout": "Басқа сессиялардан шығу" 276 | }, 277 | "audio": { 278 | "output_device": "Динамик / Құлаққап", 279 | "tip_retry": "Revolt-қа микрофоныңызға қол жеткізуге рұқсат бермедіңіз. {{retryBtn}}.", 280 | "button_retry": "қайталап көріңізші", 281 | "title": "Дауысты баптау", 282 | "input_device": "Микрофон", 283 | "button_grant": "Рұқсат беру" 284 | }, 285 | "appearance": { 286 | "title": "Сырт келбеті", 287 | "colours": { 288 | "title": "Түстер" 289 | }, 290 | "advanced_options": { 291 | "title": "Кеңейтілген баптау" 292 | }, 293 | "color": { 294 | "dark": "қара", 295 | "light": "ақ" 296 | }, 297 | "appearance_options": { 298 | "title": "Сырт келбет баптауы", 299 | "show_send_desc": "Өшірсеңіз, Хат жіберу түймесі тек ұялы телефонда көрініп тұрады.", 300 | "show_send": "Ылғи Хат жіберу түймесін көрсету", 301 | "show_account_age": "Кіру хаттардың қасына тіркелгі қашан жасалғанын ылғи көрсету" 302 | }, 303 | "theme": "Түстер", 304 | "emoji": { 305 | "title": "Эмоджи" 306 | }, 307 | "fonts": { 308 | "title": "Қаріптер" 309 | }, 310 | "display": { 311 | "default": "Әдепкі", 312 | "compact": "Ықшамды", 313 | "default_description": "Әдемі, жылтыр, заманауи.", 314 | "compact_description": "IRC секілді." 315 | }, 316 | "discover": { 317 | "title": "Басқа түстерді көру", 318 | "description": "Қауым жасаған түстерді шолыңыз" 319 | }, 320 | "accent_selector": "Басты түс" 321 | } 322 | }, 323 | "title": "Баптау" 324 | } 325 | }, 326 | "actions": { 327 | "submit": "Жіберу" 328 | } 329 | } 330 | --------------------------------------------------------------------------------