somewhere

This commit is contained in:
Swift
2023-08-17 13:05:51 +03:30
parent 30c7eb0e7b
commit 53843207cc
429 changed files with 117489 additions and 1 deletions
+53
View File
@@ -0,0 +1,53 @@
const axios = require('axios')
const accountInfo = {
Username: 'asanservice.sms@gmail.com',
Password: '7ea2243a',
Number: '5000467341',
url: 'http://www.afe.ir/WebService/V4/BoxService.asmx'
}
/// /////// http post soap method
module.exports.SMS = (mobileNumbersArray, message) => {
return new Promise((resolve, reject) => {
function renderMobileNumbers(array) {
return array.map(item => `<string>${item}</string>`).join('')
}
const xml = `<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SendMessage xmlns="http://www.afe.ir/">
<Username>${accountInfo.Username}</Username>
<Password>${accountInfo.Password}</Password>
<Number>${accountInfo.Number}</Number>
<Mobile>
${renderMobileNumbers(mobileNumbersArray)}
</Mobile>
<Message>${message}</Message>
<Type>1</Type>
</SendMessage>
</soap:Body>
</soap:Envelope>`
axios
.post(accountInfo.url, xml, {
headers: {
'Content-Type': 'text/xml; charset=utf-8',
SOAPAction: 'http://www.afe.ir/SendMessage'
}
})
.then(res => {
resolve(res)
})
.catch(err => {
console.log(
'this is sms module error ------------------ status code: ',
err.response.status,
'error message: ',
err.response.data
)
resolve(err)
})
})
}
+4
View File
@@ -0,0 +1,4 @@
module.exports.phrases = {
signature: ' asan-service.com ',
thanks: ' از همراهی شما سپاس گزاریم. '
}
@@ -0,0 +1,58 @@
const fs = require('fs')
const readXlsxFile = require('read-excel-file/node')
const guaranteeSerialsPath = './static/uploads/serials'
const productSerialsPath = './static/uploads/serials_products'
const serialChecker = async (serial, type = 'guaranteeSerial') => {
let exelsPath
if (type === 'guaranteeSerial') exelsPath = guaranteeSerialsPath
if (type === 'orginality') exelsPath = productSerialsPath
const lowerSerial = serial.toLowerCase()
// a promise to lowercase items and filter null or DateObjects
const toLowerCaseArray = array => {
return new Promise((resolve, reject) => {
const newArray = []
array.forEach((item, index) => {
if (item !== null && typeof item === 'string') newArray.push(item.toLowerCase())
if (item !== null && typeof item === 'number') newArray.push(item.toString())
if (index === array.length - 1) return resolve(newArray)
})
})
}
// create an array of all exel files data
const exelFilesData = []
try {
// get a list of all exel files
const serialFiles = await fs.readdirSync(exelsPath)
// push each exel file data to exelFilesData array
let n0 = 0
for await (const file of serialFiles) {
// reading all exel files one by one
const exelFile = await readXlsxFile(`${exelsPath}/${file}`)
exelFilesData.push(exelFile)
// flat exelFilesData and filter and lowerCase it's items
if (n0 === serialFiles.length - 1) {
const flattedArray = exelFilesData.flat(10000)
const lowerCaseFlattedArray = await toLowerCaseArray(flattedArray)
// loop throw lowerCased items to find exact match item
let n1 = 0
for await (const item of lowerCaseFlattedArray) {
if (item === lowerSerial) return true
if (n1 === lowerCaseFlattedArray.length - 1) return false
n1++
}
}
n0++
}
} catch (e) {
throw new Error(e)
}
}
module.exports.serialChecker = serialChecker
+9
View File
@@ -0,0 +1,9 @@
const token = '8f552d860d0cdbbf4afaa0749acb7f3e32efcdc85fc4b49bb3d356ff30f0504a'
module.exports.checkThirdPartyAccess = (req, res, next) => {
try {
if (req.headers?.authorization?.trim() !== token) throw new Error('unauthorized')
else next()
} catch {
return res.status(422).json({ message: 'unauthorized' })
}
}
@@ -0,0 +1,114 @@
/// ///////////////////////////////////////////////////////////////////////////////////////// expresjs methods
module.exports.res404 = (res, err) => {
return res.status(404).json({ message: err })
}
module.exports.res406 = (res, err) => {
return res.status(406).json({ message: err })
}
module.exports.res500 = (res, err) => {
return res.status(500).json({ message: err })
}
module.exports.checkValidations = validationResult => {
return (req, res, next) => {
const errors = validationResult(req)
if (!errors.isEmpty()) return res.status(422).json({ validation: errors.mapped() })
else next()
}
}
/// ///////////////////////////////////////////////////////////////////////////////////////// sting methods
module.exports.removeWhiteSpaces = str => {
return str.replace(/ /g, '')
}
module.exports.isPersian = str => {
return str.match(/^[\u0600-\u06FF\s]+$/)
}
module.exports.isPersianWithDigits = str => {
return str.match(/^[\u0600-\u06FF\s\d]+$/)
}
module.exports.isLatin = str => {
return str.match(/^[A-Za-z\s]+$/g)
}
module.exports.isLatinWithDigits = str => {
return str.match(/^[a-zA-Z\s0-9()*_\-!#$%^&*,."'\][]*$/g)
}
module.exports.hasWhiteSpaces = str => {
return str.includes(' ')
}
/// ///////////////////////////////////////////////////////////////////////////////////////// number methods
module.exports.generateRandomDigits = digitsLength => {
function generateRandomDigits(DIGITS_LENGTH) {
const add = 1
let max = 12 - add // 12 is the min safe number Math.random() can generate without it starting to pad the end with zeros.
if (DIGITS_LENGTH > max) {
return generateRandomDigits(max) + generateRandomDigits(DIGITS_LENGTH - max)
}
max = Math.pow(10, DIGITS_LENGTH + add)
const min = max / 10 // Math.pow(10, n) basically
const number = Math.floor(Math.random() * (max - min + 1)) + min
return ('' + number).substring(add)
}
return generateRandomDigits(digitsLength)
}
module.exports.generateRandomDigitsInRangeOf = max => {
return Math.floor(Math.random() * max) + 1
}
/// ///////////////////////////////////////////////////////////////////////////////////////// iran region methods
module.exports.checkNationalCode = code => {
/* eslint-disable eqeqeq */
const L = code.length
if (L < 8 || parseInt(code, 10) == 0) return false
code = ('0000' + code).substr(L + 4 - 10)
if (parseInt(code.substr(3, 6), 10) == 0) return false
const c = parseInt(code.substr(9, 1), 10)
let s = 0
for (let i = 0; i < 9; i++) {
s += parseInt(code.substr(i, 1), 10) * (10 - i)
}
s = s % 11
return (s < 2 && c == s) || (s >= 2 && c == 11 - s)
/* eslint-enable eqeqeq */
}
module.exports.checkMobileNumber = number => {
const regex = /^(\+98|0)?9\d{9}$/
const result = regex.test(number)
return result
}
module.exports.normalizeMobileNumber = number => {
return number.split('').reverse().join('').slice(0, 10).concat('0').split('').reverse().join('')
}
module.exports.nameOptimizer = name => {
function regex(str) {
return new RegExp(str)
}
return name
.replace(regex('آقای'), '')
.replace(regex('آقا'), '')
.replace(regex('جنابه'), '')
.replace(regex('جناب'), '')
.replace(regex('سرکار خانوم'), '')
.replace(regex('سرکار خانم'), '')
.replace(regex('سرکارخانوم'), '')
.replace(regex('سرکارخانومه'), '')
.replace(regex('سرکارخانمه'), '')
.replace(regex('سرکارخانم'), '')
.replace(regex('سرکار'), '')
.replace(regex('خانوم'), '')
.replace(regex('خانم'), '')
}
+289
View File
@@ -0,0 +1,289 @@
/* eslint-disable no-unused-vars */
const User = require('../models/User')
const Lottery = require('../models/Lottery')
const SurveyCheck = require('../models/SurveyCheck')
const Survey = require('../models/Survey')
const Announcement = require('../models/Announcement')
const { saveUserToArpa, updateUserOnArpa } = require('../ArpaWebservice')
const { generateRandomDigitsInRangeOf } = require('./controllersHelperFunctions')
const { SMS } = require('./SMS_Module')
const { phrases } = require('./SMS_Phrases')
/// /////// times
const minute = 1000 * 60
const hour = minute * 60
const day = hour * 24
/// /////// jobs
const jobs = {
checkUserActivation() {
console.log('✅ --job: check users for activation is running')
return setInterval(async () => {
try {
const users = await User.find({ confirmed: false })
for await (const user of users) {
// item time and timeout
const itemTime = Date.parse(user.created_at)
const timeout = itemTime + day
// check if passed 24 hours and remove registration
if (Date.now() >= timeout) {
await user.remove()
}
}
} catch (e) {
console.log(e)
}
}, hour)
},
checkIfAnnouncementsExpired() {
console.log('✅ --job: check announcements for expire date is running')
return setInterval(async () => {
try {
const announcements = await Announcement.find({ expired: false })
for await (const notif of announcements) {
if (Date.now() > notif.expireDate) {
notif.expired = true
await notif.save()
}
}
} catch (e) {
console.log(e)
}
}, hour)
},
drawLottery() {
console.log('✅ --job: check for lottery draw is running')
return setInterval(async () => {
try {
const lottery = await Lottery.findOne({ expired: false })
if (!lottery || lottery.expireDate > Date.now()) return
/// ///////// assets (arrays)
const winnersCount = lottery.winnersCount
const participants = lottery.participants
const participantsMobileNumbers = []
const winnersArray = []
const winnersMobileNumbers = []
/// ///////// assets (functions)
function getWinner(array) {
return new Promise(async (resolve, reject) => {
const winner = array[generateRandomDigitsInRangeOf(array.length - 1)]
if (await winnersMobileNumbers.includes(winner.mobile)) resolve(await getWinner(array))
else {
winnersMobileNumbers.push(winner.mobile)
winnersArray.push(winner)
resolve()
}
})
}
// normalize repeated mobile numbers to decide which method to use
for await (const item of participants) {
if (!participantsMobileNumbers.includes(item.mobile)) participantsMobileNumbers.push(item.mobile)
}
// draw function
if (participantsMobileNumbers.length > 1000) {
// console.log('------------------------- larg number block ran')
// chunk all participants to n part (Number(winnersCount) part)
const partLength = Math.floor(participants.length / winnersCount)
const chunckedArrayToParts = []
for (let i = 0; i < winnersCount; i++) {
const chunck = await participants.slice(i * partLength, i * partLength + partLength)
await chunckedArrayToParts.push(chunck)
}
for await (const item of chunckedArrayToParts) {
await getWinner(item)
}
} else if (participantsMobileNumbers.length > winnersCount) {
// console.log('------------------------- grater than winnersCount block ran')
const winnersCountArray = []
for (let i = 0; i < winnersCount; i++) {
winnersCountArray.push(i)
}
for await (const item of winnersCountArray) {
await getWinner(participants)
}
} else {
// console.log('------------------------- less or equal to winnersCount block ran')
for await (const item of participants) {
if (!winnersMobileNumbers.includes(item.mobile)) {
winnersMobileNumbers.push(item.mobile)
winnersArray.push(item)
}
}
}
// save result to db
lottery.winnersList = winnersArray
lottery.markModified('winnersList')
lottery.expired = true
lottery.save()
// send sms for winners
for await (const item of winnersArray) {
const msg = [
'تبریک!!!',
'\n',
item.fullName,
' عزیز شما در قرعه کشی آسان سرویس با کد پیگیری ',
item.enrollCode,
' برنده شدید. به زودی از شرکت آسان سرویس با شما تماس گرفته خواهد شد. در صورتی که تا 3 روز کاری با شما تماس گرفته نشد میتوانید از طریق شماره 02167341 داخلی 200 و کد پیگیری خود جهت دریافت جایزه اقدام نماید.',
'\n',
phrases.thanks,
'\n',
phrases.signature
]
SMS([item.mobile], msg.join(''))
}
/// /////////////////////////////////////////////////////// fake data for tests
// for (let i = 0; i < 4; i++) {
// participants.push({
// fullName: 'Amir Mohamadi 2',
// mobile: '34dfssdkfisjdf34534',
// serial: `S-ffasdfdf`,
// enrollCode: `CODE-${i}`
// })
// console.log('--',i)
// }
// lottery.participants = []
// lottery.markModified('participants')
// return lottery.save()
} catch (e) {
console.log('an error happend in drawLottery job --- error: ', e)
}
}, hour)
},
checkUserSurveys() {
console.log('✅ --job: check users for surveys is running')
return setInterval(async () => {
try {
const surveyCheck = await SurveyCheck.find({ smsSent: false }).populate('user')
for await (const item of surveyCheck) {
// timeout
const timeout = item.timeAdded + day * 7
// check if passed one week
if (Date.now() >= timeout) {
const survey = await Survey.findOne({ code: item.code })
if (!survey?._id) {
const msg = [
'مشتری گرامی',
item.user.first_name + ' ' + item.user.last_name,
'\n',
'لطفا با شرکت در نظرسنجی خدمات پس از فروش آسان سرویس، میزان رضایت خود از خدمات گارانتی را به ما اعلام کنید و ما را در ارائه خدمات بهتر یاری نمایید. به پاس همراهی شما عزیزان، بین شرکت کنندگان در نظرسنجی ابتدای هرماه به قید قرعه جوایزی اهدا خواهد شد.',
'\n',
'لینک شرکت در نظر سنجی:',
'\n',
`https://asan-service.com/account/survey?code=${item.code}`
]
SMS([item.user.mobile_number], msg.join(' '))
item.smsSent = true
await item.save()
}
}
}
} catch (e) {
console.log(e)
}
}, day)
}
}
/// /////// for develop usages
const permissions = require('./permissions')
const devTools = {
async checkUsersArpaAccounts() {
try {
const users = await User.find({ scope: ['user'], confirmed: true })
let index = 0
for await (const user of users) {
if (user.scope.includes('user')) {
// if (!user.panatech_businessID && !user.panatech_businessCode) {
// const panatechID = await saveUserToArpa(user, 'panatech')
// user.panatech_businessID = panatechID.businessID
// user.panatech_businessCode = panatechID.businessCode
// await user.save()
// console.log('🚀 ~ file: cronJobs.js ~ panatechID.businessCode', index)
// }
index++
}
}
} catch (e) {
console.log('we got error --- ', e)
}
},
async addNewPermissionsToPrivateAdmin() {
console.log('addNewPermissionsToPrivateAdmin started')
try {
const users = await User.find({ private: true })
for await (const user of users) {
// console.log('🚀 ~ file: cronJobs.js ~ line 187 ~ forawait ~ user', user)
user.permissions = []
for await (const permission of permissions) {
user.permissions.push(permission.value)
// console.log('🚀 ~ file: cronJobs.js ~ line 190 ~ forawait ~ permission', permission.value)
}
await user.save()
}
} catch (e) {
console.log(e)
}
},
async findDuplicatedUsers() {
try {
const usersArray = new Set()
const duplicatedUsersArray = new Set()
const users = await User.find({ scope: ['user'] })
for await (const user of users) {
if (!usersArray.has(user.mobile_number)) usersArray.add(user.mobile_number)
else duplicatedUsersArray.add(user.mobile_number)
}
console.log(
'🚀 ~ file: cronJobs.js ~ line 220 ~ findDuplicatedUsers ~ duplicatedUsersArray',
duplicatedUsersArray
)
console.log(
'🚀 ~ file: cronJobs.js ~ line 220 ~ findDuplicatedUsers ~ duplicatedUsersArray',
duplicatedUsersArray.size
)
} catch (e) {
console.log('🚀 ~ file: cronJobs.js ~ line 223 ~ findDuplicatedUsers - catch ~ e', e)
}
}
}
module.exports = () => {
jobs.checkUserActivation()
jobs.drawLottery()
jobs.checkIfAnnouncementsExpired()
jobs.checkUserSurveys()
// remember to run it once !!!
// devTools.checkUsersArpaAccounts()
// devTools.addNewPermissionsToPrivateAdmin()
// devTools.findDuplicatedUsers()
}
+386
View File
@@ -0,0 +1,386 @@
// province cities
const eastazarbaijan1 = [
'آذرشهر',
'اسکو',
'اهر',
'بستان‌آباد',
'بناب',
'تبریز',
'جلفا',
'چاراویماق',
'سراب',
'شبستر',
'مراغه'
]
const westazarbaijan2 = [
'ارومیه',
'اشنویه',
'بوکان',
'پیرانشهر',
'تکاب',
'چالدران',
'خوی',
'سردشت',
'سلماس',
'شاهین‌دژ',
'ماکو',
'مهاباد',
'میاندوآب',
'نقده'
]
const ardabil3 = ['اردبیل', 'بیله‌سوار', 'پارس‌آباد', 'خلخال', 'کوثر', 'گِرمی', 'مِشگین‌شهر', 'نَمین', 'نیر']
const esfahan4 = [
'آران و بیدگل',
'اردستان',
'اصفهان',
'برخوار و میمه',
'تیران و کرون',
'چادگان',
'خمینی‌شهر',
'خوانسار',
'سمیرم',
'شهرضا',
'سمیرم سفلی',
'فریدن',
'فریدون‌شهر',
'فلاورجان',
'کاشان',
'گلپایگان',
'لنجان',
'مبارکه',
'نائین',
'نجف‌آباد',
'نطنز'
]
const ilam5 = ['آبدانان', 'ایلام', 'ایوان', 'دره‌شهر', 'دهلران', 'شیروان و چرداول', 'مهران']
const booshehr6 = ['بوشهر', 'تنگستان', 'جم', 'دشتستان', 'دشتی', 'دیر', 'دیلم', 'کنگان', 'گناوه']
const tehran7 = [
'اسلام‌شهر',
'پاکدشت',
'تهران',
'دماوند',
'رباط‌کریم',
'ری',
'ساوجبلاغ',
'شمیرانات',
'شهریار',
'فیروزکوه',
'ورامین'
]
const chaharmahalobakhtiari8 = ['اردل', 'بروجن', 'شهرکرد', 'فارسان', 'کوهرنگ', 'لردگان']
const khorasanjonoobi9 = ['بیرجند', 'درمیان', 'سرایان', 'سربیشه', 'فردوس', 'قائنات', 'نهبندان']
const khorasanrazavi10 = [
'بردسکن',
'تایباد',
'تربت جام',
'تربت حیدریه',
'چناران',
'خلیل‌آباد',
'خواف',
'درگز',
'رشتخوار',
'سبزوار',
'سرخس',
'فریمان',
'قوچان',
'کاشمر',
'کلات',
'گناباد',
'مشهد',
'مه ولات',
'نیشابور'
]
const khorasanshomali11 = ['اسفراین', 'بجنورد', 'جاجرم', 'شیروان', 'فاروج', 'مانه و سملقان']
const khoozestan12 = [
'آبادان',
'امیدیه',
'اندیمشک',
'اهواز',
'ایذه',
'باغ‌ملک',
'بندر ماهشهر',
'بهبهان',
'خرمشهر',
'دزفول',
'دشت آزادگان',
'رامشیر',
'رامهرمز',
'شادگان',
'شوش',
'شوشتر'
]
const zanjan13 = ['ابهر', 'ایجرود', 'خدابنده', 'خرمدره', 'زنجان', 'طارم', 'ماه‌نشان']
const semnan14 = ['دامغان', 'سمنان', 'شاهرود', 'گرمسار', 'مهدی‌شهر']
const sistanobaloochestan15 = [
'ایرانشهر',
'چابهار',
'خاش',
'دلگان',
'زابل',
'زاهدان',
'زهک',
'سراوان',
'سرباز',
'کنارک',
'نیک‌شهر'
]
const fars16 = [
'آباده',
'ارسنجان',
'استهبان',
'اقلید',
'بوانات',
'پاسارگاد',
'جهرم',
'خرم‌بید',
'خنج',
'داراب',
'زرین‌دشت',
'سپیدان',
'شیراز',
'فراشبند',
'فسا',
'فیروزآباد',
'قیر و کارزین',
'کازرون',
'لارستان',
'لامِرد',
'مرودشت',
'ممسنی',
'مهر',
'نی‌ریز'
]
const qazvin17 = ['آبیک', 'البرز', 'بوئین‌زهرا', 'تاکستان', 'قزوین']
const qom18 = ['قم']
const kordestan19 = ['بانه', 'بیجار', 'دیواندره', 'سروآباد', 'سقز', 'سنندج', 'قروه', 'کامیاران', 'مریوان']
const kerman20 = [
'بافت',
'بردسیر',
'بم',
'جیرفت',
'راور',
'رفسنجان',
'رودبار جنوب',
'زرند',
'سیرجان',
'شهر بابک',
'عنبرآباد',
'قلعه گنج',
'کرمان',
'کوهبنان',
'کهنوج',
'منوجان'
]
const kermanshah21 = [
'اسلام‌آباد غرب',
'پاوه',
'ثلاث باباجانی',
'جوانرود',
'دالاهو',
'روانسر',
'سرپل ذهاب',
'سنقر',
'صحنه',
'قصر شیرین',
'کرمانشاه',
'کنگاور',
'گیلان غرب',
'هرسین'
]
const kohkilooyevaboyrahmad22 = ['بویراحمد', 'بهمئی', 'دنا', 'کهگیلویه', 'گچساران']
const golestan23 = [
'آزادشهر',
'آق‌قلا',
'بندر گز',
'ترکمن',
'رامیان',
'علی‌آباد',
'کردکوی',
'کلاله',
'گرگان',
'گنبد کاووس',
'مراوه‌تپه',
'مینودشت'
]
const gilan24 = [
'آستارا',
'آستانه اشرفیه',
'اَملَش',
'بندر انزلی',
'رشت',
'رضوانشهر',
'رودبار',
'رودسر',
'سیاهکل',
'شَفت',
'صومعه‌سرا',
'طوالش',
'فومَن',
'لاهیجان',
'لنگرود',
'ماسال'
]
const lorestan25 = ['ازنا', 'الیگودرز', 'بروجرد', 'پل‌دختر', 'خرم‌آباد', 'دورود', 'دلفان', 'سلسله ,کوهدشت']
const mazandaran26 = [
'آمل',
'بابل',
'بابلسر',
'بهشهر',
'تنکابن',
'جویبار',
'چالوس',
'رامسر',
'ساری',
'سوادکوه',
'قائم‌شهر',
'گلوگاه',
'محمودآباد',
'نکا',
'نور',
'نوشهر'
]
const markazi27 = ['آشتیان', 'اراک', 'تفرش', 'خمین', 'دلیجان', 'زرندیه', 'ساوه', 'شازند', 'کمیجان', 'محلات']
const hormozgan28 = [
'ابوموسی',
'بستک',
'بندر عباس',
'بندر لنگه',
'جاسک',
'حاجی‌آباد',
'شهرستان خمیر',
'رودان',
'قشم',
'گاوبندی',
'میناب'
]
const hamedan29 = ['اسدآباد', 'بهار', 'تویسرکان', 'رزن', 'کبودرآهنگ', 'ملایر', 'نهاوند', 'همدان']
const yazd30 = ['ابرکوه', 'اردکان', 'بافق', 'تفت', 'خاتم', 'صدوق', 'طبس', 'مهریز', 'مِیبُد', 'یزد']
const alborz31 = ['کرج', 'نظرآباد', 'فردیس', 'اشتهارد', 'هشتگرد', 'طالقان']
// provinces list
module.exports.iranCities = [
{
name: 'آذربایجان شرقی',
cities: eastazarbaijan1
},
{
name: 'آذربایجان غربی',
cities: westazarbaijan2
},
{
name: 'اردبیل',
cities: ardabil3
},
{
name: 'اصفهان',
cities: esfahan4
},
{
name: 'ایلام',
cities: ilam5
},
{
name: 'بوشهر',
cities: booshehr6
},
{
name: 'تهران',
cities: tehran7
},
{
name: 'چهارمحال بختیاری',
cities: chaharmahalobakhtiari8
},
{
name: 'خراسان جنوبی',
cities: khorasanjonoobi9
},
{
name: 'خراسان رضوی',
cities: khorasanrazavi10
},
{
name: 'خراسان شمالی',
cities: khorasanshomali11
},
{
name: 'خوزستان',
cities: khoozestan12
},
{
name: 'زنجان',
cities: zanjan13
},
{
name: 'سمنان',
cities: semnan14
},
{
name: 'سیستان بلوچستان',
cities: sistanobaloochestan15
},
{
name: 'فارس',
cities: fars16
},
{
name: 'قزوین',
cities: qazvin17
},
{
name: 'قم',
cities: qom18
},
{
name: 'کردستان',
cities: kordestan19
},
{
name: 'کرمان',
cities: kerman20
},
{
name: 'کرمانشاه',
cities: kermanshah21
},
{
name: 'کهکیلویه و بویراحمد',
cities: kohkilooyevaboyrahmad22
},
{
name: 'گلستان',
cities: golestan23
},
{
name: 'گیلان',
cities: gilan24
},
{
name: 'لرستان',
cities: lorestan25
},
{
name: 'مازندران',
cities: mazandaran26
},
{
name: 'مرکزی',
cities: markazi27
},
{
name: 'هرمزگان',
cities: hormozgan28
},
{
name: 'همدان',
cities: hamedan29
},
{
name: 'یزد',
cities: yazd30
},
{
name: 'البرز',
cities: alborz31
}
]
+106
View File
@@ -0,0 +1,106 @@
module.exports = [
{
name: 'مدیریت کاربران',
value: 'admins'
},
{
name: 'مشاهده پیام های تماس با ما',
value: 'contact-us'
},
{
name: 'مدیریت دسته بندی دانلودها',
value: 'download-categories'
},
{
name: 'مدیریت دانلودها',
value: 'downloads'
},
{
name: 'مدیریت سوالات متداول',
value: 'faq'
},
{
name: 'مدیریت آموزش ها',
value: 'learning'
},
{
name: 'مدیریت تیکت ها',
value: 'tickets'
},
{
name: 'اپلود فایل اکسل (شماره سریال گارانتی)',
value: 'serials-exel'
},
{
name: 'مدیریت شرایط گارانتی',
value: 'warranty-terms'
},
{
name: 'مدیریت مشتریان',
value: 'customers'
},
{
name: 'مدیریت راهنمای ثبت گارانتی',
value: 'help'
},
{
name: 'مدیریت اعلانات و اطلاعیه ها',
value: 'announcements'
},
{
name: 'ارسال پیامک',
value: 'sms'
},
{
name: 'مدیریت ظاهر دکمه قرعه کشی',
value: 'lotteryPopUp'
},
{
name: 'مدیریت قرعه کشی',
value: 'lottery'
},
{
name: 'مدیریت درخواست های نمایندگی',
value: 'representations'
},
{
name: 'مدیریت نمایندگان',
value: 'agents'
},
{
name: 'ویرایش اطلاعات نمایندگان',
value: 'agentUpdate'
},
{
name: 'مشاهده صندوق ورودی نمایندگان',
value: 'agentsInbox'
},
{
name: 'مدیریت قطعات',
value: 'pieces'
},
{
name: 'مدیریت درخواست قطعه',
value: 'piece-requests'
},
{
name: 'مدیریت درخواست کالای بافر',
value: 'buffer-requests'
},
{
name: 'مدیریت درخواست قطعه داغی',
value: 'op-requests'
},
{
name: 'مشاهده فرم عملکرد گارانتی نمایندگان',
value: 'guarantee-reports'
},
{
name: 'گزارشات',
value: 'agentReports'
},
{
name: 'نظر سنجی',
value: 'surveys'
}
]
+744
View File
@@ -0,0 +1,744 @@
module.exports._sr = {
fa: {
required: {
token: 'توکن را وارد کنید',
field: 'این فیلد نباید خالی باشد',
// developer validations
remember_me: 'پارامتر remember_me الزامی است',
// registration validations
name: 'نام را وارد کنید',
first_name: 'نام را وارد کنید',
last_name: 'نام خانوادگی را وارد کنید',
email: 'ایمیل را وارد کنید',
national_code: 'کد ملی الزامی است',
email_personal: 'ایمیل شخصی الزامی است',
email_company: 'ایمیل کمپانی برای اشخاص حقوقی الزامی است',
company_name: 'درصورتی که شخص حقوقی هستید، نام کمپانی را وارد کنید',
username: 'نام کاربری را وارد کنید',
phone_number: 'شماره تماس را وارد کنید',
password: 'پسورد را وارد کنید',
birthdate: 'تاریخ تولد را وارد کنید',
// addressing validations
country: 'کشور را وارد کنید',
province: 'استان را وارد کنید',
city: 'شهر را وارد کنید',
address: 'آدرس را وارد کنید',
postal_code: 'کد پستی را وارد کنید',
plaque: 'پلاک را وارد کنید',
receiver_first_name: 'نام گیرنده را وارد کنید',
receiver_last_name: 'نام خانوادگی گیرنده را وارد کنید',
receiver_mobile: 'شماره موبایل گیرنده را وارد کنید',
// global (post - gallery - ...)
title: 'عنوان را وارد کنید',
caption: 'متن را وارد کنید',
description: 'توضیحات را وارد کنید',
category: 'دسته بندی را انتخاب کنید',
image: 'عکس اجباری است',
cover: 'کاور اجباری است',
file: 'فایل اجباری است',
message: 'پیام را بنویسید',
quantity: 'تعداد را وارد کنید',
date: 'تاریخ را وارد کنید',
reason: 'دلیل را انتخاب کنید',
question: 'سوال را بنویسید',
answer: 'جواب را بنویسید',
price: 'قیمت را وارد کنید',
type: 'نوع را انتخاب کنید',
discount_code: 'کد تخفیف را وارد کنید',
discount_amount: 'مقدار تخفیف را وارد کنید',
discount_expire_date: 'تاریخ انقضای کد تخفیف را مشخص کنید',
user_id: 'کاربر را انتخاب کنید',
video: 'ویدیو اجباری است'
},
format: {
phone_number: 'فرمت شماره تماس صحیح نیست',
email: 'فرمت ایمیل قابل قبول نیست',
number: 'مقدار باید از جنس عدد باشد',
boolean: 'مقدار باید از جنس Boolean باشد',
image: 'فرمت عکس قابل قبول نیست',
video: 'فرمت ویدیو قابل قبول نیست',
national_code: 'کد ملی صحیح نیست'
},
min_char: {
min2: 'حداقل 2 کاراکتر',
min4: 'حداقل 4 کاراکتر',
min8: 'حداقل 8 کاراکتر',
min10: 'حداقل 10 کاراکتر',
min20: 'حداقل 20 کاراکتر',
min30: 'حداقل 30 کاراکتر',
min40: 'حداقل 40 کاراکتر',
min50: 'حداقل 50 کاراکتر',
min60: 'حداقل 60 کاراکتر',
min100: 'حداقل 100 کاراکتر',
min120: 'حداقل 120 کاراکتر',
min150: 'حداقل 150 کاراکتر',
min200: 'حداقل 200 کاراکتر',
data_size: 'حجم قابل قبول حداقل: ',
image_width_size: 'عرض حداقل: ',
image_height_size: 'ارتفاع حداقل: '
},
max_char: {
max4: 'حداکثر 4 کاراکتر',
max8: 'حداکثر 8 کاراکتر',
max10: 'حداکثر 10 کاراکتر',
max15: 'حداکثر 15 کاراکتر',
max20: 'حداکثر 20 کاراکتر',
max30: 'حداکثر 30 کاراکتر',
max40: 'حداکثر 40 کاراکتر',
max50: 'حداکثر 50 کاراکتر',
max60: 'حداکثر 60 کاراکتر',
max100: 'حداکثر 100 کاراکتر',
max120: 'حداکثر 120 کاراکتر',
max150: 'حداکثر 150 کاراکتر',
max200: 'حداکثر 200 کاراکتر',
data_size: 'حجم قابل قبول حداکثر: ',
image_width_size: 'عرض حداکثر: ',
image_height_size: 'ارتفاع حداکثر: '
},
not_found: {
user_id: 'کاربری با این مشخصات وجود ندارد',
admin_id: 'ادمینی با این مشخصات وجود ندارد',
order_id: 'سفارشی با این مشخصات وجود ندارد',
item_id: 'موردی با این مشخصات وجود ندارد',
password: 'رمز عبور یا آیدی درست نیست'
},
duplicated: {
username: 'این نام کاربری از قبل وجود دارد',
email: 'این ایمیل از قبل وجود دارد',
name: 'نام تکراری است',
title: 'عنوان تکراری است',
phone_number: 'این شماره تماس از قبل وجود دارد'
},
response: {
logged_in: 'شما وارد سیستم شدید',
not_logged_in: 'شما وارد سیستم نشدید',
logged_out: 'شما از سیستم خارج شدید',
unauthenticated: 'غیرمجاز',
recovery_link: 'لینک بازیابی فرستاده شد',
success_save: 'با موفقیت ثبت شد',
success_remove: 'با موفقیت حذف شد',
cart_empty: 'سبد خرید خالی است',
already_has_address: 'آدرس قبلا اضافه شده',
activation_code: 'کد فعالسازی برای شما ارسال شد',
activation_email: 'ایمیل فعال سازی برای شما ارسال شد',
expired_reset_link: 'این لینک بازیابی منقضی شده است',
email_not_confirmed: 'ابتدا ایمیل خود را تایید کنید،لینک فعال سازی قبلا برای شما فرستاده شده است.',
expired_activation_link: 'این لینک فعال سازی منقضی شده است',
success_activation: 'اکانت شما با موفقیت فعال شد',
passwords_not_match: 'پسورد ها یکی نیست',
problem: 'مشکلی پیش آمده، لطفا دوباره تلاش کنید.',
latinChar: 'لطفا با حروف لاتین بنویسید',
persianChar: 'لطفا با حروف فارسی بنویسید',
whiteSpace: 'بین حروف و کلمات نباید فاصله باشد'
},
file_types: {
jpg: 'فقط فرمت jpg قابل قبول است',
png: 'فقط فرمت png قابل قبول است',
gif: 'فقط فرمت gif قابل قبول است',
pdf: 'فقط فرمت pdf قابل قبول است',
txt: 'فقط فرمت txt قابل قبول است',
log: 'فقط فرمت log قابل قبول است',
mp3: 'فقط فرمت mp3 قابل قبول است',
ogg: 'فقط فرمت ogg قابل قبول است',
wmv: 'فقط فرمت wmv قابل قبول است',
mp4: 'فقط فرمت mp4 قابل قبول است',
mov: 'فقط فرمت mov قابل قبول است',
mkv: 'فقط فرمت mkv قابل قبول است',
flv: 'فقط فرمت flv قابل قبول است'
}
},
en: {
required: {
token: 'Token is required',
field: 'This field is required',
// developer validations
remember_me: 'Remember_me parameter required',
// registration validations
name: 'Enter name',
first_name: 'Enter first name',
last_name: 'Enter last name',
national_code: 'National code is required',
email: 'Enter email',
email_personal: 'Personal email is required',
email_company: 'Company email is required for legal entities',
company_name: 'Enter company name if you are a legal entity',
username: 'Enter username',
phone_number: 'Enter phone number',
password: 'Enter password',
birthdate: 'Enter birthdate',
// addressing validations
country: 'Enter country',
province: 'Enter province',
city: 'Enter city',
address: 'Enter address',
postal_code: 'Enter postal code',
plaque: 'Enter plaque',
receiver_first_name: 'Enter recipient name',
receiver_last_name: 'Enter recipient surname',
receiver_mobile: "Enter recipient's mobile number",
// global (post - gallery - ...)
title: 'Enter title',
caption: 'Enter caption',
description: 'Enter description',
category: 'Select category',
image: 'Image is required',
cover: 'Cover is required',
file: 'File is required',
message: 'Write message',
quantity: 'Enter quantity',
date: 'Enter date',
reason: 'Select reason',
question: 'Write the question',
answer: 'Write the answer',
price: 'Enter Price',
type: 'Select type',
discount_code: 'Enter discount code',
discount_amount: 'Enter discount amount',
discount_expire_date: 'Specify discount code expiration date',
user_id: 'Select user',
video: 'Video is required'
},
format: {
phone_number: 'Phone number format in incorrect',
email: 'Email format is not correct',
number: 'Value must be number',
boolean: 'Value must be Boolean',
image: 'Photo format is not acceptable',
video: 'Video format is not acceptable',
national_code: 'National code format is not correct'
},
min_char: {
min2: 'At least 2 characters',
min4: 'At least 4 characters',
min8: 'At least 8 characters',
min10: 'At least 10 characters',
min20: 'At least 20 characters',
min30: 'At least 30 characters',
min40: 'At least 40 characters',
min50: 'At least 50 characters',
min60: 'At least 60 characters',
min100: 'At least 100 characters',
min120: 'At least 120 characters',
min150: 'At least 150 characters',
min200: 'At least 200 characters',
data_size: 'Acceptable minimum size: ',
image_width_size: 'Minimum width: ',
image_height_size: 'Minimum height: '
},
max_char: {
max4: 'Maximum 4 characters',
max8: 'Maximum 8 characters',
max10: 'Maximum 10 characters',
max15: 'Maximum 15 characters',
max20: 'Maximum 20 characters',
max30: 'Maximum 30 characters',
max40: 'Maximum 40 characters',
max50: 'Maximum 50 characters',
max60: 'Maximum 60 characters',
max100: 'Maximum 100 characters',
max120: 'Maximum 120 characters',
max150: 'Maximum 150 characters',
max200: 'Maximum 200 characters',
data_size: 'Maximum acceptable size: ',
image_width_size: 'Maximum width: ',
image_height_size: 'Maximum height: '
},
not_found: {
user_id: 'There is no user with this profile',
admin_id: 'There is no admin with this profile',
order_id: 'There is no order with this profile',
item_id: 'There is no item with this specification',
password: 'Password or ID is incorrect'
},
duplicated: {
username: 'This username already exists',
email: 'This email already exists',
name: 'Name already exists',
title: 'Title already exists',
phone_number: 'Phone number already exists'
},
response: {
logged_in: 'You are logged in',
not_logged_in: 'You are not logged in',
logged_out: 'You are logged out',
unauthenticated: 'unauthenticated',
recovery_link: 'Recovery link sent',
success_save: 'Successfully saved',
success_remove: 'Successfully removed',
cart_empty: 'Cart is empty',
already_has_address: 'Already has address',
activation_code: 'Activation code sent to you',
activation_email: 'Activation email sent to you',
expired_reset_link: 'The current reset pass link has been expired',
email_not_confirmed: 'Confirm your email first, the activation link has already been sent to you.',
expired_activation_link: 'This activation link has expired',
success_activation: 'Your account has been successfully activated',
passwords_not_match: 'Passwords are not the same',
problem: 'There is a problem, please try again.',
latinChar: 'Please write in Latin letters',
persianChar: 'Please write in Persian letters',
whiteSpace: 'There should be no space between letters and words'
},
file_types: {
jpg: 'Only jpg format is acceptable',
png: 'Only png format is acceptable',
gif: 'Only gif format is acceptable',
pdf: 'Only pdf format is acceptable',
txt: 'Only txt format is acceptable',
log: 'Only log format is acceptable',
mp3: 'Only mp3 format is acceptable',
ogg: 'Only ogg format is acceptable',
wmv: 'Only wmv format is acceptable',
mp4: 'Only mp4 format is acceptable',
mov: 'Only mov format is acceptable',
mkv: 'Only mkv format is acceptable',
flv: 'Only flv format is acceptable'
}
},
de: {
required: {
token: 'Token is required',
field: 'This field is required',
// developer validations
remember_me: 'Remember_me-Parameter erforderlich',
// registration validations
name: 'Name eingeben',
first_name: 'Name eingeben',
last_name: 'Nachnamen eingeben',
national_code: 'Nationaler Code ist erforderlich',
email: 'Email eingeben',
email_personal: 'Persönliche E-Mail ist erforderlich',
email_company: 'Für juristische Personen ist eine Unternehmens-E-Mail erforderlich',
company_name: 'Geben Sie den Firmennamen ein, wenn Sie eine juristische Person sind',
username: 'Geben Sie den Benutzernamen ein',
phone_number: 'Telefonnummer eingeben',
password: 'Passwort eingeben',
birthdate: 'Enter birthdate',
// addressing validations
country: 'Land eingeben',
province: 'Stadt betreten',
city: 'Stadt betreten',
address: 'Adresse eingeben',
postal_code: 'Postleitzahl eingeben',
plaque: 'Plakette eingeben',
receiver_first_name: 'Empfängername eingeben',
receiver_last_name: 'Nachname des Empfängers eingeben',
receiver_mobile: 'Handynummer des Empfängers eingebenr',
// global (post - gallery - ...)
title: 'Titel eingeben',
caption: 'Beschriftung eingeben',
description: 'Beschreibung eingeben',
category: 'Kategorie wählen',
image: 'Bild ist erforderlich',
cover: 'Bild ist erforderlich Abdeckung ist erforderlich',
file: 'Datei ist erforderlich',
message: 'Nachricht schreiben',
quantity: 'Menge eingeben',
date: 'Enter date',
reason: 'Grund auswählen',
question: 'Schreibe die Frage',
answer: 'Schreibe die Antwort',
price: 'Enter Price',
type: 'Select type',
discount_code: 'Enter discount code',
discount_amount: 'Enter discount amount',
discount_expire_date: 'Specify discount code expiration date',
user_id: 'Select user',
video: 'Video is required'
},
format: {
phone_number: 'Telefonnummernformat falsch',
email: 'E-Mail-Format nicht korrekt',
number: 'Wert muss Nummer sein',
boolean: 'Wert muss Boolescher Wert sein',
image: 'Photo format is not acceptable',
video: 'Video format is not acceptable',
national_code: 'Nationales Codeformat ist nicht korrekt'
},
min_char: {
min2: 'Mindestens 2 Zeichen',
min4: 'Mindestens 4 Zeichen',
min8: 'Mindestens 8 Zeichen',
min10: 'Mindestens 10 Zeichen',
min20: 'Mindestens 20 Zeichen',
min30: 'Mindestens 30 Zeichen',
min40: 'Mindestens 40 Zeichen',
min50: 'Mindestens 50 Zeichen',
min60: 'Mindestens 60 Zeichen',
min100: 'Mindestens 100 Zeichen',
min120: 'Mindestens 120 Zeichen',
min150: 'Mindestens 150 Zeichen',
min200: 'Mindestens 200 Zeichen',
data_size: 'Akzeptable Mindestgröße: ',
image_width_size: 'Mindestbreite: ',
image_height_size: 'Mindesthöhe: '
},
max_char: {
max4: 'Maximal 4 Zeichen',
max8: 'Maximal 8 Zeichen',
max10: 'Maximal 10 Zeichen',
max15: 'Maximal 15 Zeichen',
max20: 'Maximal 20 Zeichen',
max30: 'Maximal 30 Zeichen',
max40: 'Maximal 40 Zeichen',
max50: 'Maximal 50 Zeichen',
max60: 'Maximal 60 Zeichen',
max100: 'Maximal 100 Zeichen',
max120: 'Maximal 120 Zeichen',
max150: 'Maximal 150 Zeichen',
max200: 'Maximal 200 Zeichen',
data_size: 'Maximal zulässige Größe: ',
image_width_size: 'Maximale Breite: ',
image_height_size: 'Maximale Höhe: '
},
not_found: {
user_id: 'Es gibt keinen Benutzer mit diesem Profil',
admin_id: 'Es gibt keinen Administrator mit diesem Profil',
order_id: 'Es gibt keine Bestellung mit diesem Profil',
item_id: 'Es gibt keinen Artikel mit dieser Spezifikation',
password: 'Passwort oder ID ist falsch'
},
duplicated: {
username: 'Dieser Benutzername existiert bereits',
email: 'Diese E-Mail existiert bereits',
name: 'Name ist doppelt',
title: 'Titel ist doppelt',
phone_number: 'Phone number already exists'
},
response: {
logged_in: 'Sie sind angemeldet',
not_logged_in: 'Sie sind nicht angemeldet',
logged_out: 'Sie sind abgemeldet',
unauthenticated: 'nicht authentifiziert',
recovery_link: 'Wiederherstellungslink gesendet',
success_save: 'Erfolgreich gespeichert',
success_remove: 'Erfolgreich entfernt',
cart_empty: 'Warenkorb ist leer',
ready_has_address: 'Hat bereits Adresse',
activation_code: 'Activation code sent to you',
activation_email: 'Activation email sent to you',
expired_reset_link: 'Der aktuelle Reset-Pass-Link ist abgelaufen',
email_not_confirmed: 'Bestätigen Sie zuerst Ihre E-Mail, der Aktivierungslink wurde bereits an Sie gesendet.',
expired_activation_link: 'Dieser Aktivierungslink ist abgelaufen',
success_activation: 'Ihr Konto wurde erfolgreich aktiviert',
passwords_not_match: 'Passwörter sind nicht dasselbe',
problem: 'Es gibt ein Problem, bitte versuchen Sie es erneut.',
latinChar: 'Please write in Latin letters',
persianChar: 'Please write in Persian letters',
whiteSpace: 'There should be no space between letters and words'
},
file_types: {
jpg: 'Nur das jpg-Format ist akzeptabel',
png: 'Nur das png-Format ist akzeptabel',
gif: 'Nur das gif-Format ist akzeptabel',
pdf: 'Nur das PDF-Format ist akzeptabel',
txt: 'Nur das txt-Format ist akzeptabel',
log: 'Nur das log-Format ist akzeptabel',
mp3: 'Nur das mp3-Format ist akzeptabel',
ogg: 'Nur das ogg-Format ist akzeptabel',
wmv: 'Nur das wmv-Format ist akzeptabel',
mp4: 'Nur das mp4-Format ist akzeptabel',
mov: 'Nur das mov-Format ist akzeptabel',
mkv: 'Nur das mkv-Format ist akzeptabel',
flv: 'Nur das flv-Format ist akzeptabel'
}
},
tr: {
required: {
token: 'Token is required',
field: 'This field is required',
// geliştirici doğrulamaları
Remember_me: 'Remember_me parametresi gerekli',
// kayıt doğrulamaları
name: 'Adı girin',
first_name: 'Adı girin',
last_name: 'Soyadı girin',
national_code: 'Nationaler Kodu erforderlich',
email: 'E-posta girin',
email_personal: 'Kişisel e-posta gereklidir',
email_company: 'Tüzel kişiler için şirket e-postası gereklidir',
company_name: 'Tüzel kişiyseniz şirket adını girin',
username: 'Kullanıcı adını girin',
phone_number: 'Telefon numarasını girin',
password: 'Şifre girin',
birthdate: 'Enter birthdate',
// doğrulamaları adresleme
country: 'Ülke girin',
province: 'İl girin',
city: 'Şehir girin',
address: 'Adres girin',
postal_code: 'Posta kodunu girin',
plaque: 'Plak girin',
receiver_first_name: 'Alıcı adını girin',
receiver_last_name: 'Alıcının soyadını girin',
receiver_mobile: 'Alıcının cep telefonu numarasını girin',
// global (post - galeri - ...)
title: 'Başlığı girin',
caption: 'Başlık girin',
description: 'Açıklama girin',
category: 'Kategori seçin',
image: 'Resim gerekli',
cover: 'Kapak gereklidir',
file: 'Dosya gerekli',
message: 'Mesaj yaz',
quantity: 'Miktar girin',
date: 'Enter date',
reason: 'Nedeni seçin',
question: 'Soruyu yazın',
answer: 'Cevabı yaz',
price: 'Enter Price',
type: 'Select type',
discount_code: 'Enter discount code',
discount_amount: 'Enter discount amount',
discount_expire_date: 'Specify discount code expiration date',
user_id: 'Select user',
video: 'Video is required'
},
format: {
phone_number: 'Telefon numarası biçimi yanlış',
email: 'E-posta formatı doğru değil',
number: 'Değer sayı olmalıdır',
boolean: 'Değer Boole olmalıdır',
image: 'Photo format is not acceptable',
video: 'Video format is not acceptable',
national_code: 'Ulusal kod formatı doğru değil'
},
min_char: {
min2: 'En az 2 karakter',
min4: 'En az 4 karakter',
min8: 'En az 8 karakter',
min10: 'En az 10 karakter',
min20: 'En az 20 karakter',
min30: 'En az 30 karakter',
min40: 'En az 40 karakter',
min50: 'En az 50 karakter',
min60: 'En az 60 karakter',
min100: 'En az 100 karakter',
min120: 'En az 120 karakter',
min150: 'En az 150 karakter',
min200: 'En az 200 karakter',
data_size: 'Kabul edilebilir minimum boyut: ',
image_width_size: 'Minimum genişlik: ',
image_height_size: 'Minimum yükseklik: '
},
max_char: {
max4: 'Maksimum 4 karakter',
max8: 'Maksimum 8 karakter',
max10: 'Maksimum 10 karakter',
max15: 'Maksimum 15 karakter',
max20: 'Maksimum 20 karakter',
max30: 'Maksimum 30 karakter',
max40: 'Maksimum 40 karakter',
max50: 'Maksimum 50 karakter',
max60: 'Maksimum 60 karakter',
max100: 'Maksimum 100 karakter',
max120: 'Maksimum 120 karakter',
max150: 'Maksimum 150 karakter',
max200: 'Maksimum 200 karakter',
data_size: 'Kabul edilebilir maksimum boyut: ',
image_width_size: 'Maksimum genişlik: ',
image_height_size: 'Maksimum yükseklik: '
},
not_found: {
user_id: 'Bu profile sahip kullanıcı yok',
admin_id: 'Bu profile sahip yönetici yok',
order_id: 'Bu profilde sipariş yok',
item_id: 'Bu spesifikasyona sahip hiçbir öğe yok',
password: 'Şifre veya kimlik yanlış'
},
duplicated: {
username: 'Bu kullanıcı adı zaten mevcut',
email: 'Bu email zaten var',
name: 'Ad çift',
title: 'Başlık yineleniyor',
phone_number: 'Phone number already exists'
},
response: {
logged_in: 'Giriş yaptınız',
not_logged_in: 'Giriş yapmadınız',
logged_out: 'Çıkış yaptınız',
unauthenticated: 'unauthenticated',
recovery_link: 'Kurtarma bağlantısı gönderildi',
success_save: 'Başarıyla kaydedildi',
success_remove: 'Başarıyla kaldırıldı',
cart_empty: 'Sepet boş',
already_has_address: 'Zaten adresi var',
activation_code: 'Activation code sent to you',
activation_email: 'Activation email sent to you',
expired_reset_link: 'Mevcut sıfırlama geçiş bağlantısının süresi doldu',
email_not_confirmed: 'Önce e-postanızı onaylayın, aktivasyon bağlantısı size zaten gönderildi.',
expired_activation_link: 'Bu aktivasyon bağlantısının süresi doldu',
success_activation: 'Hesabınız başarıyla etkinleştirildi',
passwords_not_match: 'Şifreler aynı değil',
problem: 'Bir sorun var, lütfen tekrar deneyin.',
latinChar: 'Please write in Latin letters',
persianChar: 'Please write in Persian letters',
whiteSpace: 'There should be no space between letters and words'
},
file_types: {
jpg: 'Yalnızca jpg formatı kabul edilebilir',
png: 'Sadece png formatı kabul edilebilir',
gif: 'Yalnızca gif formatı kabul edilebilir',
pdf: 'Yalnızca pdf formatı kabul edilebilir',
txt: 'Yalnızca txt formatı kabul edilebilir',
log: 'Yalnızca log formatı kabul edilebilir',
mp3: 'Yalnızca mp3 formatı kabul edilebilir',
ogg: 'Yalnızca ogg formatı kabul edilebilir',
wmv: 'Yalnızca wmv formatı kabul edilebilir',
mp4: 'Yalnızca mp4 formatı kabul edilebilir',
mov: 'Yalnızca mov formatı kabul edilebilir',
mkv: 'Yalnızca mkv formatı kabul edilebilir',
flv: 'Yalnızca flv biçimi kabul edilebilir'
}
},
it: {
required: {
token: 'Token is required',
field: 'This field is required',
// convalide dello sviluppatore
Remember_me: 'Remember_me parameter required',
// convalide della registrazione
name: 'Inserisci nome',
first_name: 'Inserisci nome',
last_name: 'Inserisci il cognome',
national_code: 'Il codice Nationaler è comune',
email: 'Enter email',
email_personal: "L'email personale è obbligatoria",
email_company: "L'email aziendale è obbligatoria per le persone giuridiche",
company_name: "Inserisci il nome dell'azienda se sei una persona giuridica",
username: 'Inserisci nome utente',
phone_number: 'Inserisci numero di telefono',
password: 'Inserisci password',
birthdate: 'Enter birthdate',
// indirizzamento delle convalide
country: 'Inserisci paese',
province: 'Inserisci provincia',
city: 'Inserisci città',
address: 'Inserisci indirizzo',
postal_code: 'Inserisci codice postale',
plaque: 'Inserisci targa',
receiver_first_name: 'Inserisci il nome del destinatario',
receiver_last_name: 'Inserisci il cognome del destinatario',
receiver_mobile: 'Inserisci il numero di cellulare del destinatario',
// globale (post - gallery - ...)
title: 'Inserisci titolo',
caption: 'Inserisci didascalia',
description: 'Inserisci descrizione',
category: 'Seleziona categoria',
image: "L'immagine è obbligatoria",
cover: 'Cover is required',
file: 'Il file è obbligatorio',
message: 'Scrivi messaggio',
quantity: 'Inserisci quantità',
date: 'Enter date',
reason: 'Seleziona motivo',
question: 'Scrivi la domanda',
answer: 'Scrivi la risposta',
price: 'Enter Price',
type: 'Select type',
discount_code: 'Enter discount code',
discount_amount: 'Enter discount amount',
discount_expire_date: 'Specify discount code expiration date',
user_id: 'Select user',
video: 'Video is required'
},
format: {
phone_number: 'Formato del numero di telefono non corretto',
email: 'Formato email non corretto',
number: 'Il valore deve essere un numero',
boolean: 'Il valore deve essere booleano',
image: 'Photo format is not acceptable',
video: 'Video format is not acceptable',
national_code: 'Il formato del codice nazionale non è corretto'
},
min_char: {
min2: 'Almeno 2 caratteri',
min4: 'Almeno 4 caratteri',
min8: 'Almeno 8 caratteri',
min10: 'Almeno 10 caratteri',
min20: 'Almeno 20 caratteri',
min30: 'Almeno 30 caratteri',
min40: 'Almeno 40 caratteri',
min50: 'Almeno 50 caratteri',
min60: 'Almeno 60 caratteri',
min100: 'Almeno 100 caratteri',
min120: 'Almeno 120 caratteri',
min150: 'Almeno 150 caratteri',
min200: 'Almeno 200 caratteri',
data_size: 'Dimensione minima accettabile: ',
image_width_size: 'Larghezza minima: ',
image_height_size: 'Altezza minima: '
},
max_char: {
max4: 'Massimo 4 caratteri',
max8: 'Massimo 8 caratteri',
max10: 'Massimo 10 caratteri',
max15: 'Massimo 15 caratteri',
max20: 'Massimo 20 caratteri',
max30: 'Massimo 30 caratteri',
max40: 'Massimo 40 caratteri',
max50: 'Massimo 50 caratteri',
max60: 'Massimo 60 caratteri',
max100: 'Massimo 100 caratteri',
max120: 'Massimo 120 caratteri',
max150: 'Massimo 150 caratteri',
max200: 'Massimo 200 caratteri',
data_size: 'Dimensione massima accettabile: ',
image_width_size: 'Larghezza massima: ',
image_height_size: 'Altezza massima: '
},
not_found: {
user_id: 'Nessun utente con questo profilo',
admin_id: 'Nessun amministratore con questo profilo',
order_id: 'Nessun ordine con questo profilo',
item_id: 'Nessun articolo con questa specifica',
password: "La password o l'ID non sono corretti"
},
duplicated: {
username: 'Questo nome utente esiste già',
email: 'Questa email esiste già',
name: 'Il nome è duplicato',
title: 'Il titolo è duplicato',
phone_number: 'Phone number already exists'
},
response: {
logged_in: "Hai effettuato l'accesso",
not_logged_in: 'Non sei loggato',
logged_out: 'Sei disconnesso',
unauthenticated: 'unauthenticated',
recovery_link: 'Link di ripristino inviato',
success_save: 'Salvataggio riuscito',
success_remove: 'Rimosso con successo',
cart_empty: 'Il carrello è vuoto',
already_has_address: 'Ha già indirizzo',
activation_code: 'Activation code sent to you',
activation_email: 'Activation email sent to you',
expired_reset_link: "L'attuale link del passaggio di reimpostazione è scaduto",
email_not_confirmed: 'Conferma prima la tua email, il link di attivazione ti è già stato inviato.',
expired_activation_link: 'Questo link di attivazione è scaduto',
success_activation: 'Il tuo account è stato attivato con successo',
passwords_not_match: 'Le password non sono le stesse',
problem: 'Si è verificato un problema, riprova.',
latinChar: 'Please write in Latin letters',
persianChar: 'Please write in Persian letters',
whiteSpace: 'There should be no space between letters and words'
},
file_types: {
jpg: 'È accettabile solo il formato jpg',
png: 'È accettabile solo il formato png',
gif: 'È accettabile solo il formato GIF',
pdf: 'È accettabile solo il formato pdf',
txt: 'È accettabile solo il formato txt',
log: 'È accettabile solo il formato log',
mp3: 'È accettabile solo il formato mp3',
ogg: 'È accettabile solo il formato ogg',
wmv: 'È accettabile solo il formato wmv',
mp4: 'È accettabile solo il formato mp4',
mov: 'È accettabile solo il formato mov',
mkv: 'È accettabile solo il formato mkv',
flv: 'È accettabile solo il formato flv'
}
},
supportedImageFormats: ['jpg', 'jpeg', 'png', 'svg', 'svg+xml', 'webp'],
supportedVideoFormats: ['mp4', 'wmv']
}