Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eeb1bd80cc | ||
|
|
e6b8538863 | ||
|
|
9dc38932fb | ||
|
|
e9b4a4adfc | ||
|
|
76c78c7252 |
@@ -15,13 +15,13 @@ type: application
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 0.2.4
|
||||
version: 0.2.5
|
||||
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
appVersion: "1.20.0"
|
||||
appVersion: "1.20.1"
|
||||
|
||||
dependencies:
|
||||
- alias: postgresql
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
REACT_APP_VERSION=1.20.0
|
||||
REACT_APP_VERSION=1.20.1
|
||||
|
||||
Generated
+12
-12
@@ -12,7 +12,7 @@
|
||||
"dequal": "^2.0.3",
|
||||
"easymde": "^2.18.0",
|
||||
"history": "^5.3.0",
|
||||
"i18next": "^23.11.5",
|
||||
"i18next": "^23.12.2",
|
||||
"i18next-browser-languagedetector": "^8.0.0",
|
||||
"initials": "^3.1.2",
|
||||
"js-cookie": "^3.0.5",
|
||||
@@ -30,7 +30,7 @@
|
||||
"react-datepicker": "^4.25.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-i18next": "^14.1.2",
|
||||
"react-i18next": "^15.0.0",
|
||||
"react-input-mask": "^2.0.4",
|
||||
"react-markdown": "^8.0.7",
|
||||
"react-photoswipe-gallery": "^2.2.7",
|
||||
@@ -2007,9 +2007,9 @@
|
||||
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.24.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz",
|
||||
"integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==",
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz",
|
||||
"integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==",
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
},
|
||||
@@ -11975,9 +11975,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/i18next": {
|
||||
"version": "23.11.5",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.5.tgz",
|
||||
"integrity": "sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==",
|
||||
"version": "23.12.2",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.12.2.tgz",
|
||||
"integrity": "sha512-XIeh5V+bi8SJSWGL3jqbTEBW5oD6rbP5L+E7dVQh1MNTxxYef0x15rhJVcRb7oiuq4jLtgy2SD8eFlf6P2cmqg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
@@ -22084,11 +22084,11 @@
|
||||
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
|
||||
},
|
||||
"node_modules/react-i18next": {
|
||||
"version": "14.1.2",
|
||||
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.2.tgz",
|
||||
"integrity": "sha512-FSIcJy6oauJbGEXfhUgVeLzvWBhIBIS+/9c6Lj4niwKZyGaGb4V4vUbATXSlsHJDXXB+ociNxqFNiFuV1gmoqg==",
|
||||
"version": "15.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.0.0.tgz",
|
||||
"integrity": "sha512-2O3IgF4zivg57Q6p6i+ChDgJ371IDcEWbuWC6gvoh5NbkDMs0Q+O7RPr4v61+Se32E0V+LmtwePAeqWZW0bi6g==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
"@babel/runtime": "^7.24.8",
|
||||
"html-parse-stringify": "^3.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
+2
-2
@@ -65,7 +65,7 @@
|
||||
"dequal": "^2.0.3",
|
||||
"easymde": "^2.18.0",
|
||||
"history": "^5.3.0",
|
||||
"i18next": "^23.11.5",
|
||||
"i18next": "^23.12.2",
|
||||
"i18next-browser-languagedetector": "^8.0.0",
|
||||
"initials": "^3.1.2",
|
||||
"js-cookie": "^3.0.5",
|
||||
@@ -83,7 +83,7 @@
|
||||
"react-datepicker": "^4.25.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-i18next": "^14.1.2",
|
||||
"react-i18next": "^15.0.0",
|
||||
"react-input-mask": "^2.0.4",
|
||||
"react-markdown": "^8.0.7",
|
||||
"react-photoswipe-gallery": "^2.2.7",
|
||||
|
||||
+3
-3
@@ -58,9 +58,9 @@ i18n
|
||||
.use(initReactI18next)
|
||||
.init({
|
||||
resources: embeddedLocales,
|
||||
fallbackLng: 'en',
|
||||
fallbackLng: 'en-US',
|
||||
supportedLngs: languages,
|
||||
load: 'languageOnly',
|
||||
load: 'currentOnly',
|
||||
interpolation: {
|
||||
escapeValue: false,
|
||||
format(value, format, language) {
|
||||
@@ -80,7 +80,7 @@ i18n
|
||||
});
|
||||
|
||||
i18n.loadCoreLocale = async (language = i18n.resolvedLanguage) => {
|
||||
if (language === 'en') {
|
||||
if (language === i18n.options.fallbackLng[0]) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'bg',
|
||||
language: 'bg-BG',
|
||||
country: 'bg',
|
||||
name: 'Български',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'cs',
|
||||
language: 'cs-CZ',
|
||||
country: 'cz',
|
||||
name: 'Čeština',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'da',
|
||||
language: 'da-DK',
|
||||
country: 'dk',
|
||||
name: 'Dansk',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'de',
|
||||
language: 'de-DE',
|
||||
country: 'de',
|
||||
name: 'Deutsch',
|
||||
embeddedLocale: login,
|
||||
@@ -4,8 +4,8 @@ import login from './login';
|
||||
import core from './core';
|
||||
|
||||
export default {
|
||||
language: 'en',
|
||||
country: 'gb',
|
||||
language: 'en-US',
|
||||
country: 'us',
|
||||
name: 'English',
|
||||
embeddedLocale: merge(login, core),
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'es',
|
||||
language: 'es-ES',
|
||||
country: 'es',
|
||||
name: 'Español',
|
||||
embeddedLocale: login,
|
||||
@@ -0,0 +1,254 @@
|
||||
import dateFns from 'date-fns/locale/fa-IR';
|
||||
|
||||
export default {
|
||||
dateFns,
|
||||
|
||||
format: {
|
||||
date: 'M/d/yyyy',
|
||||
time: 'p',
|
||||
dateTime: '$t(format:date) $t(format:time)',
|
||||
longDate: 'MMM d',
|
||||
longDateTime: "MMMM d 'at' p",
|
||||
fullDate: 'MMM d, y',
|
||||
fullDateTime: "MMMM d, y 'at' p",
|
||||
},
|
||||
|
||||
translation: {
|
||||
common: {
|
||||
aboutPlanka: 'درباره Planka',
|
||||
account: 'حساب کاربری',
|
||||
actions: 'اقدامات',
|
||||
addAttachment_title: 'اضافه کردن پیوست',
|
||||
addComment: 'اضافه کردن نظر',
|
||||
addManager_title: 'اضافه کردن مدیر',
|
||||
addMember_title: 'اضافه کردن عضو',
|
||||
addUser_title: 'اضافه کردن کاربر',
|
||||
administrator: 'مدیر سیستم',
|
||||
all: 'همه',
|
||||
allChangesWillBeAutomaticallySavedAfterConnectionRestored:
|
||||
'تمام تغییرات به صورت خودکار ذخیره میشوند<br />بعد از بازیابی ارتباط.',
|
||||
areYouSureYouWantToDeleteThisAttachment:
|
||||
'آیا مطمئن هستید که میخواهید این پیوست را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisBoard: 'آیا مطمئن هستید که میخواهید این برد را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisCard: 'آیا مطمئن هستید که میخواهید این کارت را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisComment: 'آیا مطمئن هستید که میخواهید این نظر را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisLabel: 'آیا مطمئن هستید که میخواهید این برچسب را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisList: 'آیا مطمئن هستید که میخواهید این لیست را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisProject: 'آیا مطمئن هستید که میخواهید این پروژه را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisTask: 'آیا مطمئن هستید که میخواهید این وظیفه را حذف کنید؟',
|
||||
areYouSureYouWantToDeleteThisUser: 'آیا مطمئن هستید که میخواهید این کاربر را حذف کنید؟',
|
||||
areYouSureYouWantToLeaveBoard: 'آیا مطمئن هستید که میخواهید از برد خارج شوید؟',
|
||||
areYouSureYouWantToLeaveProject: 'آیا مطمئن هستید که میخواهید از پروژه خارج شوید؟',
|
||||
areYouSureYouWantToRemoveThisManagerFromProject:
|
||||
'آیا مطمئن هستید که میخواهید این مدیر را از پروژه حذف کنید؟',
|
||||
areYouSureYouWantToRemoveThisMemberFromBoard:
|
||||
'آیا مطمئن هستید که میخواهید این عضو را از برد حذف کنید؟',
|
||||
attachment: 'پیوست',
|
||||
attachments: 'پیوستها',
|
||||
authentication: 'احراز هویت',
|
||||
background: 'پسزمینه',
|
||||
board: 'برد',
|
||||
boardNotFound_title: 'برد یافت نشد',
|
||||
canComment: 'میتواند نظر بدهد',
|
||||
canEditContentOfBoard: 'میتواند محتوای برد را ویرایش کند.',
|
||||
canOnlyViewBoard: 'فقط میتواند برد را مشاهده کند.',
|
||||
cardActions_title: 'اقدامات کارت',
|
||||
cardNotFound_title: 'کارت یافت نشد',
|
||||
cardOrActionAreDeleted: 'کارت یا اقدام حذف شدهاند.',
|
||||
color: 'رنگ',
|
||||
copy_inline: 'کپی',
|
||||
createBoard_title: 'ایجاد برد',
|
||||
createLabel_title: 'ایجاد برچسب',
|
||||
createNewOneOrSelectExistingOne: 'یک جدید ایجاد کنید یا<br />یکی موجود را انتخاب کنید.',
|
||||
createProject_title: 'ایجاد پروژه',
|
||||
createTextFile_title: 'ایجاد فایل متنی',
|
||||
currentPassword: 'رمز عبور فعلی',
|
||||
dangerZone_title: 'منطقه خطر',
|
||||
date: 'تاریخ',
|
||||
dueDate: 'تاریخ سررسید',
|
||||
dueDate_title: 'تاریخ سررسید',
|
||||
deleteAttachment_title: 'حذف پیوست',
|
||||
deleteBoard_title: 'حذف برد',
|
||||
deleteCard_title: 'حذف کارت',
|
||||
deleteComment_title: 'حذف نظر',
|
||||
deleteLabel_title: 'حذف برچسب',
|
||||
deleteList_title: 'حذف لیست',
|
||||
deleteProject_title: 'حذف پروژه',
|
||||
deleteTask_title: 'حذف وظیفه',
|
||||
deleteUser_title: 'حذف کاربر',
|
||||
description: 'توضیحات',
|
||||
detectAutomatically: 'تشخیص خودکار',
|
||||
dropFileToUpload: 'فایل را برای آپلود بکشید',
|
||||
editor: 'ویرایشگر',
|
||||
editAttachment_title: 'ویرایش پیوست',
|
||||
editAvatar_title: 'ویرایش آواتار',
|
||||
editBoard_title: 'ویرایش برد',
|
||||
editDueDate_title: 'ویرایش تاریخ سررسید',
|
||||
editEmail_title: 'ویرایش ایمیل',
|
||||
editInformation_title: 'ویرایش اطلاعات',
|
||||
editLabel_title: 'ویرایش برچسب',
|
||||
editPassword_title: 'ویرایش رمز عبور',
|
||||
editPermissions_title: 'ویرایش دسترسیها',
|
||||
editStopwatch_title: 'ویرایش کرنومتر',
|
||||
editUsername_title: 'ویرایش نام کاربری',
|
||||
email: 'ایمیل',
|
||||
emailAlreadyInUse: 'ایمیل قبلا استفاده شده است',
|
||||
enterCardTitle: 'عنوان کارت را وارد کنید... [Ctrl+Enter] برای باز شدن خودکار.',
|
||||
enterDescription: 'توضیحات را وارد کنید...',
|
||||
enterFilename: 'نام فایل را وارد کنید',
|
||||
enterListTitle: 'عنوان لیست را وارد کنید...',
|
||||
enterProjectTitle: 'عنوان پروژه را وارد کنید',
|
||||
enterTaskDescription: 'توضیحات وظیفه را وارد کنید...',
|
||||
filterByLabels_title: 'فیلتر بر اساس برچسبها',
|
||||
filterByMembers_title: 'فیلتر بر اساس اعضا',
|
||||
fromComputer_title: 'از کامپیوتر',
|
||||
fromTrello: 'از Trello',
|
||||
general: 'عمومی',
|
||||
hours: 'ساعتها',
|
||||
importBoard_title: 'وارد کردن برد',
|
||||
invalidCurrentPassword: 'رمز عبور فعلی نامعتبر است',
|
||||
labels: 'برچسبها',
|
||||
language: 'زبان',
|
||||
leaveBoard_title: 'ترک برد',
|
||||
leaveProject_title: 'ترک پروژه',
|
||||
linkIsCopied: 'لینک کپی شد',
|
||||
list: 'لیست',
|
||||
listActions_title: 'اقدامات لیست',
|
||||
managers: 'مدیران',
|
||||
managerActions_title: 'اقدامات مدیر',
|
||||
members: 'اعضا',
|
||||
memberActions_title: 'اقدامات عضو',
|
||||
minutes: 'دقیقهها',
|
||||
moveCard_title: 'انتقال کارت',
|
||||
name: 'نام',
|
||||
newestFirst: 'جدیدترین اول',
|
||||
newEmail: 'ایمیل جدید',
|
||||
newPassword: 'رمز عبور جدید',
|
||||
newUsername: 'نام کاربری جدید',
|
||||
noConnectionToServer: 'ارتباط با سرور قطع است',
|
||||
noBoards: 'بردی وجود ندارد',
|
||||
noLists: 'لیستی وجود ندارد',
|
||||
noProjects: 'پروژهای وجود ندارد',
|
||||
notifications: 'اعلانها',
|
||||
noUnreadNotifications: 'اعلان خوانده نشدهای وجود ندارد.',
|
||||
oldestFirst: 'قدیمیترین اول',
|
||||
openBoard_title: 'باز کردن برد',
|
||||
optional_inline: 'اختیاری',
|
||||
organization: 'سازمان',
|
||||
phone: 'تلفن',
|
||||
preferences: 'ترجیحات',
|
||||
pressPasteShortcutToAddAttachmentFromClipboard:
|
||||
'نکته: با فشردن Ctrl-V (Cmd-V در مک) میتوانید پیوست را از کلیپ بورد اضافه کنید.',
|
||||
project: 'پروژه',
|
||||
projectNotFound_title: 'پروژه یافت نشد',
|
||||
removeManager_title: 'حذف مدیر',
|
||||
removeMember_title: 'حذف عضو',
|
||||
searchLabels: 'جستجوی برچسبها...',
|
||||
searchMembers: 'جستجوی اعضا...',
|
||||
searchUsers: 'جستجوی کاربران...',
|
||||
searchCards: 'جستجوی کارتها...',
|
||||
seconds: 'ثانیهها',
|
||||
selectBoard: 'انتخاب برد',
|
||||
selectList: 'انتخاب لیست',
|
||||
selectPermissions_title: 'انتخاب دسترسیها',
|
||||
selectProject: 'انتخاب پروژه',
|
||||
settings: 'تنظیمات',
|
||||
sortList_title: 'مرتبسازی لیست',
|
||||
stopwatch: 'کرنومتر',
|
||||
subscribeToMyOwnCardsByDefault: 'به طور پیشفرض به کارتهای خودم مشترک شوم',
|
||||
taskActions_title: 'اقدامات وظیفه',
|
||||
tasks: 'وظایف',
|
||||
thereIsNoPreviewAvailableForThisAttachment: 'پیش نمایشی برای این پیوست موجود نیست.',
|
||||
time: 'زمان',
|
||||
title: 'عنوان',
|
||||
userActions_title: 'اقدامات کاربر',
|
||||
userAddedThisCardToList: '<0>{{user}}</0><1> این کارت را به {{list}} اضافه کرد</1>',
|
||||
userLeftNewCommentToCard: '{{user}} نظر جدید «{{comment}}» را به <2>{{card}}</2> اضافه کرد',
|
||||
userMovedCardFromListToList:
|
||||
'{{user}} <2>{{card}}</2> را از {{fromList}} به {{toList}} منتقل کرد',
|
||||
userMovedThisCardFromListToList:
|
||||
'<0>{{user}}</0><1> این کارت را از {{fromList}} به {{toList}} منتقل کرد</1>',
|
||||
username: 'نام کاربری',
|
||||
usernameAlreadyInUse: 'نام کاربری قبلا استفاده شده است',
|
||||
users: 'کاربران',
|
||||
version: 'نسخه',
|
||||
viewer: 'بیننده',
|
||||
writeComment: 'نظر بنویسید...',
|
||||
},
|
||||
|
||||
action: {
|
||||
addAnotherCard: 'اضافه کردن کارت دیگر',
|
||||
addAnotherList: 'اضافه کردن لیست دیگر',
|
||||
addAnotherTask: 'اضافه کردن وظیفه دیگر',
|
||||
addCard: 'اضافه کردن کارت',
|
||||
addCard_title: 'اضافه کردن کارت',
|
||||
addComment: 'اضافه کردن نظر',
|
||||
addList: 'اضافه کردن لیست',
|
||||
addMember: 'اضافه کردن عضو',
|
||||
addMoreDetailedDescription: 'اضافه کردن توضیحات بیشتر',
|
||||
addTask: 'اضافه کردن وظیفه',
|
||||
addToCard: 'اضافه کردن به کارت',
|
||||
addUser: 'اضافه کردن کاربر',
|
||||
copyLink_title: 'کپی لینک',
|
||||
createBoard: 'ایجاد برد',
|
||||
createFile: 'ایجاد فایل',
|
||||
createLabel: 'ایجاد برچسب',
|
||||
createNewLabel: 'ایجاد برچسب جدید',
|
||||
createProject: 'ایجاد پروژه',
|
||||
delete: 'حذف',
|
||||
deleteAttachment: 'حذف پیوست',
|
||||
deleteAvatar: 'حذف آواتار',
|
||||
deleteBoard: 'حذف برد',
|
||||
deleteCard: 'حذف کارت',
|
||||
deleteCard_title: 'حذف کارت',
|
||||
deleteComment: 'حذف نظر',
|
||||
deleteImage: 'حذف تصویر',
|
||||
deleteLabel: 'حذف برچسب',
|
||||
deleteList: 'حذف لیست',
|
||||
deleteList_title: 'حذف لیست',
|
||||
deleteProject: 'حذف پروژه',
|
||||
deleteProject_title: 'حذف پروژه',
|
||||
deleteTask: 'حذف وظیفه',
|
||||
deleteTask_title: 'حذف وظیفه',
|
||||
deleteUser: 'حذف کاربر',
|
||||
duplicate: 'تکرار',
|
||||
duplicateCard_title: 'تکرار کارت',
|
||||
edit: 'ویرایش',
|
||||
editDueDate_title: 'ویرایش تاریخ سررسید',
|
||||
editDescription_title: 'ویرایش توضیحات',
|
||||
editEmail_title: 'ویرایش ایمیل',
|
||||
editInformation_title: 'ویرایش اطلاعات',
|
||||
editPassword_title: 'ویرایش رمز عبور',
|
||||
editPermissions: 'ویرایش دسترسیها',
|
||||
editStopwatch_title: 'ویرایش کرنومتر',
|
||||
editTitle_title: 'ویرایش عنوان',
|
||||
editUsername_title: 'ویرایش نام کاربری',
|
||||
hideDetails: 'پنهان کردن جزئیات',
|
||||
import: 'وارد کردن',
|
||||
leaveBoard: 'ترک برد',
|
||||
leaveProject: 'ترک پروژه',
|
||||
logOut_title: 'خروج',
|
||||
makeCover_title: 'ایجاد کاور',
|
||||
move: 'انتقال',
|
||||
moveCard_title: 'انتقال کارت',
|
||||
remove: 'حذف',
|
||||
removeBackground: 'حذف پسزمینه',
|
||||
removeCover_title: 'حذف کاور',
|
||||
removeFromBoard: 'حذف از برد',
|
||||
removeFromProject: 'حذف از پروژه',
|
||||
removeManager: 'حذف مدیر',
|
||||
removeMember: 'حذف عضو',
|
||||
save: 'ذخیره',
|
||||
showAllAttachments: 'نمایش همه پیوستها ({{hidden}} مخفی)',
|
||||
showDetails: 'نمایش جزئیات',
|
||||
showFewerAttachments: 'نمایش کمتر پیوستها',
|
||||
sortList_title: 'مرتبسازی لیست',
|
||||
start: 'شروع',
|
||||
stop: 'توقف',
|
||||
subscribe: 'مشترک شدن',
|
||||
unsubscribe: 'لغو اشتراک',
|
||||
uploadNewAvatar: 'آپلود آواتار جدید',
|
||||
uploadNewImage: 'آپلود تصویر جدید',
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'fa-IR',
|
||||
country: 'ir',
|
||||
name: 'فارسی',
|
||||
embeddedLocale: login,
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
export default {
|
||||
translation: {
|
||||
common: {
|
||||
emailOrUsername: 'ایمیل یا نام کاربری',
|
||||
invalidEmailOrUsername: 'ایمیل یا نام کاربری نامعتبر است',
|
||||
invalidPassword: 'رمز عبور نامعتبر است',
|
||||
logInToPlanka: 'ورود به Planka',
|
||||
noInternetConnection: 'بدون اتصال به اینترنت',
|
||||
pageNotFound_title: 'صفحه یافت نشد',
|
||||
password: 'رمز عبور',
|
||||
projectManagement: 'مدیریت پروژه',
|
||||
serverConnectionFailed: 'اتصال به سرور ناموفق بود',
|
||||
unknownError: 'خطای ناشناخته، بعداً دوباره تلاش کنید',
|
||||
useSingleSignOn: 'استفاده از ورود یکپارچه',
|
||||
},
|
||||
|
||||
action: {
|
||||
logIn: 'ورود',
|
||||
logInWithSSO: 'ورود با SSO',
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'fr',
|
||||
language: 'fr-FR',
|
||||
country: 'fr',
|
||||
name: 'Français',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'hu',
|
||||
language: 'hu-HU',
|
||||
country: 'hu',
|
||||
name: 'Magyar',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'id',
|
||||
language: 'id-ID',
|
||||
country: 'id',
|
||||
name: 'Bahasa Indonesia',
|
||||
embeddedLocale: login,
|
||||
+48
-46
@@ -1,51 +1,53 @@
|
||||
import bg from './bg';
|
||||
import cs from './cs';
|
||||
import da from './da';
|
||||
import de from './de';
|
||||
import en from './en';
|
||||
import es from './es';
|
||||
import fr from './fr';
|
||||
import hu from './hu';
|
||||
import id from './id';
|
||||
import it from './it';
|
||||
import ja from './ja';
|
||||
import ko from './ko';
|
||||
import nl from './nl';
|
||||
import pl from './pl';
|
||||
import pt from './pt';
|
||||
import ro from './ro';
|
||||
import ru from './ru';
|
||||
import sk from './sk';
|
||||
import sv from './sv';
|
||||
import tr from './tr';
|
||||
import ua from './ua';
|
||||
import uz from './uz';
|
||||
import zh from './zh';
|
||||
import bgBG from './bg-BG';
|
||||
import csCZ from './cs-CZ';
|
||||
import daDK from './da-DK';
|
||||
import deDE from './de-DE';
|
||||
import enUS from './en-US';
|
||||
import esES from './es-ES';
|
||||
import faIR from './fa-IR';
|
||||
import frFR from './fr-FR';
|
||||
import huHU from './hu-HU';
|
||||
import idID from './id-ID';
|
||||
import itIT from './it-IT';
|
||||
import jaJP from './ja-JP';
|
||||
import koKR from './ko-KR';
|
||||
import nlNL from './nl-NL';
|
||||
import plPL from './pl-PL';
|
||||
import ptBR from './pt-BR';
|
||||
import roRO from './ro-RO';
|
||||
import ruRU from './ru-RU';
|
||||
import skSK from './sk-SK';
|
||||
import svSE from './sv-SE';
|
||||
import trTR from './tr-TR';
|
||||
import ukUA from './uk-UA';
|
||||
import uzUZ from './uz-UZ';
|
||||
import zhCN from './zh-CN';
|
||||
|
||||
const locales = [
|
||||
bg,
|
||||
cs,
|
||||
da,
|
||||
de,
|
||||
en,
|
||||
es,
|
||||
fr,
|
||||
hu,
|
||||
id,
|
||||
it,
|
||||
ja,
|
||||
ko,
|
||||
nl,
|
||||
pl,
|
||||
pt,
|
||||
ro,
|
||||
ru,
|
||||
sk,
|
||||
sv,
|
||||
tr,
|
||||
ua,
|
||||
uz,
|
||||
zh,
|
||||
bgBG,
|
||||
csCZ,
|
||||
daDK,
|
||||
deDE,
|
||||
enUS,
|
||||
esES,
|
||||
faIR,
|
||||
frFR,
|
||||
huHU,
|
||||
idID,
|
||||
itIT,
|
||||
jaJP,
|
||||
koKR,
|
||||
nlNL,
|
||||
plPL,
|
||||
ptBR,
|
||||
roRO,
|
||||
ruRU,
|
||||
skSK,
|
||||
svSE,
|
||||
trTR,
|
||||
ukUA,
|
||||
uzUZ,
|
||||
zhCN,
|
||||
];
|
||||
|
||||
export default locales;
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
import dateFns from 'date-fns/locale/it';
|
||||
|
||||
export default {
|
||||
dateFns,
|
||||
|
||||
format: {
|
||||
date: 'd/M/yyyy',
|
||||
time: 'p',
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'it',
|
||||
language: 'it-IT',
|
||||
country: 'it',
|
||||
name: 'Italiano',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'ja',
|
||||
language: 'ja-JP',
|
||||
country: 'jp',
|
||||
name: '日本語',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'ko',
|
||||
language: 'ko-KR',
|
||||
country: 'kr',
|
||||
name: '한국어',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'nl',
|
||||
language: 'nl-NL',
|
||||
country: 'nl',
|
||||
name: 'Nederlands',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'pl',
|
||||
language: 'pl-PL',
|
||||
country: 'pl',
|
||||
name: 'Polski',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'pt',
|
||||
language: 'pt-BR',
|
||||
country: 'br',
|
||||
name: 'Português',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'ro',
|
||||
language: 'ro-RO',
|
||||
country: 'ro',
|
||||
name: 'Română',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'ru',
|
||||
language: 'ru-RU',
|
||||
country: 'ru',
|
||||
name: 'Русский',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'sk',
|
||||
language: 'sk-SK',
|
||||
country: 'sk',
|
||||
name: 'Slovenčina',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'sv',
|
||||
language: 'sv-SE',
|
||||
country: 'se',
|
||||
name: 'Svenska',
|
||||
embeddedLocale: login,
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'tr',
|
||||
language: 'tr-TR',
|
||||
country: 'tr',
|
||||
name: 'Türkçe',
|
||||
embeddedLocale: login,
|
||||
@@ -1,4 +1,8 @@
|
||||
import dateFns from 'date-fns/locale/uk';
|
||||
|
||||
export default {
|
||||
dateFns,
|
||||
|
||||
format: {
|
||||
date: 'd/M/yyyy',
|
||||
time: 'p',
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'ua',
|
||||
language: 'uk-UA',
|
||||
country: 'ua',
|
||||
name: 'Українська',
|
||||
embeddedLocale: login,
|
||||
@@ -1,4 +1,8 @@
|
||||
import dateFns from 'date-fns/locale/uz';
|
||||
|
||||
export default {
|
||||
dateFns,
|
||||
|
||||
format: {
|
||||
date: 'M/d/yyyy',
|
||||
time: 'p',
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'uz',
|
||||
language: 'uz-UZ',
|
||||
country: 'uz',
|
||||
name: "O'zbek",
|
||||
embeddedLocale: login,
|
||||
@@ -1,4 +1,8 @@
|
||||
import dateFns from 'date-fns/locale/zh-CN';
|
||||
|
||||
export default {
|
||||
dateFns,
|
||||
|
||||
format: {
|
||||
date: 'M/d/yyyy',
|
||||
time: 'p',
|
||||
@@ -1,7 +1,7 @@
|
||||
import login from './login';
|
||||
|
||||
export default {
|
||||
language: 'zh',
|
||||
language: 'zh-CN',
|
||||
country: 'cn',
|
||||
name: '中文',
|
||||
embeddedLocale: login,
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "planka",
|
||||
"version": "1.20.0",
|
||||
"version": "1.20.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "planka",
|
||||
"version": "1.20.0",
|
||||
"version": "1.20.1",
|
||||
"hasInstallScript": true,
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "planka",
|
||||
"version": "1.20.0",
|
||||
"version": "1.20.1",
|
||||
"private": true,
|
||||
"homepage": "https://plankanban.github.io/planka",
|
||||
"repository": {
|
||||
|
||||
@@ -50,7 +50,7 @@ module.exports = {
|
||||
},
|
||||
language: {
|
||||
type: 'string',
|
||||
isNotEmptyString: true,
|
||||
isIn: User.LANGUAGES,
|
||||
allowNull: true,
|
||||
},
|
||||
subscribeToOwnCards: {
|
||||
|
||||
@@ -36,7 +36,7 @@ module.exports = {
|
||||
},
|
||||
language: {
|
||||
type: 'string',
|
||||
isNotEmptyString: true,
|
||||
isIn: User.LANGUAGES,
|
||||
allowNull: true,
|
||||
},
|
||||
subscribeToOwnCards: {
|
||||
|
||||
@@ -5,11 +5,39 @@
|
||||
* @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models
|
||||
*/
|
||||
|
||||
const LANGUAGES = [
|
||||
'bg-BG',
|
||||
'cs-CZ',
|
||||
'da-DK',
|
||||
'de-DE',
|
||||
'en-US',
|
||||
'es-ES',
|
||||
'fa-IR',
|
||||
'fr-FR',
|
||||
'hu-HU',
|
||||
'id-ID',
|
||||
'it-IT',
|
||||
'ja-JP',
|
||||
'ko-KR',
|
||||
'nl-NL',
|
||||
'pl-PL',
|
||||
'pt-BR',
|
||||
'ro-RO',
|
||||
'ru-RU',
|
||||
'sk-SK',
|
||||
'sv-SE',
|
||||
'tr-TR',
|
||||
'uk-UA',
|
||||
'uz-UZ',
|
||||
'zh-CN',
|
||||
];
|
||||
|
||||
const OIDC = {
|
||||
id: '_oidc',
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
LANGUAGES,
|
||||
OIDC,
|
||||
|
||||
attributes: {
|
||||
@@ -62,7 +90,7 @@ module.exports = {
|
||||
},
|
||||
language: {
|
||||
type: 'string',
|
||||
isNotEmptyString: true,
|
||||
isIn: LANGUAGES,
|
||||
allowNull: true,
|
||||
},
|
||||
subscribeToOwnCards: {
|
||||
|
||||
@@ -48,5 +48,7 @@ module.exports.http = {
|
||||
// var middlewareFn = skipper({ strict: true });
|
||||
// return middlewareFn;
|
||||
// })(),
|
||||
|
||||
poweredBy: false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -15,7 +15,7 @@ module.exports.up = async (knex) => {
|
||||
const attachments = await knex('attachment');
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (attachment of attachments) {
|
||||
for (const attachment of attachments) {
|
||||
if (attachment.is_image) {
|
||||
const image = sharp(
|
||||
path.join(config.custom.attachmentsPath, attachment.dirname, attachment.filename),
|
||||
@@ -54,7 +54,7 @@ module.exports.down = async (knex) => {
|
||||
const attachments = await knex('attachment');
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (attachment of attachments) {
|
||||
for (const attachment of attachments) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await knex('attachment')
|
||||
.update({
|
||||
|
||||
@@ -93,7 +93,7 @@ module.exports.up = async (knex) => {
|
||||
const attachments = await knex('attachment').whereNotNull('image');
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (attachment of attachments) {
|
||||
for (const attachment of attachments) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const image = await processAttachmentImage(attachment, config.custom.attachmentsPath);
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ module.exports.up = async (knex) => {
|
||||
const users = await knex('user_account').whereNotNull('avatar');
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (user of users) {
|
||||
for (const user of users) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await processUserAvatar(user, config.custom.userAvatarsPath);
|
||||
}
|
||||
@@ -121,7 +121,7 @@ module.exports.up = async (knex) => {
|
||||
const projects = await knex('project').whereNotNull('background_image');
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (project of projects) {
|
||||
for (const project of projects) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await processProjectBackgroundImage(project, config.custom.projectBackgroundImagesPath);
|
||||
}
|
||||
@@ -129,7 +129,7 @@ module.exports.up = async (knex) => {
|
||||
const attachments = await knex('attachment').whereNotNull('image');
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (attachment of attachments) {
|
||||
for (const attachment of attachments) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await processAttachmentImage(attachment, config.custom.attachmentsPath);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
const _ = require('lodash');
|
||||
|
||||
const LANGUAGES = [
|
||||
'bg-BG',
|
||||
'cs-CZ',
|
||||
'da-DK',
|
||||
'de-DE',
|
||||
'en-US',
|
||||
'es-ES',
|
||||
'fa-IR',
|
||||
'fr-FR',
|
||||
'hu-HU',
|
||||
'id-ID',
|
||||
'it-IT',
|
||||
'ja-JP',
|
||||
'ko-KR',
|
||||
'nl-NL',
|
||||
'pl-PL',
|
||||
'pt-BR',
|
||||
'ro-RO',
|
||||
'ru-RU',
|
||||
'sk-SK',
|
||||
'sv-SE',
|
||||
'tr-TR',
|
||||
'uz-UZ',
|
||||
'zh-CN',
|
||||
];
|
||||
|
||||
const LANGUAGE_BY_PREV_LANGUAGE = LANGUAGES.reduce(
|
||||
(result, language) => ({
|
||||
...result,
|
||||
[language.split('-')[0]]: language,
|
||||
}),
|
||||
{},
|
||||
);
|
||||
LANGUAGE_BY_PREV_LANGUAGE.ua = 'uk-UA';
|
||||
|
||||
const PREV_LANGUAGE_BY_LANGUAGE = _.invert(LANGUAGE_BY_PREV_LANGUAGE);
|
||||
|
||||
module.exports.up = async (knex) => {
|
||||
const users = await knex('user_account').whereNotNull('language');
|
||||
const prevLanguages = [...new Set(users.map((user) => user.language))];
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (const prevLanguage of prevLanguages) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await knex('user_account')
|
||||
.update({
|
||||
language: LANGUAGE_BY_PREV_LANGUAGE[prevLanguage],
|
||||
})
|
||||
.where('language', prevLanguage);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports.down = async (knex) => {
|
||||
const users = await knex('user_account').whereNotNull('language');
|
||||
const languages = [...new Set(users.map((user) => user.language))];
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (const language of languages) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await knex('user_account')
|
||||
.update({
|
||||
language: PREV_LANGUAGE_BY_LANGUAGE[language],
|
||||
})
|
||||
.where('language', language);
|
||||
}
|
||||
};
|
||||
Generated
+12
-12
@@ -2164,9 +2164,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io": {
|
||||
"version": "6.5.4",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz",
|
||||
"integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==",
|
||||
"version": "6.5.5",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
|
||||
"integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
|
||||
"dependencies": {
|
||||
"@types/cookie": "^0.4.1",
|
||||
"@types/cors": "^2.8.12",
|
||||
@@ -2177,7 +2177,7 @@
|
||||
"cors": "~2.8.5",
|
||||
"debug": "~4.3.1",
|
||||
"engine.io-parser": "~5.2.1",
|
||||
"ws": "~8.11.0"
|
||||
"ws": "~8.17.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.2.0"
|
||||
@@ -7119,12 +7119,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-adapter": {
|
||||
"version": "2.5.4",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz",
|
||||
"integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==",
|
||||
"version": "2.5.5",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
|
||||
"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
|
||||
"dependencies": {
|
||||
"debug": "~4.3.4",
|
||||
"ws": "~8.11.0"
|
||||
"ws": "~8.17.1"
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-parser": {
|
||||
@@ -8190,15 +8190,15 @@
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.11.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
|
||||
"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
|
||||
"version": "8.17.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
|
||||
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": "^5.0.2"
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
|
||||
Reference in New Issue
Block a user