1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-08 12:12:48 +01:00

Merge remote-tracking branch 'upstream/develop' into wepay-integration

This commit is contained in:
Joshua Dwire 2016-05-17 15:07:53 -04:00
commit 4f3bb7eeb4
59 changed files with 1385 additions and 1336 deletions

View File

@ -60,7 +60,7 @@ API_SECRET=password
# If this is set to anything, the URL secret will be set the next
# time a file is downloaded through the client portal.
# Only set this temporarily, as it slows things down.
#RACKSPACE_TEMP_URL_SECRET_SET=
#RACKSPACE_TEMP_URL_SECRET_SET=
#DOCUMENT_FILESYSTEM=
@ -79,4 +79,4 @@ WEPAY_APP_FEE_MULTIPLIER=0.002
WEPAY_APP_FEE_FIXED=0
# See https://www.wepay.com/developer/reference/structures#theme
WEPAY_THEME={"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}'));
WEPAY_THEME='{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}'

View File

@ -403,17 +403,9 @@ class AccountController extends BaseController
private function showBankAccounts()
{
$account = Auth::user()->account;
$account->load('bank_accounts');
$count = count($account->bank_accounts);
if ($count == 0) {
return Redirect::to('bank_accounts/create');
} else {
return View::make('accounts.banks', [
'title' => trans('texts.bank_accounts')
]);
}
return View::make('accounts.banks', [
'title' => trans('texts.bank_accounts')
]);
}
private function showOnlinePayments()

View File

@ -13,12 +13,14 @@ use stdClass;
use Crypt;
use URL;
use Utils;
use File;
use App\Models\Gateway;
use App\Models\Account;
use App\Models\BankAccount;
use App\Ninja\Repositories\BankAccountRepository;
use App\Services\BankAccountService;
use App\Http\Requests\CreateBankAccountRequest;
use Illuminate\Http\Request;
class BankAccountController extends BaseController
{
@ -122,4 +124,28 @@ class BankAccountController extends BaseController
return $this->bankAccountService->importExpenses($bankId, Input::all());
}
public function showImportOFX()
{
return view('accounts.import_ofx');
}
public function doImportOFX(Request $request)
{
$file = File::get($request->file('ofx_file'));
try {
$data = $this->bankAccountService->parseOFX($file);
} catch (\Exception $e) {
Session::flash('error', trans('texts.ofx_parse_failed'));
return view('accounts.import_ofx');
}
$data = [
'banks' => null,
'bankAccount' => null,
'transactions' => json_encode([$data])
];
return View::make('accounts.bank_account', $data);
}
}

View File

@ -61,40 +61,36 @@ class BaseAPIController extends Controller
}
$this->serializer = Request::get('serializer') ?: API_SERIALIZER_ARRAY;
if ($this->serializer === API_SERIALIZER_JSON) {
$this->manager->setSerializer(new JsonApiSerializer());
} else {
$this->manager->setSerializer(new ArraySerializer());
}
if (Utils::isNinjaDev()) {
\DB::enableQueryLog();
}
}
protected function handleAction($request)
{
{
$entity = $request->entity();
$action = $request->action;
$repo = Utils::toCamelCase($this->entityType) . 'Repo';
$this->$repo->$action($entity);
return $this->itemResponse($entity);
}
protected function listResponse($query)
{
$transformerClass = EntityModel::getTransformerName($this->entityType);
$transformer = new $transformerClass(Auth::user()->account, Input::get('serializer'));
$transformer = new $transformerClass(Auth::user()->account, Input::get('serializer'));
$includes = $transformer->getDefaultIncludes();
$includes = $this->getRequestIncludes($includes);
$query->with($includes);
if ($updatedAt = Input::get('updated_at')) {
$updatedAt = date('Y-m-d H:i:s', $updatedAt);
$query->where(function($query) use ($includes, $updatedAt) {
@ -106,14 +102,14 @@ class BaseAPIController extends Controller
}
});
}
if ($clientPublicId = Input::get('client_id')) {
$filter = function($query) use ($clientPublicId) {
$query->where('public_id', '=', $clientPublicId);
};
$query->whereHas('client', $filter);
}
if ( ! Utils::hasPermission('view_all')){
if ($this->entityType == ENTITY_USER) {
$query->where('id', '=', Auth::user()->id);
@ -121,7 +117,7 @@ class BaseAPIController extends Controller
$query->where('user_id', '=', Auth::user()->id);
}
}
$data = $this->createCollection($query, $transformer, $this->entityType);
return $this->response($data);
@ -130,10 +126,10 @@ class BaseAPIController extends Controller
protected function itemResponse($item)
{
$transformerClass = EntityModel::getTransformerName($this->entityType);
$transformer = new $transformerClass(Auth::user()->account, Input::get('serializer'));
$transformer = new $transformerClass(Auth::user()->account, Input::get('serializer'));
$data = $this->createItem($item, $transformer, $this->entityType);
return $this->response($data);
}
@ -160,18 +156,12 @@ class BaseAPIController extends Controller
} else {
$resource = new Collection($query, $transformer, $entityType);
}
return $this->manager->createData($resource)->toArray();
}
protected function response($response)
{
if (Utils::isNinjaDev()) {
$count = count(\DB::getQueryLog());
Log::info(Request::method() . ' - ' . Request::url() . ": $count queries");
Log::info(json_encode(\DB::getQueryLog()));
}
$index = Request::get('index') ?: 'data';
if ($index == 'none') {
@ -222,7 +212,7 @@ class BaseAPIController extends Controller
$data[] = $include;
}
}
return $data;
}
}

View File

@ -10,7 +10,7 @@ use Utils;
class BaseController extends Controller
{
use DispatchesJobs, AuthorizesRequests;
protected $entityType;
/**

View File

@ -1,7 +1,7 @@
<?php namespace App\Http\Controllers;
use App\Models\Expense;
use app\Ninja\Repositories\ExpenseRepository;
use App\Ninja\Repositories\ExpenseRepository;
use App\Ninja\Transformers\ExpenseTransformer;
use App\Services\ExpenseService;
use Utils;

View File

@ -60,7 +60,7 @@ class PublicClientController extends BaseController
]);
}
if (!Input::has('phantomjs') && !Input::has('silent') && !Session::has($invitationKey)
if (!Input::has('phantomjs') && !Input::has('silent') && !Session::has($invitationKey)
&& (!Auth::check() || Auth::user()->account_id != $invoice->account_id)) {
if ($invoice->is_quote) {
event(new QuoteInvitationWasViewed($invoice, $invitation));
@ -73,7 +73,7 @@ class PublicClientController extends BaseController
Session::put('invitation_key', $invitationKey); // track current invitation
$account->loadLocalizationSettings($client);
$invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date);
$invoice->due_date = Utils::fromSqlDate($invoice->due_date);
$invoice->features = [
@ -82,7 +82,7 @@ class PublicClientController extends BaseController
'invoice_settings' => $account->hasFeature(FEATURE_INVOICE_SETTINGS),
];
$invoice->invoice_fonts = $account->getFontsData();
if ($invoice->invoice_design_id == CUSTOM_DESIGN) {
$invoice->invoice_design->javascript = $account->custom_design;
} else {
@ -149,10 +149,10 @@ class PublicClientController extends BaseController
'checkoutComDebug' => $checkoutComDebug,
'phantomjs' => Input::has('phantomjs'),
);
if($account->hasFeature(FEATURE_DOCUMENTS) && $this->canCreateZip()){
$zipDocs = $this->getInvoiceZipDocuments($invoice, $size);
if(count($zipDocs) > 1){
$data['documentsZipURL'] = URL::to("client/documents/{$invitation->invitation_key}");
$data['documentsZipSize'] = $size;
@ -173,6 +173,7 @@ class PublicClientController extends BaseController
foreach ($paymentMethods as $paymentMethod) {
if ($paymentMethod->payment_type_id != PAYMENT_TYPE_ACH || $paymentMethod->status == PAYMENT_METHOD_STATUS_VERIFIED) {
$code = htmlentities(str_replace(' ', '', strtolower($paymentMethod->payment_type->name)));
$html = '';
if ($paymentMethod->payment_type_id == PAYMENT_TYPE_ACH) {
if ($paymentMethod->bank_data) {
@ -303,7 +304,7 @@ class PublicClientController extends BaseController
$data['braintreeClientToken'] = $this->paymentService->getBraintreeClientToken($account);
}
}
return response()->view('invited.dashboard', $data);
}
@ -323,9 +324,9 @@ class PublicClientController extends BaseController
$data = [
'client' => Utils::getClientDisplayName($model),
'user' => $model->is_system ? ('<i>' . trans('texts.system') . '</i>') : ($model->user_first_name . ' ' . $model->user_last_name),
'invoice' => trans('texts.invoice') . ' ' . $model->invoice,
'invoice' => $model->invoice,
'contact' => Utils::getClientDisplayName($model),
'payment' => trans('texts.payment') . ($model->payment ? ' ' . $model->payment : ''),
'payment' => $model->payment ? ' ' . $model->payment : '',
'credit' => $model->payment_amount ? Utils::formatMoney($model->credit, $model->currency_id, $model->country_id) : '',
'payment_amount' => $model->payment_amount ? Utils::formatMoney($model->payment_amount, $model->currency_id, $model->country_id) : null,
'adjustment' => $model->adjustment ? Utils::formatMoney($model->adjustment, $model->currency_id, $model->country_id) : null,
@ -351,7 +352,7 @@ class PublicClientController extends BaseController
}
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
$data = [
'color' => $color,
'account' => $account,
@ -422,7 +423,7 @@ class PublicClientController extends BaseController
return $this->returnError();
}
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
$data = [
'color' => $color,
'account' => $account,
@ -471,7 +472,7 @@ class PublicClientController extends BaseController
->orderColumns( 'invoice_number', 'transaction_reference', 'payment_type', 'amount', 'payment_date')
->make();
}
private function getPaymentStatusLabel($model)
{
$label = trans("texts.status_" . strtolower($model->payment_status_name));
@ -546,7 +547,7 @@ class PublicClientController extends BaseController
return $this->returnError();
}
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
$data = [
'color' => $color,
'account' => $account,
@ -599,55 +600,55 @@ class PublicClientController extends BaseController
return $invitation;
}
public function getDocumentVFSJS($publicId, $name){
if (!$invitation = $this->getInvitation()) {
return $this->returnError();
}
$clientId = $invitation->invoice->client_id;
$document = Document::scope($publicId, $invitation->account_id)->first();
if(!$document->isPDFEmbeddable()){
return Response::view('error', array('error'=>'Image does not exist!'), 404);
}
$authorized = false;
if($document->expense && $document->expense->client_id == $invitation->invoice->client_id){
$authorized = true;
} else if($document->invoice && $document->invoice->client_id == $invitation->invoice->client_id){
$authorized = true;
}
if(!$authorized){
return Response::view('error', array('error'=>'Not authorized'), 403);
}
}
if(substr($name, -3)=='.js'){
$name = substr($name, 0, -3);
}
$content = $document->preview?$document->getRawPreview():$document->getRaw();
$content = 'ninjaAddVFSDoc('.json_encode(intval($publicId).'/'.strval($name)).',"'.base64_encode($content).'")';
$response = Response::make($content, 200);
$response->header('content-type', 'text/javascript');
$response->header('cache-control', 'max-age=31536000');
return $response;
}
protected function canCreateZip(){
return function_exists('gmp_init');
}
protected function getInvoiceZipDocuments($invoice, &$size=0){
$documents = $invoice->documents;
foreach($invoice->expenses as $expense){
$documents = $documents->merge($expense->documents);
}
$documents = $documents->sortBy('size');
$size = 0;
@ -655,16 +656,16 @@ class PublicClientController extends BaseController
$toZip = array();
foreach($documents as $document){
if($size + $document->size > $maxSize)break;
if(!empty($toZip[$document->name])){
// This name is taken
if($toZip[$document->name]->hash != $document->hash){
// 2 different files with the same name
$nameInfo = pathinfo($document->name);
for($i = 1;; $i++){
$name = $nameInfo['filename'].' ('.$i.').'.$nameInfo['extension'];
if(empty($toZip[$name])){
$toZip[$name] = $document;
$size += $document->size;
@ -674,7 +675,7 @@ class PublicClientController extends BaseController
break;
}
}
}
}
else{
@ -682,25 +683,25 @@ class PublicClientController extends BaseController
$size += $document->size;
}
}
return $toZip;
}
public function getInvoiceDocumentsZip($invitationKey){
if (!$invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
return $this->returnError();
}
Session::put('invitation_key', $invitationKey); // track current invitation
$invoice = $invitation->invoice;
$toZip = $this->getInvoiceZipDocuments($invoice);
if(!count($toZip)){
return Response::view('error', array('error'=>'No documents small enough'), 404);
}
$zip = new ZipArchive($invitation->account->name.' Invoice '.$invoice->invoice_number.'.zip');
return Response::stream(function() use ($toZip, $zip) {
foreach($toZip as $name=>$document){
@ -718,28 +719,28 @@ class PublicClientController extends BaseController
$zip->finish();
}, 200);
}
public function getDocument($invitationKey, $publicId){
if (!$invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
return $this->returnError();
}
Session::put('invitation_key', $invitationKey); // track current invitation
$clientId = $invitation->invoice->client_id;
$document = Document::scope($publicId, $invitation->account_id)->firstOrFail();
$authorized = false;
if($document->expense && $document->expense->client_id == $invitation->invoice->client_id){
$authorized = true;
} else if($document->invoice && $document->invoice->client_id == $invitation->invoice->client_id){
$authorized = true;
}
if(!$authorized){
return Response::view('error', array('error'=>'Not authorized'), 403);
}
}
return DocumentController::getDownloadResponse($document);
}

View File

@ -110,7 +110,7 @@ class UserController extends BaseController
if (Utils::isNinja()) {
$count = User::where('account_id', '=', Auth::user()->account_id)->count();
if ($count >= MAX_NUM_USERS) {
Session::flash('error', trans('texts.limit_users'));
Session::flash('error', trans('texts.limit_users', ['limit' => MAX_NUM_USERS]));
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
}
}
@ -291,7 +291,7 @@ class UserController extends BaseController
$account = Auth::user()->account;
$this->accountRepo->unlinkAccount($account);
if ($account->company->accounts->count() == 1) {
$account->company->forceDelete();
$account->company->forceDelete();
}
$account->forceDelete();
}

View File

@ -17,6 +17,7 @@ class Kernel extends HttpKernel {
'Illuminate\View\Middleware\ShareErrorsFromSession',
'App\Http\Middleware\VerifyCsrfToken',
'App\Http\Middleware\DuplicateSubmissionCheck',
'App\Http\Middleware\QueryLogging',
'App\Http\Middleware\StartupCheck',
];

View File

@ -0,0 +1,38 @@
<?php namespace App\Http\Middleware;
use DB;
use Log;
use Utils;
use Closure;
class QueryLogging
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// Enable query logging for development
if (Utils::isNinjaDev()) {
DB::enableQueryLog();
}
$response = $next($request);
if (Utils::isNinjaDev()) {
// hide requests made by debugbar
if (strstr($request->url(), '_debugbar') === false) {
$queries = DB::getQueryLog();
$count = count($queries);
Log::info($request->method() . ' - ' . $request->url() . ": $count queries");
//Log::info(json_encode($queries));
}
}
return $response;
}
}

View File

@ -124,9 +124,9 @@ class StartupCheck
$licenseKey = Input::get('license_key');
$productId = Input::get('product_id');
$url = (Utils::isNinjaDev() ? SITE_URL : NINJA_APP_URL) . "/claim_license?license_key={$licenseKey}&product_id={$productId}&get_date=true";
$url = (Utils::isNinjaDev() ? SITE_URL : NINJA_APP_URL) . "/claim_license?license_key={$licenseKey}&product_id={$productId}&get_date=true";
$data = trim(file_get_contents($url));
if ($productId == PRODUCT_INVOICE_DESIGNS) {
if ($data = json_decode($data)) {
foreach ($data as $item) {
@ -181,10 +181,10 @@ class StartupCheck
}
}
}
// Show message to IE 8 and before users
if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/(?i)msie [2-8]/', $_SERVER['HTTP_USER_AGENT'])) {
Session::flash('error', trans('texts.old_browser'));
Session::flash('error', trans('texts.old_browser', ['link' => OUTDATE_BROWSER_URL]));
}
$response = $next($request);

View File

@ -60,7 +60,7 @@ Route::group(['middleware' => 'auth:client'], function() {
Route::get('client/documents/js/{documents}/{filename}', 'PublicClientController@getDocumentVFSJS');
Route::get('client/documents/{invitation_key}/{documents}/{filename?}', 'PublicClientController@getDocument');
Route::get('client/documents/{invitation_key}/{filename?}', 'PublicClientController@getInvoiceDocumentsZip');
Route::get('api/client.quotes', array('as'=>'api.client.quotes', 'uses'=>'PublicClientController@quoteDatatable'));
Route::get('api/client.invoices', array('as'=>'api.client.invoices', 'uses'=>'PublicClientController@invoiceDatatable'));
Route::get('api/client.recurring_invoices', array('as'=>'api.client.recurring_invoices', 'uses'=>'PublicClientController@recurringInvoiceDatatable'));
@ -735,20 +735,20 @@ if (!defined('CONTACT_EMAIL')) {
define('FEATURE_API', 'api');
define('FEATURE_CLIENT_PORTAL_PASSWORD', 'client_portal_password');
define('FEATURE_CUSTOM_URL', 'custom_url');
define('FEATURE_MORE_CLIENTS', 'more_clients'); // No trial allowed
// Whitelabel
define('FEATURE_CLIENT_PORTAL_CSS', 'client_portal_css');
define('FEATURE_WHITE_LABEL', 'feature_white_label');
// Enterprise
define('FEATURE_DOCUMENTS', 'documents');
// No Trial allowed
define('FEATURE_USERS', 'users');// Grandfathered for old Pro users
define('FEATURE_USER_PERMISSIONS', 'user_permissions');
// Pro users who started paying on or before this date will be able to manage users
define('PRO_USERS_GRANDFATHER_DEADLINE', '2016-05-15');
@ -765,7 +765,7 @@ if (!defined('CONTACT_EMAIL')) {
define('WEPAY_FEE_PAYER', env('WEPAY_FEE_PAYER', 'payee'));
define('WEPAY_APP_FEE_MULTIPLIER', env('WEPAY_APP_FEE_MULTIPLIER', 0.002));
define('WEPAY_APP_FEE_FIXED', env('WEPAY_APP_FEE_MULTIPLIER', 0.00));
$creditCards = [
1 => ['card' => 'images/credit_cards/Test-Visa-Icon.png', 'text' => 'Visa'],
2 => ['card' => 'images/credit_cards/Test-MasterCard-Icon.png', 'text' => 'Master Card'],

View File

@ -27,15 +27,15 @@ class OFX
curl_setopt($c, CURLOPT_HTTPHEADER, array('Content-Type: application/x-ofx', 'User-Agent: httpclient'));
curl_setopt($c, CURLOPT_POSTFIELDS, $this->request);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$this->response = curl_exec($c);
if (Utils::isNinjaDev()) {
Log::info(print_r($this->response, true));
}
curl_close($c);
$tmp = explode('<OFX>', $this->response);
$this->responseHeader = $tmp[0];
$this->responseBody = '<OFX>'.$tmp[1];
@ -48,6 +48,7 @@ class OFX
return $x;
}
public static function closeTags($x)
{
$x = preg_replace('/\s+/', '', $x);
@ -233,4 +234,3 @@ class Account
}
}
}

View File

@ -153,11 +153,11 @@ class Utils
{
return App::getLocale() == 'en';
}
public static function getLocaleRegion()
{
$parts = explode('_', App::getLocale());
$parts = explode('_', App::getLocale());
return count($parts) ? $parts[0] : 'en';
}
@ -285,7 +285,7 @@ class Utils
if ($info) {
Log::info($error."\n", $data);
} else {
Log::error($error."\n", $data);
Log::error($error."\n", $data);
}
/*
@ -312,12 +312,12 @@ class Utils
public static function getFromCache($id, $type) {
$cache = Cache::get($type);
if ( ! $cache) {
static::logError("Cache for {$type} is not set");
return null;
}
$data = $cache->filter(function($item) use ($id) {
return $item->id == $id;
});
@ -344,7 +344,7 @@ class Utils
$decimal = $currency->decimal_separator;
$precision = $currency->precision;
$code = $currency->code;
$swapSymbol = false;
$swapSymbol = $currency->swap_currency_symbol;
if ($countryId && $currencyId == CURRENCY_EURO) {
$country = self::getFromCache($countryId, 'countries');
@ -427,7 +427,12 @@ class Utils
public static function toCamelCase($string)
{
return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $string))));
return lcfirst(static::toClassCase($string));
}
public static function toClassCase($string)
{
return str_replace(' ', '', ucwords(str_replace('_', ' ', $string)));
}
public static function timestampToDateTimeString($timestamp)

View File

@ -90,15 +90,24 @@ class Expense extends EntityModel
{
return round($this->amount * $this->exchange_rate, 2);
}
public function toArray()
{
$array = parent::toArray();
if(empty($this->visible) || in_array('converted_amount', $this->visible))$array['converted_amount'] = $this->convertedAmount();
return $array;
}
public function scopeBankId($query, $bankdId = null)
{
if ($bankdId) {
$query->whereBankId($bankId);
}
return $query;
}
}
Expense::creating(function ($expense) {

View File

@ -39,7 +39,7 @@ class Invitation extends EntityModel
$url = SITE_URL;
$iframe_url = $this->account->iframe_url;
if ($this->account->hasFeature(FEATURE_CUSTOM_URL)) {
if ($iframe_url && !$forceOnsite) {
return "{$iframe_url}?{$this->invitation_key}";
@ -47,7 +47,7 @@ class Invitation extends EntityModel
$url = Utils::replaceSubdomain($url, $this->account->subdomain);
}
}
return "{$url}/{$type}/{$this->invitation_key}";
}
@ -64,7 +64,7 @@ class Invitation extends EntityModel
$date = Utils::dateToString($this->$field);
$hasValue = true;
}
$parts[] = trans('texts.invitation_status.' . $status) . ': ' . $date;
$parts[] = trans('texts.invitation_status_' . $status) . ': ' . $date;
}
return $hasValue ? implode($parts, '<br/>') : false;

View File

@ -48,9 +48,9 @@ class ContactMailer extends Mailer
$response = null;
if ($client->trashed()) {
return trans('texts.email_errors.inactive_client');
return trans('texts.email_error_inactive_client');
} elseif ($invoice->trashed()) {
return trans('texts.email_errors.inactive_invoice');
return trans('texts.email_error_inactive_invoice');
}
$account->loadLocalizationSettings($client);
@ -62,23 +62,23 @@ class ContactMailer extends Mailer
if ($account->attatchPDF() && !$pdfString) {
$pdfString = $invoice->getPDFString();
}
$documentStrings = array();
if ($account->document_email_attachment && $invoice->hasDocuments()) {
$documents = $invoice->documents;
foreach($invoice->expenses as $expense){
$documents = $documents->merge($expense->documents);
}
$documents = $documents->sortBy('size');
$size = 0;
$maxSize = MAX_EMAIL_DOCUMENTS_SIZE * 1000;
foreach($documents as $document){
$size += $document->size;
if($size > $maxSize)break;
$documentStrings[] = array(
'name' => $document->name,
'data' => $document->getRaw(),
@ -92,7 +92,7 @@ class ContactMailer extends Mailer
$sent = true;
}
}
$account->loadLocalizationSettings();
if ($sent === true) {
@ -110,7 +110,7 @@ class ContactMailer extends Mailer
{
$client = $invoice->client;
$account = $invoice->account;
if (Auth::check()) {
$user = Auth::user();
} else {
@ -121,13 +121,13 @@ class ContactMailer extends Mailer
}
if (!$user->email || !$user->registered) {
return trans('texts.email_errors.user_unregistered');
return trans('texts.email_error_user_unregistered');
} elseif (!$user->confirmed) {
return trans('texts.email_errors.user_unconfirmed');
return trans('texts.email_error_user_unconfirmed');
} elseif (!$invitation->contact->email) {
return trans('texts.email_errors.invalid_contact_email');
return trans('texts.email_error_invalid_contact_email');
} elseif ($invitation->contact->trashed()) {
return trans('texts.email_errors.inactive_contact');
return trans('texts.email_error_inactive_contact');
}
$variables = [
@ -136,7 +136,7 @@ class ContactMailer extends Mailer
'invitation' => $invitation,
'amount' => $invoice->getRequestedAmount()
];
if (empty($invitation->contact->password) && $account->hasFeature(FEATURE_CLIENT_PORTAL_PASSWORD) && $account->enable_portal_password && $account->send_portal_password) {
// The contact needs a password
$variables['password'] = $password = $this->generatePassword();
@ -164,7 +164,7 @@ class ContactMailer extends Mailer
$subject = $this->templateService->processVariables($subject, $variables);
$fromEmail = $user->email;
$view = $account->getTemplateView(ENTITY_INVOICE);
$response = $this->sendTo($invitation->contact->email, $fromEmail, $account->getDisplayName(), $subject, $view, $data);
if ($response === true) {
@ -173,7 +173,7 @@ class ContactMailer extends Mailer
return $response;
}
}
protected function generatePassword($length = 9)
{
$sets = array(
@ -192,7 +192,7 @@ class ContactMailer extends Mailer
for($i = 0; $i < $length - count($sets); $i++)
$password .= $all[array_rand($all)];
$password = str_shuffle($password);
return $password;
}
@ -256,7 +256,7 @@ class ContactMailer extends Mailer
{
$view = 'license_confirmation';
$subject = trans('texts.payment_subject');
if ($productId == PRODUCT_ONE_CLICK_INSTALL) {
$license = "Softaculous install license: $license";
} elseif ($productId == PRODUCT_INVOICE_DESIGNS) {
@ -264,13 +264,13 @@ class ContactMailer extends Mailer
} elseif ($productId == PRODUCT_WHITE_LABEL) {
$license = "White label license: $license";
}
$data = [
'client' => $name,
'amount' => Utils::formatMoney($amount, DEFAULT_CURRENCY, DEFAULT_COUNTRY),
'license' => $license
];
$this->sendTo($email, CONTACT_EMAIL, CONTACT_NAME, $subject, $view, $data);
}
}

View File

@ -28,7 +28,7 @@ class AccountRepository
{
$company = new Company();
$company->save();
$account = new Account();
$account->ip = Request::getClientIp();
$account->account_key = str_random(RANDOM_KEY_LENGTH);
@ -87,7 +87,7 @@ class AccountRepository
private function getAccountSearchData($user)
{
$account = $user->account;
$data = [
'clients' => [],
'contacts' => [],
@ -102,7 +102,7 @@ class AccountRepository
if ($account->custom_client_label2) {
$data[$account->custom_client_label2] = [];
}
if ($user->hasPermission('view_all')) {
$clients = Client::scope()
->with('contacts', 'invoices')
@ -114,7 +114,7 @@ class AccountRepository
$query->where('user_id', '=', $user->id);
}])->get();
}
foreach ($clients as $client) {
if ($client->name) {
$data['clients'][] = [
@ -122,20 +122,20 @@ class AccountRepository
'tokens' => $client->name,
'url' => $client->present()->url,
];
}
}
if ($client->custom_value1) {
$data[$account->custom_client_label1][] = [
'value' => "{$client->custom_value1}: " . $client->getDisplayName(),
'tokens' => $client->custom_value1,
'url' => $client->present()->url,
'url' => $client->present()->url,
];
}
}
if ($client->custom_value2) {
$data[$account->custom_client_label2][] = [
'value' => "{$client->custom_value2}: " . $client->getDisplayName(),
'tokens' => $client->custom_value2,
'url' => $client->present()->url,
'url' => $client->present()->url,
];
}
@ -242,9 +242,9 @@ class AccountRepository
if ($credit < 0) {
$credit = 0;
}
$plan_cost = Account::$plan_prices[$plan][$term];
$account = $this->getNinjaAccount();
$lastInvoice = Invoice::withTrashed()->whereAccountId($account->id)->orderBy('public_id', 'DESC')->first();
$publicId = $lastInvoice ? ($lastInvoice->public_id + 1) : 1;
@ -266,28 +266,28 @@ class AccountRepository
$credit_item->product_key = trans('texts.plan_credit_product');
$invoice->invoice_items()->save($credit_item);
}
$item = InvoiceItem::createNew($invoice);
$item->qty = 1;
$item->cost = $plan_cost;
$item->notes = trans("texts.{$plan}_plan_{$term}_description");
// Don't change this without updating the regex in PaymentService->createPayment()
$item->product_key = 'Plan - '.ucfirst($plan).' ('.ucfirst($term).')';
$invoice->invoice_items()->save($item);
if ($pending_monthly) {
$term_end = $term == PLAN_MONTHLY ? date_create('+1 month') : date_create('+1 year');
$pending_monthly_item = InvoiceItem::createNew($invoice);
$item->qty = 1;
$pending_monthly_item->cost = 0;
$pending_monthly_item->notes = trans("texts.plan_pending_monthly", array('date', Utils::dateToString($term_end)));
// Don't change this without updating the text in PaymentService->createPayment()
$pending_monthly_item->product_key = 'Pending Monthly';
$invoice->invoice_items()->save($pending_monthly_item);
}
$invitation = new Invitation();
$invitation->account_id = $account->id;
@ -328,12 +328,14 @@ class AccountRepository
$user->notify_paid = true;
$account->users()->save($user);
$accountGateway = new AccountGateway();
$accountGateway->user_id = $user->id;
$accountGateway->gateway_id = NINJA_GATEWAY_ID;
$accountGateway->public_id = 1;
$accountGateway->setConfig(json_decode(env(NINJA_GATEWAY_CONFIG)));
$account->account_gateways()->save($accountGateway);
if ($config = env(NINJA_GATEWAY_CONFIG)) {
$accountGateway = new AccountGateway();
$accountGateway->user_id = $user->id;
$accountGateway->gateway_id = NINJA_GATEWAY_ID;
$accountGateway->public_id = 1;
$accountGateway->setConfig(json_decode($config));
$account->account_gateways()->save($accountGateway);
}
}
return $account;
@ -356,11 +358,11 @@ class AccountRepository
$client->user_id = $ninjaUser->id;
$client->currency_id = 1;
}
foreach (['name', 'address1', 'address2', 'city', 'state', 'postal_code', 'country_id', 'work_phone', 'language_id', 'vat_number'] as $field) {
$client->$field = $account->$field;
}
$client->save();
if ($clientExists) {
@ -372,7 +374,7 @@ class AccountRepository
$contact->public_id = $account->id;
$contact->is_primary = true;
}
$user = $account->getPrimaryUser();
foreach (['first_name', 'last_name', 'email', 'phone'] as $field) {
$contact->$field = $user->$field;
@ -513,7 +515,7 @@ class AccountRepository
if ($with) {
$users->with($with);
}
return $users->get();
}
@ -565,7 +567,7 @@ class AccountRepository
$record->save();
$users = $this->getUserAccounts($record);
// Pick the primary user
foreach ($users as $user) {
if (!$user->public_id) {
@ -573,16 +575,16 @@ class AccountRepository
if(empty($primaryUser)) {
$useAsPrimary = true;
}
$planDetails = $user->account->getPlanDetails(false, false);
$planLevel = 0;
if ($planDetails) {
$planLevel = 1;
if ($planDetails['plan'] == PLAN_ENTERPRISE) {
$planLevel = 2;
}
if (!$useAsPrimary && (
$planLevel > $primaryUserPlanLevel
|| ($planLevel == $primaryUserPlanLevel && $planDetails['expires'] > $primaryUserPlanExpires)
@ -590,7 +592,7 @@ class AccountRepository
$useAsPrimary = true;
}
}
if ($useAsPrimary) {
$primaryUser = $user;
$primaryUserPlanLevel = $planLevel;
@ -600,14 +602,14 @@ class AccountRepository
}
}
}
// Merge other companies into the primary user's company
if (!empty($primaryUser)) {
foreach ($users as $user) {
if ($user == $primaryUser || $user->public_id) {
continue;
}
if ($user->account->company_id != $primaryUser->account->company_id) {
foreach ($user->account->company->accounts as $account) {
$account->company_id = $primaryUser->account->company_id;
@ -636,9 +638,9 @@ class AccountRepository
$userAccount->removeUserId($userId);
$userAccount->save();
}
$user = User::whereId($userId)->first();
if (!$user->public_id && $user->account->company->accounts->count() > 1) {
$company = Company::create();
$company->save();
@ -660,7 +662,7 @@ class AccountRepository
->withTrashed()
->first();
} while ($match);
return $code;
}
@ -668,7 +670,7 @@ class AccountRepository
{
$name = trim($name) ?: 'TOKEN';
$users = $this->findUsers($user);
foreach ($users as $user) {
if ($token = AccountToken::whereUserId($user->id)->whereName($name)->first()) {
continue;

View File

@ -34,14 +34,10 @@ class BankAccountService extends BaseService
return $this->bankAccountRepo;
}
public function loadBankAccounts($bankId, $username, $password, $includeTransactions = true)
private function getExpenses($bankId = null)
{
if (! $bankId || ! $username || ! $password) {
return false;
}
$expenses = Expense::scope()
->whereBankId($bankId)
->bankId($bankId)
->where('transaction_id', '!=', '')
->withTrashed()
->get(['transaction_id'])
@ -50,6 +46,16 @@ class BankAccountService extends BaseService
return $val['transaction_id'];
}, $expenses));
return $expenses;
}
public function loadBankAccounts($bankId, $username, $password, $includeTransactions = true)
{
if (! $bankId || ! $username || ! $password) {
return false;
}
$expenses = $this->getExpenses();
$vendorMap = $this->createVendorMap();
$bankAccounts = BankSubaccount::scope()
->whereHas('bank_account', function ($query) use ($bankId) {
@ -106,44 +112,60 @@ class BankAccountService extends BaseService
$obj->balance = Utils::formatMoney($account->ledgerBalance, CURRENCY_DOLLAR);
if ($includeTransactions) {
$ofxParser = new \OfxParser\Parser();
$ofx = $ofxParser->loadFromString($account->response);
$obj->start_date = $ofx->BankAccount->Statement->startDate;
$obj->end_date = $ofx->BankAccount->Statement->endDate;
$obj->transactions = [];
foreach ($ofx->BankAccount->Statement->transactions as $transaction) {
// ensure transactions aren't imported as expenses twice
if (isset($expenses[$transaction->uniqueId])) {
continue;
}
if ($transaction->amount >= 0) {
continue;
}
// if vendor has already been imported use current name
$vendorName = trim(substr($transaction->name, 0, 20));
$key = strtolower($vendorName);
$vendor = isset($vendorMap[$key]) ? $vendorMap[$key] : null;
$transaction->vendor = $vendor ? $vendor->name : $this->prepareValue($vendorName);
$transaction->info = $this->prepareValue(substr($transaction->name, 20));
$transaction->memo = $this->prepareValue($transaction->memo);
$transaction->date = \Auth::user()->account->formatDate($transaction->date);
$transaction->amount *= -1;
$obj->transactions[] = $transaction;
}
$obj = $this->parseTransactions($obj, $account->response, $expenses, $vendorMap);
}
return $obj;
}
private function parseTransactions($account, $data, $expenses, $vendorMap)
{
$ofxParser = new \OfxParser\Parser();
$ofx = $ofxParser->loadFromString($data);
$account->start_date = $ofx->BankAccount->Statement->startDate;
$account->end_date = $ofx->BankAccount->Statement->endDate;
$account->transactions = [];
foreach ($ofx->BankAccount->Statement->transactions as $transaction) {
// ensure transactions aren't imported as expenses twice
if (isset($expenses[$transaction->uniqueId])) {
continue;
}
if ($transaction->amount >= 0) {
continue;
}
// if vendor has already been imported use current name
$vendorName = trim(substr($transaction->name, 0, 20));
$key = strtolower($vendorName);
$vendor = isset($vendorMap[$key]) ? $vendorMap[$key] : null;
$transaction->vendor = $vendor ? $vendor->name : $this->prepareValue($vendorName);
$transaction->info = $this->prepareValue(substr($transaction->name, 20));
$transaction->memo = $this->prepareValue($transaction->memo);
$transaction->date = \Auth::user()->account->formatDate($transaction->date);
$transaction->amount *= -1;
$account->transactions[] = $transaction;
}
return $account;
}
private function prepareValue($value)
{
return ucwords(strtolower(trim($value)));
}
public function parseOFX($data)
{
$account = new stdClass;
$expenses = $this->getExpenses();
$vendorMap = $this->createVendorMap();
return $this->parseTransactions($account, $data, $expenses, $vendorMap);
}
private function createVendorMap()
{
$vendorMap = [];
@ -158,7 +180,7 @@ class BankAccountService extends BaseService
return $vendorMap;
}
public function importExpenses($bankId, $input)
public function importExpenses($bankId = 0, $input)
{
$vendorMap = $this->createVendorMap();
$countVendors = 0;
@ -178,7 +200,7 @@ class BankAccountService extends BaseService
$field => $info,
'name' => $vendorName,
'transaction_name' => $transaction['vendor_orig'],
'vendorcontact' => [],
'vendor_contact' => [],
]);
$vendorMap[$key] = $vendor;
$vendorMap[$transaction['vendor_orig']] = $vendor;

View File

@ -74,6 +74,8 @@
"barracudanetworks/archivestream-php": "^1.0",
"omnipay/braintree": "~2.0@dev",
"gatepay/FedACHdir": "dev-master@dev",
"websight/l5-google-cloud-storage": "^1.0",
"fzaninotto/faker": "^1.5"
"wepay/php-sdk": "^0.2",
"collizo4sky/omnipay-wepay": "dev-additional-calls"
},
@ -82,7 +84,6 @@
"phpspec/phpspec": "~2.1",
"codeception/codeception": "*",
"codeception/c3": "~2.0",
"fzaninotto/faker": "^1.5",
"symfony/dom-crawler": "~3.0"
},
"autoload": {

247
composer.lock generated
View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "b2471aea1af5ef67a1379ad95b5138f7",
"content-hash": "df30a311df0341933d4ff2c3aa5974a6",
"hash": "392a09a61498eddc166665b7cdda1dde",
"content-hash": "1f86d83e1ef0bce86debfb45120e6db8",
"packages": [
{
"name": "agmscode/omnipay-agms",
@ -505,7 +505,7 @@
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/f7b31bdbdceaaea930c71df20e4180b0b7172b4a",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/35ebf3a2ba9443e11fbdb9066cc363ec7b2245e4",
"reference": "e97ed532f09e290b91ff7713b785ed7ab11d0812",
"shasum": ""
},
@ -746,7 +746,7 @@
"laravel"
],
"abandoned": "OpenSkill/Datatable",
"time": "2015-11-23 21:33:41"
"time": "2015-04-29 07:00:36"
},
{
"name": "classpreloader/classpreloader",
@ -2011,6 +2011,54 @@
],
"time": "2015-01-16 08:41:13"
},
{
"name": "fzaninotto/faker",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/fzaninotto/Faker.git",
"reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fzaninotto/Faker/zipball/44f9a286a04b80c76a4e5fb7aad8bb539b920123",
"reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123",
"shasum": ""
},
"require": {
"php": "^5.3.3|^7.0"
},
"require-dev": {
"ext-intl": "*",
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "~1.5"
},
"type": "library",
"extra": {
"branch-alias": []
},
"autoload": {
"psr-4": {
"Faker\\": "src/Faker/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "François Zaninotto"
}
],
"description": "Faker is a PHP library that generates fake data for you.",
"keywords": [
"data",
"faker",
"fixtures"
],
"time": "2016-04-29 12:21:54"
},
{
"name": "gatepay/FedACHdir",
"version": "dev-master",
@ -2020,7 +2068,50 @@
"reference": "origin/master"
},
"type": "library",
"time": "2016-04-29 12:01:22"
"time": "2016-05-09 12:00:35"
},
{
"name": "google/apiclient",
"version": "1.1.7",
"source": {
"type": "git",
"url": "https://github.com/google/google-api-php-client.git",
"reference": "400f250a30ae1dd4c4a0a4f750fe973fc70e6311"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/google/google-api-php-client/zipball/400f250a30ae1dd4c4a0a4f750fe973fc70e6311",
"reference": "400f250a30ae1dd4c4a0a4f750fe973fc70e6311",
"shasum": ""
},
"require": {
"php": ">=5.2.1"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"squizlabs/php_codesniffer": "~2.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"description": "Client library for Google APIs",
"homepage": "http://developers.google.com/api-client-library/php",
"keywords": [
"google"
],
"time": "2016-02-02 18:50:42"
},
{
"name": "guzzle/guzzle",
@ -4345,7 +4436,7 @@
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/omnipay-braintree/zipball/e4b4027c6a9e6443833490d0d51fd530f0a19f62",
"url": "https://api.github.com/repos/thephpleague/omnipay-braintree/zipball/a0c8b2152a8a5b7e14572b71d860f2ec26f20a87",
"reference": "e4b4027c6a9e6443833490d0d51fd530f0a19f62",
"shasum": ""
},
@ -5790,7 +5881,7 @@
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/omnipay-stripe/zipball/0ea7a647ee01e29c152814e11c2ea6307e5b0db9",
"url": "https://api.github.com/repos/thephpleague/omnipay-stripe/zipball/88badbda83f1c16e2d94c41a869be37d9d9fef5a",
"reference": "0ea7a647ee01e29c152814e11c2ea6307e5b0db9",
"shasum": ""
},
@ -6610,6 +6701,53 @@
],
"time": "2015-08-12 08:09:37"
},
{
"name": "superbalist/flysystem-google-storage",
"version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/Superbalist/flysystem-google-storage.git",
"reference": "441a8529680986a2d2063a268ee2918f51db1b79"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Superbalist/flysystem-google-storage/zipball/441a8529680986a2d2063a268ee2918f51db1b79",
"reference": "441a8529680986a2d2063a268ee2918f51db1b79",
"shasum": ""
},
"require": {
"google/apiclient": "~1.1|^2.0.0@RC",
"league/flysystem": "~1.0",
"php": ">=5.4.0"
},
"require-dev": {
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Superbalist\\Flysystem\\GoogleStorage\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Superbalist.com a division of Takealot Online (Pty) Ltd",
"email": "info@superbalist.com"
}
],
"description": "Flysystem adapter for Google Cloud Storage",
"time": "2016-04-12 14:56:22"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.1",
@ -8057,6 +8195,49 @@
],
"time": "2016-02-25 10:29:59"
},
{
"name": "websight/l5-google-cloud-storage",
"version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/websightgmbh/l5-google-cloud-storage.git",
"reference": "c1cac9985dfce60010234c9dca127f3543d2d594"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/websightgmbh/l5-google-cloud-storage/zipball/c1cac9985dfce60010234c9dca127f3543d2d594",
"reference": "c1cac9985dfce60010234c9dca127f3543d2d594",
"shasum": ""
},
"require": {
"illuminate/support": "~5.0.17|5.1.*|5.2.*",
"superbalist/flysystem-google-storage": "^1.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Websight\\GcsProvider\\": "src/Websight/GcsProvider/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Cedric Ziel",
"email": "ziel@websight.de"
}
],
"description": "Laravel 5 Flysystem Google Cloud Storage Service Provider",
"homepage": "https://github.com/websightgmbh/l5-google-cloud-storage",
"keywords": [
"Flysystem",
"laravel",
"laravel5"
],
"time": "2016-03-04 11:57:00"
},
{
"name": "wepay/php-sdk",
"version": "0.2.7",
@ -8908,58 +9089,6 @@
],
"time": "2015-12-31 15:58:49"
},
{
"name": "fzaninotto/faker",
"version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/fzaninotto/Faker.git",
"reference": "d0190b156bcca848d401fb80f31f504f37141c8d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d0190b156bcca848d401fb80f31f504f37141c8d",
"reference": "d0190b156bcca848d401fb80f31f504f37141c8d",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "~1.5"
},
"suggest": {
"ext-intl": "*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.5.x-dev"
}
},
"autoload": {
"psr-4": {
"Faker\\": "src/Faker/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "François Zaninotto"
}
],
"description": "Faker is a PHP library that generates fake data for you.",
"keywords": [
"data",
"faker",
"fixtures"
],
"time": "2015-05-29 06:29:14"
},
{
"name": "phpspec/php-diff",
"version": "v1.0.2",

View File

@ -153,6 +153,7 @@ return [
'Laravel\Socialite\SocialiteServiceProvider',
'Jlapp\Swaggervel\SwaggervelServiceProvider',
'Maatwebsite\Excel\ExcelServiceProvider',
Websight\GcsProvider\CloudStorageServiceProvider::class,
/*
* Application Service Providers...
@ -211,6 +212,7 @@ return [
'Schema' => 'Illuminate\Support\Facades\Schema',
'Seeder' => 'Illuminate\Database\Seeder',
'Session' => 'Illuminate\Support\Facades\Session',
'Storage' => 'Illuminate\Support\Facades\Storage',
'Str' => 'Illuminate\Support\Str',
'URL' => 'Illuminate\Support\Facades\URL',
'Validator' => 'Illuminate\Support\Facades\Validator',

View File

@ -47,12 +47,12 @@ return [
'driver' => 'local',
'root' => storage_path().'/app',
],
'logos' => [
'driver' => 'local',
'root' => env('LOGO_PATH', public_path().'/logo'),
],
'documents' => [
'driver' => 'local',
'root' => storage_path().'/documents',
@ -76,6 +76,13 @@ return [
'url_type' => env('RACKSPACE_URL_TYPE', 'publicURL')
],
'gcs' => [
'driver' => 'gcs',
'service_account' => env('GCS_USERNAME', ''),
'service_account_certificate' => storage_path() . '/credentials.p12',
'service_account_certificate_password' => env('GCS_PASSWORD', ''),
'bucket' => env('GCS_BUCKET', 'cloud-storage-bucket'),
],
],
];

View File

@ -0,0 +1,53 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddSwapCurrencySymbolToCurrency extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('currencies', function(Blueprint $table) {
$table->boolean('swap_currency_symbol')->default(false);
});
Schema::table('expenses', function(Blueprint $table) {
$table->string('tax_name1')->nullable();
$table->decimal('tax_rate1', 13, 3);
$table->string('tax_name2')->nullable();
$table->decimal('tax_rate2', 13, 3);
});
Schema::table('account_gateways', function(Blueprint $table) {
$table->boolean('require_cvv')->default(true)->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('currencies', function(Blueprint $table) {
$table->dropColumn('swap_currency_symbol');
});
Schema::table('expenses', function(Blueprint $table) {
$table->dropColumn('tax_name1');
$table->dropColumn('tax_rate1');
$table->dropColumn('tax_name2');
$table->dropColumn('tax_rate2');
});
Schema::table('account_gateways', function(Blueprint $table) {
$table->dropColumn('require_cvv');
});
}
}

View File

@ -58,7 +58,7 @@ class CurrenciesSeeder extends Seeder
['name' => 'Maldivian Rufiyaa', 'code' => 'MVR', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['name' => 'Costa Rican Colón', 'code' => 'CRC', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['name' => 'Pakistani Rupee', 'code' => 'PKR', 'symbol' => 'Rs ', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['name' => 'Polish Zloty', 'code' => 'PLN', 'symbol' => 'zł', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => ','],
['name' => 'Polish Zloty', 'code' => 'PLN', 'symbol' => 'zł', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
];
foreach ($currencies as $currency) {

View File

@ -70,6 +70,7 @@ We're using the [Git-Flow](http://nvie.com/posts/a-successful-git-branching-mode
* [patricktalmadge/bootstrapper](https://github.com/patricktalmadge/bootstrapper) - Laravel Twitter Bootstrap Bundle
* [danielfarrell/bootstrap-combobox](https://github.com/danielfarrell/bootstrap-combobox) - A combobox plugin
* [eternicode/bootstrap-datepicker](https://github.com/eternicode/bootstrap-datepicker) - A datepicker for @twitter bootstrap
* [xdan/datetimepicker](https://github.com/xdan/datetimepicker) - jQuery Plugin Date and Time Picker
* [twitter/typeahead.js](https://github.com/twitter/typeahead.js) - a fast and fully-featured autocomplete library
* [krisk/Fuse](https://github.com/krisk/Fuse) - Lightweight fuzzy-search, in JavaScript
* [knockout/knockout](https://github.com/knockout/knockout) - Knockout makes it easier to create rich, responsive UIs with JavaScript

View File

@ -517,8 +517,8 @@ $LANG = array(
'duplicate_post' => 'Varování: předchozí stránka byla odeslána dvakrát. Druhé odeslání bylo ignorováno.',
'view_documentation' => 'Zobrazit dokumentaci',
'app_title' => 'Open source online fakrurace',
'app_description' => 'Invoice Ninja je bezplatné open-source řešení pro fakturaci a účtování zákazníkům.
S Invoice Ninja, můžete jednoduše vytvářet a posílat hezké faktury z jakéhokoli zařízení, které přístup na web. Vaši klienti si mohou faktury
'app_description' => 'Invoice Ninja je bezplatné open-source řešení pro fakturaci a účtování zákazníkům.
S Invoice Ninja, můžete jednoduše vytvářet a posílat hezké faktury z jakéhokoli zařízení, které přístup na web. Vaši klienti si mohou faktury
vytisknout, stáhnout jako PDF nebo Vám rovnou online zaplatit.',
'rows' => 'řádky',
'www' => 'www',
@ -913,7 +913,7 @@ $LANG = array(
'archive_payment_term' => 'Archivovat platební podmínky',
'recurring_due_dates' => 'Datumy splatnosti pravidelných faktur',
'recurring_due_date_help' => '<p>Automaticky nastavit datum splatnosti na fakturách</p>
<p>U faktury s měsíčním nebo ročním cyklem bude nastavena měsíční splatnost v dalším měsíci. Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month.
<p>U faktury s měsíčním nebo ročním cyklem bude nastavena měsíční splatnost v dalším měsíci. Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month.
Faktury se splatností k 29. nebo 30 v měsících, které tyto dny nemají se splatnost nastaví k poslednímu dni v měsíci.</p>
<p>Faktury s týdenním cyklem mají jako výchozí týdenní splatnost.</p>
<p>Například:</p>
@ -995,40 +995,26 @@ $LANG = array(
'overdue' => 'Po termínu',
'white_label_text' => 'Objednejte si white label licenci na JEDEN ROK $'.WHITE_LABEL_PRICE.' pro odstranění značky Invoice Ninja z klientského portálu a stránek podpory.',
'user_email_footer' => 'Pro úpravu emailových notifikací prosím navštivte '.SITE_URL.'/settings/notifications',
'reset_password_footer' => 'Pokud jste nepožádali o resetování hesla, prosím kontaktujte naši podporu na: '.CONTACT_EMAIL,
'limit_users' => 'Omlouváme se, to už přesáhlo limit '.MAX_NUM_USERS.' uživatelů',
'more_designs_self_host_header' => 'Získejte 6 dalších vzhledů faktur jen za $'.INVOICE_DESIGNS_PRICE,
'old_browser' => 'Prosím použijte <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">novější prohlížeč</a>',
'white_label_custom_css' => ':link za $'.WHITE_LABEL_PRICE.' získáte volitelné úpravy a pomůžete podpoře našeho projektu.',
'bank_accounts_help' => 'Připojte si bankovní účet pro automatický import nákladů a tvorbu dodavatelů. K dispozici pro American Express <a href="'.OFX_HOME_URL.'" target="_blank">přes 400 amerických bank.</a>',
'security' => [
'too_many_attempts' => 'Mnoho přístupů. Zkuste to prosím za několik minut.',
'wrong_credentials' => 'Neplatný email nebo heslo.',
'confirmation' => 'Váš účet byl potvrzen!',
'wrong_confirmation' => 'Chybný potvrzovací kód.',
'password_forgot' => 'Informace týkající se resetování hesla byla odeslána na Váš email.',
'password_reset' => 'Heslo bylo změněno úspěšně.',
'wrong_password_reset' => 'Neplatné heslo. Zkuste znovu',
],
'pro_plan' => [
'remove_logo' => ':link pro odstranění loga Invoice Ninja připojením se k profi plánu',
'remove_logo_link' => 'Klikněte zde',
],
'invitation_status' => [
'sent' => 'Email odeslán',
'opened' => 'Email otevřen',
'viewed' => 'Faktura zobrazena',
],
'email_errors' => [
'inactive_client' => 'Emaily nemohou být odeslány neaktivním klientům',
'inactive_contact' => 'Emaily nemohou být odeslány neaktivním kontaktům',
'inactive_invoice' => 'Emaily nemohou být odeslány k neaktivním fakturám',
'user_unregistered' => 'Pro odesílání emailů si prosím zaregistrujte účet',
'user_unconfirmed' => 'Pro posílání emailů potvrďte prosím Váš účet.',
'invalid_contact_email' => 'Neplatný kontaktní email',
],
'white_label_text' => 'Objednejte si white label licenci na JEDEN ROK $:price pro odstranění značky Invoice Ninja z klientského portálu a stránek podpory.',
'user_email_footer' => 'Pro úpravu emailových notifikací prosím navštivte :link',
'reset_password_footer' => 'Pokud jste nepožádali o resetování hesla, prosím kontaktujte naši podporu na: :email',
'limit_users' => 'Omlouváme se, to už přesáhlo limit :limit uživatelů',
'more_designs_self_host_header' => 'Získejte 6 dalších vzhledů faktur jen za $:price',
'old_browser' => 'Prosím použijte <a href=":link" target="_blank">novější prohlížeč</a>',
'white_label_custom_css' => ':link za $:price získáte volitelné úpravy a pomůžete podpoře našeho projektu.',
'bank_accounts_help' => 'Připojte si bankovní účet pro automatický import nákladů a tvorbu dodavatelů. K dispozici pro American Express <a href=":link" target="_blank">přes 400 amerických bank.</a>',
'pro_plan_remove_logo' => ':link pro odstranění loga Invoice Ninja připojením se k profi plánu',
'pro_plan_remove_logo_link' => 'Klikněte zde',
'invitation_status_sent' => 'Email odeslán',
'invitation_status_opened' => 'Email otevřen',
'invitation_status_viewed' => 'Faktura zobrazena',
'email_error_inactive_client' => 'Emaily nemohou být odeslány neaktivním klientům',
'email_error_inactive_contact' => 'Emaily nemohou být odeslány neaktivním kontaktům',
'email_error_inactive_invoice' => 'Emaily nemohou být odeslány k neaktivním fakturám',
'email_error_user_unregistered' => 'Pro odesílání emailů si prosím zaregistrujte účet',
'email_error_user_unconfirmed' => 'Pro posílání emailů potvrďte prosím Váš účet.',
'email_error_invalid_contact_email' => 'Neplatný kontaktní email',
'navigation' => 'Navigace',
'list_invoices' => 'Seznam faktur',
@ -1059,14 +1045,14 @@ $LANG = array(
'enable_portal_password_help'=>'Umožní Vám nastavit heslo pro každý kontakt. Pokud heslo nastavíte, tak kontakt ho bude pro zobrazení faktury vždy použít.',
'send_portal_password'=>'Generovat heslo automaticky',
'send_portal_password_help'=>'Pokud heslo není nastaveno, bude vygenerováno a zasláno spolu s první fakturou.',
'expired' => 'Expirované',
'invalid_card_number' => 'Číslo platební karty není platné.',
'invalid_expiry' => 'Datum expirace není platné.',
'invalid_cvv' => 'CVV není platné.',
'cost' => 'Cena',
'create_invoice_for_sample' => 'Poznámka: vytvořte si první fakturu a zde si ji prohlédněte.',
// User Permissions
'owner' => 'Vlastník',
'administrator' => 'Administrátor',
@ -1084,8 +1070,8 @@ $LANG = array(
'create_all_help' => 'Povolit uživatelům měnit záznamy',
'view_all_help' => 'Povolit uživatelům zobrazit záznamy, které nevytvořili',
'edit_all_help' => 'Povolit uživatelům měnit záznamy, které nevytvořili',
'view_payment' => 'Zobrazit platbu',
'view_payment' => 'Zobrazit platbu',
'january' => 'Leden',
'february' => 'Únor',
'march' => 'Březen',
@ -1098,7 +1084,7 @@ $LANG = array(
'october' => 'Říjen',
'november' => 'Listopad',
'december' => 'Prosinec',
// Documents
'documents_header' => 'Documents:',
'email_documents_header' => 'Documents:',
@ -1111,17 +1097,15 @@ $LANG = array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1130,11 +1114,11 @@ $LANG = array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1164,9 +1148,9 @@ $LANG = array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1186,7 +1170,7 @@ $LANG = array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
return $LANG;

View File

@ -262,7 +262,7 @@ return array(
'email_salutation' => 'Kære :name,',
'email_signature' => 'Med venlig hilsen,',
'email_from' => 'Invoice Ninja Teamet',
'user_email_footer' => 'For at justere varslings indstillingene besøg venligst'.SITE_URL.'/settings/notifications',
'user_email_footer' => 'For at justere varslings indstillingene besøg venligst :link',
'invoice_link_message' => 'Hvis du vil se din klient faktura klik på linket under:',
'notification_invoice_paid_subject' => 'Faktura :invoice betalt af :client',
'notification_invoice_sent_subject' => 'Faktura :invoice sendt til :client',
@ -271,7 +271,7 @@ return array(
'notification_invoice_sent' => 'En e-mail er blevet sendt til :client med faktura :invoice pålydende :amount.',
'notification_invoice_viewed' => ':client har set faktura :invoice pålydende :amount.',
'reset_password' => 'Du kan nulstille din adgangskode ved at besøge følgende link:',
'reset_password_footer' => 'Hvis du ikke bad om at få nulstillet din adgangskode kontakt venligst kundeservice: '.CONTACT_EMAIL,
'reset_password_footer' => 'Hvis du ikke bad om at få nulstillet din adgangskode kontakt venligst kundeservice: :email',
// Payment page
'secure_payment' => 'Sikker betaling',
@ -280,22 +280,9 @@ return array(
'expiration_year' => 'Udløbsår',
'cvv' => 'Kontrolcifre',
// Security alerts
'security' => [
'too_many_attempts' => 'For mange forsøg. Prøv igen om nogen få minutter.',
'wrong_credentials' => 'Forkert e-mail eller adgangskode.',
'confirmation' => 'Din konto har blevet bekræftet!',
'wrong_confirmation' => 'Forkert bekræftelseskode.',
'password_forgot' => 'Informationen om nulstilling af din adgangskode er blevet sendt til din e-mail.',
'password_reset' => 'Adgangskode ændret',
'wrong_password_reset' => 'Ugyldig adgangskode. Prøv på ny',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link for at fjerne Invoice Ninja-logoet, opgrader til en Pro Plan',
'remove_logo_link' => 'Klik her',
],
'pro_plan_remove_logo' => ':link for at fjerne Invoice Ninja-logoet, opgrader til en Pro Plan',
'pro_plan_remove_logo_link' => 'Klik her',
'logout' => 'Log ud',
'sign_up_to_save' => 'Registrer dig for at gemme dit arbejde',
@ -419,7 +406,7 @@ return array(
'active' => 'Aktiv',
'pending' => 'Afventer',
'deleted_user' => 'Bruger slettet',
'limit_users' => 'Desværre, dette vil overstige grænsen på '.MAX_NUM_USERS.' brugere',
'limit_users' => 'Desværre, dette vil overstige grænsen på :limit brugere',
'confirm_email_invoice' => 'Er du sikker på at du vil sende en e-mail med denne faktura?',
'confirm_email_quote' => 'Er du sikker på du ville sende en e-mail med dette tilbud?',
@ -453,7 +440,7 @@ return array(
'more_designs_title' => 'Yderligere faktura designs',
'more_designs_cloud_header' => 'Skift til Pro for flere faktura designs',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Få 6 flere faktura designs for kun $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Få 6 flere faktura designs for kun $:price',
'more_designs_self_host_text' => '',
'buy' => 'Køb',
'bought_designs' => 'Yderligere faktura designs tilføjet',
@ -704,7 +691,7 @@ return array(
'email_error' => 'Der opstod et problem ved afsendelse af e-mailen',
'created_by_recurring' => 'Oprettet af gentaget faktura nr.: :invoice',
'confirm_recurring_timing' => 'Bemærk: e-mail bliver sendt i starten af timen.',
'old_browser' => 'Din browser er registreret som værende af ældre dato og den vil ikke kunne bruges, skift til en <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">nyere version browser</a>',
'old_browser' => 'Din browser er registreret som værende af ældre dato og den vil ikke kunne bruges, skift til en <a href=":link" target="_blank">nyere version browser</a>',
'payment_terms_help' => 'Sætter standard fakturaens forfalds dato',
'unlink_account' => 'Fjern sammenkædning af konti',
'unlink' => 'Fjern sammenkædning',
@ -800,11 +787,10 @@ return array(
'invoice_quote_number' => 'Invoice and Quote Numbers',
'invoice_charges' => 'Invoice Charges',
'invitation_status' => [
'sent' => 'Email Sent',
'opened' => 'Email Openend',
'viewed' => 'Invoice Viewed',
],
'invitation_status_sent' => 'Email Sent',
'invitation_status_opened' => 'Email Openend',
'invitation_status_viewed' => 'Invoice Viewed',
'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.',
'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice',
'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.',
@ -926,14 +912,12 @@ return array(
'no_mapper' => 'No valid mapping for file',
'invalid_csv_header' => 'Invalid CSV Header',
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'client_portal' => 'Client Portal',
'admin' => 'Admin',
@ -987,7 +971,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1094,7 +1078,7 @@ return array(
'archived_bank_account' => 'Successfully archived bank account',
'created_bank_account' => 'Successfully created bank account',
'validate_bank_account' => 'Validate Bank Account',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Username',
@ -1129,7 +1113,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1160,14 +1144,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1185,8 +1169,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1212,17 +1196,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1231,11 +1213,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1265,9 +1247,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1287,5 +1269,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
);

View File

@ -262,7 +262,7 @@ return array(
'email_salutation' => 'Sehr geehrte/r :name,',
'email_signature' => 'Mit freundlichen Grüßen,',
'email_from' => 'Das InvoiceNinja Team',
'user_email_footer' => 'Um deine E-Mail-Benachrichtigungen anzupassen besuche bitte '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Um deine E-Mail-Benachrichtigungen anzupassen besuche bitte :link',
'invoice_link_message' => 'Um deine Kundenrechnung anzuschauen, klicke auf den folgenden Link:',
'notification_invoice_paid_subject' => 'Die Rechnung :invoice wurde von :client bezahlt.',
'notification_invoice_sent_subject' => 'Die Rechnung :invoice wurde an :client versendet.',
@ -271,7 +271,7 @@ return array(
'notification_invoice_sent' => 'Dem Kunden :client wurde die Rechnung :invoice über :amount versendet.',
'notification_invoice_viewed' => 'Der Kunde :client hat sich die Rechnung :invoice über :amount angesehen.',
'reset_password' => 'Du kannst dein Passwort zurücksetzen, indem du auf den folgenden Link klickst:',
'reset_password_footer' => 'Wenn du das Zurücksetzen des Passworts nicht beantragt hast, benachrichtige bitte unseren Support: '.CONTACT_EMAIL,
'reset_password_footer' => 'Wenn du das Zurücksetzen des Passworts nicht beantragt hast, benachrichtige bitte unseren Support: :email',
// Payment page
'secure_payment' => 'Sichere Zahlung',
@ -280,22 +280,9 @@ return array(
'expiration_year' => 'Ablaufjahr',
'cvv' => 'Kartenprüfziffer',
// Security alerts
'security' => array(
'too_many_attempts' => 'Zu viele Versuche. Bitte probiere es in ein paar Minuten erneut.',
'wrong_credentials' => 'Falsche E-Mail-Adresse oder falsches Passwort.',
'confirmation' => 'Dein Konto wurde bestätigt!',
'wrong_confirmation' => 'Falscher Bestätigungscode.',
'password_forgot' => 'Weitere Informationen um das Passwort zurückzusetzen wurden dir per E-Mail zugeschickt.',
'password_reset' => 'Dein Passwort wurde erfolgreich geändert.',
'wrong_password_reset' => 'Ungültiges Passwort. Versuche es erneut',
),
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link, um das InvoiceNinja-Logo zu entfernen, indem du dem Pro Plan beitrittst',
'remove_logo_link' => 'Klicke hier',
],
'pro_plan_remove_logo' => ':link, um das InvoiceNinja-Logo zu entfernen, indem du dem Pro Plan beitrittst',
'pro_plan_remove_logo_link' => 'Klicke hier',
'logout' => 'Ausloggen',
'sign_up_to_save' => 'Melde dich an, um deine Arbeit zu speichern',
@ -419,7 +406,7 @@ return array(
'active' => 'Aktiv',
'pending' => 'Ausstehend',
'deleted_user' => 'Benutzer erfolgreich gelöscht',
'limit_users' => 'Entschuldige, das würde das Limit von '.MAX_NUM_USERS.' Benutzern überschreiten',
'limit_users' => 'Entschuldige, das würde das Limit von :limit Benutzern überschreiten',
'confirm_email_invoice' => 'Bist du sicher, dass du diese Rechnung per E-Mail versenden möchtest?',
'confirm_email_quote' => 'Bist du sicher, dass du dieses Angebot per E-Mail versenden möchtest',
@ -453,7 +440,7 @@ return array(
'more_designs_title' => 'Zusätzliche Rechnungsdesigns',
'more_designs_cloud_header' => 'Werde Pro-Mitglied für zusätzliche Rechnungsdesigns',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Erhalte 6 zusätzliche Rechnungsdesigns für nur $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Erhalte 6 zusätzliche Rechnungsdesigns für nur $:price',
'more_designs_self_host_text' => '',
'buy' => 'Kaufen',
'bought_designs' => 'Die zusätzliche Rechnungsdesigns wurden erfolgreich hinzugefügt',
@ -703,7 +690,7 @@ return array(
'email_error' => 'Es gab ein Problem beim Senden dieses E-Mails.',
'confirm_recurring_timing' => 'Beachten Sie: E-Mails werden zu Beginn der Stunde versendet.',
'old_browser' => 'Bitte verwenden Sie einen <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">neueren Browser</a>',
'old_browser' => 'Bitte verwenden Sie einen <a href=":link" target="_blank">neueren Browser</a>',
'payment_terms_help' => 'Setzt das Standardfälligkeitsdatum',
'unlink_account' => 'Konten trennen',
'unlink' => 'Trennen',
@ -800,11 +787,10 @@ return array(
'invoice_quote_number' => 'Rechnungs- und Angebotsnummern',
'invoice_charges' => 'Rechnungsgebühren',
'invitation_status' => [
'sent' => 'E-Mail versendet',
'opened' => 'E-Mail geöffnet',
'viewed' => 'Rechnung angesehen',
],
'invitation_status_sent' => 'E-Mail versendet',
'invitation_status_opened' => 'E-Mail geöffnet',
'invitation_status_viewed' => 'Rechnung angesehen',
'notification_invoice_bounced' => 'Die Rechnung :invoice an :contact konnte nicht zugestellt werden.',
'notification_invoice_bounced_subject' => 'Rechnung :invoice nicht zugestellt.',
'notification_quote_bounced' => 'Das Angebot :invoice an :contact konnte nicht zugestellt werden.',
@ -927,14 +913,12 @@ return array(
'no_mapper' => 'Kein gültiges Mapping für die Datei',
'invalid_csv_header' => 'Ungültiger CSV Header',
'email_errors' => [
'inactive_client' => 'Emails können nicht zu inaktiven Kunden gesendet werden',
'inactive_contact' => 'Emails können nicht zu inaktiven Kontakten gesendet werden',
'inactive_invoice' => 'Emails können nicht zu inaktiven Rechnungen gesendet werden',
'user_unregistered' => 'Bitte registrieren Sie sich um Emails zu versenden',
'user_unconfirmed' => 'Bitte bestätigen Sie Ihr Konto um Emails zu senden',
'invalid_contact_email' => 'Ungültige Kontakt Email Adresse',
],
'email_error_inactive_client' => 'Emails können nicht zu inaktiven Kunden gesendet werden',
'email_error_inactive_contact' => 'Emails können nicht zu inaktiven Kontakten gesendet werden',
'email_error_inactive_invoice' => 'Emails können nicht zu inaktiven Rechnungen gesendet werden',
'email_error_user_unregistered' => 'Bitte registrieren Sie sich um Emails zu versenden',
'email_error_user_unconfirmed' => 'Bitte bestätigen Sie Ihr Konto um Emails zu senden',
'email_error_invalid_contact_email' => 'Ungültige Kontakt Email Adresse',
'client_portal' => 'Kunden-Portal',
'admin' => 'Admin',
@ -988,7 +972,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1095,7 +1079,7 @@ return array(
'archived_bank_account' => 'Bankverbindung erfolgreich archiviert',
'created_bank_account' => 'Bankverbindung erfolgreich erstellt',
'validate_bank_account' => 'Bankverbindung bestätigen',
'bank_accounts_help' => 'Fügen Sie eine Bankverbindung hinzu, um Ausgaben automatisch zu importieren und Lieferanten zu erstellen. Unterstützt American Express und <a href="'.OFX_HOME_URL.'" target="_blank">400+ US-Banken.</a>',
'bank_accounts_help' => 'Fügen Sie eine Bankverbindung hinzu, um Ausgaben automatisch zu importieren und Lieferanten zu erstellen. Unterstützt American Express und <a href=":link" target="_blank">400+ US-Banken.</a>',
'bank_password_help' => 'Info: Ihr Passwort wird sicher übertragen und zu keiner Zeit auf unseren Servern gespeichert.',
'bank_password_warning' => 'Warnung: Ihr Passwort könnte in Klartext übertragen werden, wir empfehlen Ihnen HTTPS zu verwenden.',
'username' => 'Benutzername',
@ -1130,7 +1114,7 @@ return array(
'trial_call_to_action' => 'Kostenlose Probezeit starten',
'trial_success' => 'Erfolgreich eine 2-Wochen Testversion aktiviert',
'overdue' => 'Überfällig',
'white_label_text' => 'Kaufen Sie eine 1 Jahres Whitelabel Lizenz zum Preis von $'.WHITE_LABEL_PRICE.' um das Invoice Ninja Branding vom Kundenportal zu entfernen und unser Projekt zu unterstützen.',
'white_label_text' => 'Kaufen Sie eine 1 Jahres Whitelabel Lizenz zum Preis von $:price um das Invoice Ninja Branding vom Kundenportal zu entfernen und unser Projekt zu unterstützen.',
'navigation' => 'Navigation',
'list_invoices' => 'Liste Rechnungen',
@ -1161,14 +1145,14 @@ return array(
'enable_portal_password_help'=>'Erlaubt Ihnen ein Passwort für jeden Kontakt zu erstellen. Wenn ein Passwort erstellt wurde, muss der Kunde dieses eingeben, bevor er eine Rechnung ansehen darf.',
'send_portal_password'=>'Erstelle das Passwort automatisch',
'send_portal_password_help'=>'Wenn kein Passwort gesetzt wurde, wird eins generiert und mit der ersten Rechnung verschickt.',
'expired' => 'Abgelaufen',
'invalid_card_number' => 'Die Kreditkartennummer ist nicht gültig.',
'invalid_expiry' => 'Das Ablaufdatum ist nicht gültig.',
'invalid_cvv' => 'Der CVV Code ist nicht gültig.',
'cost' => 'Kosten',
'create_invoice_for_sample' => 'Hinweis: Erstellen Sie Ihre erste Rechnung um hier eine Vorschau zu sehen.',
// User Permissions
'owner' => 'Eigentümer',
'administrator' => 'Administrator',
@ -1186,8 +1170,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'Zahlung zeigen',
'view_payment' => 'Zahlung zeigen',
'january' => 'Januar',
'february' => 'Februar',
'march' => 'März',
@ -1213,17 +1197,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1232,11 +1214,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1266,9 +1248,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1288,5 +1270,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);

View File

@ -992,40 +992,26 @@ $LANG = array(
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications',
'reset_password_footer' => 'If you did not request this password reset please email our support: '.CONTACT_EMAIL,
'limit_users' => 'Sorry, this will exceed the limit of '.MAX_NUM_USERS.' users',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE,
'old_browser' => 'Please use a <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">newer browser</a>',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'security' => [
'too_many_attempts' => 'Too many attempts. Try again in few minutes.',
'wrong_credentials' => 'Incorrect email or password.',
'confirmation' => 'Your account has been confirmed!',
'wrong_confirmation' => 'Wrong confirmation code.',
'password_forgot' => 'The information regarding password reset was sent to your email.',
'password_reset' => 'Your password has been changed successfully.',
'wrong_password_reset' => 'Invalid password. Try again',
],
'pro_plan' => [
'remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
'remove_logo_link' => 'Click here',
],
'invitation_status' => [
'sent' => 'Email Sent',
'opened' => 'Email Openend',
'viewed' => 'Invoice Viewed',
],
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'user_email_footer' => 'To adjust your email notification settings please visit :link',
'reset_password_footer' => 'If you did not request this password reset please email our support: :email',
'limit_users' => 'Sorry, this will exceed the limit of :limit users',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price',
'old_browser' => 'Please use a <a href=":link" target="_blank">newer browser</a>',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'pro_plan_remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
'pro_plan_remove_logo_link' => 'Click here',
'invitation_status_sent' => 'Email Sent',
'invitation_status_opened' => 'Email Openend',
'invitation_status_viewed' => 'Invoice Viewed',
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',

View File

@ -256,7 +256,7 @@ return array(
'email_salutation' => 'Estimado :name,',
'email_signature' => 'Un saludo cordial,',
'email_from' => 'El equipo de Invoice Ninja ',
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu correo, visita '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu correo, visita :link',
'invoice_link_message' => 'Para visualizar la factura de cliente, haz clic en el enlace abajo:',
'notification_invoice_paid_subject' => 'La factura :invoice ha sido pagada por el cliente :client',
'notification_invoice_sent_subject' => 'La factura :invoice ha sido enviada a el cliente :client',
@ -265,7 +265,7 @@ return array(
'notification_invoice_sent' => 'La factura :invoice por valor de :amount fue enviada al cliente :cliente.',
'notification_invoice_viewed' => 'La factura :invoice por valor de :amount fue visualizada por el cliente :client.',
'reset_password' => 'Puedes reconfigurar la contraseña de tu cuenta haciendo clic en el siguiente enlace:',
'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: '.CONTACT_EMAIL,
'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: :email',
// Payment page
'secure_payment' => 'Pago seguro',
@ -274,22 +274,10 @@ return array(
'expiration_year' => 'Año de caducidad',
'cvv' => 'CVV',
// Security alerts
'security' => array(
'too_many_attempts' => 'Demasiados intentos fallidos. Inténtalo de nuevo en un par de minutos.',
'wrong_credentials' => 'Contraseña o correo incorrecto.',
'confirmation' => '¡Tu cuenta se ha confirmado!',
'wrong_confirmation' => 'Código de confirmación incorrecto.',
'password_forgot' => 'La información sobre el cambio de tu contraseña se ha enviado a tu dirección de correo electrónico.',
'password_reset' => 'Tu contraseña se ha cambiado con éxito.',
'wrong_password_reset' => 'Contraseña no válida. Inténtalo de nuevo',
),
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja', //Maybe incorrect for the context
'remove_logo_link' => 'Haz clic aquí',
],
'pro_plan_remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja', //Maybe incorrect for the context
'pro_plan_remove_logo_link' => 'Haz clic aquí',
'logout' => 'Cerrar sesión',
'sign_up_to_save' => 'Registrate para guardar tu trabajo',
'agree_to_terms' => 'Estoy de acuerdo con los términos de Invoice Ninja :terms',
@ -396,7 +384,7 @@ return array(
'active' => 'Activar',
'pending' => 'Pendiente',
'deleted_user' => 'Usario eliminado con éxito',
'limit_users' => 'Lo sentimos, esta acción excederá el límite de '.MAX_NUM_USERS.' usarios',
'limit_users' => 'Lo sentimos, esta acción excederá el límite de :limit usarios',
'confirm_email_invoice' => '¿Estás seguro que quieres enviar esta factura?',
'confirm_email_quote' => '¿Estás seguro que quieres enviar esta cotización?',
'confirm_recurring_email_invoice' => 'Se ha marcado esta factura como recurrente, estás seguro que quieres enviar esta factura?',
@ -426,7 +414,7 @@ return array(
'more_designs_title' => 'Diseños Adicionales de Facturas',
'more_designs_cloud_header' => 'Vete Pro para más diseños de facturas',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Adquiera 6 diseños adicionales de facturas por solo $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Adquiera 6 diseños adicionales de facturas por solo $:price',
'more_designs_self_host_text' => '',
'buy' => 'Comprar',
'bought_designs' => 'Diseños adicionales de facturas agregados con éxito',
@ -682,7 +670,7 @@ return array(
'email_error' => 'Hubo un problema enviando el correo',
'confirm_recurring_timing' => 'Nota: los correos son enviados al inicio de la hora.',
'old_browser' => 'Por favor utiliza <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">más reciente</a>',
'old_browser' => 'Por favor utiliza <a href=":link" target="_blank">más reciente</a>',
'payment_terms_help' => 'Asigna la fecha de vencimiento por defecto de la factura',
'unlink_account' => 'Desconectar Cuenta',
'unlink' => 'Desconectar',
@ -778,11 +766,10 @@ return array(
'invoice_quote_number' => 'Números de Cotización y Factura',
'invoice_charges' => 'Cargos de Factura',
'invitation_status' => [
'sent' => 'Correo enviado',
'opened' => 'Correo Abierto',
'viewed' => 'Factura Vista',
],
'invitation_status_sent' => 'Correo enviado',
'invitation_status_opened' => 'Correo Abierto',
'invitation_status_viewed' => 'Factura Vista',
'notification_invoice_bounced' => 'No nos fue posible entregar la Factura :invoice a :contact.',
'notification_invoice_bounced_subject' => 'No fue posible entregar la Factura :invoice',
'notification_quote_bounced' => 'No nos fue posible entregar la Cotización :invoice a :contact.',
@ -904,14 +891,12 @@ return array(
'no_mapper' => 'No valid mapping for file',
'invalid_csv_header' => 'Invalid CSV Header',
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'client_portal' => 'Client Portal',
'admin' => 'Admin',
@ -964,7 +949,7 @@ return array(
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1071,7 +1056,7 @@ return array(
'archived_bank_account' => 'Successfully archived bank account',
'created_bank_account' => 'Successfully created bank account',
'validate_bank_account' => 'Validate Bank Account',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Username',
@ -1106,7 +1091,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1137,14 +1122,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1162,8 +1147,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1189,17 +1174,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1208,11 +1191,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1242,9 +1225,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1264,5 +1247,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);

View File

@ -271,7 +271,7 @@ return array(
'email_salutation' => 'Estimado :name,',
'email_signature' => 'Un cordial saludo,',
'email_from' => 'El equipo de Invoice Ninja ',
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu email, visita '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu email, visita :link',
'invoice_link_message' => 'Para visualizar la factura de cliente, haz clic en el enlace de abajo:',
'notification_invoice_paid_subject' => 'La factura :invoice ha sido pagada por el cliente :client',
'notification_invoice_sent_subject' => 'La factura :invoice ha sido enviada a el cliente :client',
@ -280,7 +280,7 @@ return array(
'notification_invoice_sent' => 'La factura :invoice por importe de :amount fue enviada al cliente :cliente.',
'notification_invoice_viewed' => 'La factura :invoice por importe de :amount fue visualizada por el cliente :client.',
'reset_password' => 'Puedes reconfigurar la contraseña de tu cuenta haciendo clic en el siguiente enlace:',
'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: '.CONTACT_EMAIL,
'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: :email',
// Payment page
'secure_payment' => 'Pago seguro',
@ -289,22 +289,10 @@ return array(
'expiration_year' => 'Año de caducidad',
'cvv' => 'CVV',
// Security alerts
'confide' => array(
'too_many_attempts' => 'Demasiados intentos fallidos. Inténtalo de nuevo en un par de minutos.',
'wrong_credentials' => 'Contraseña o email incorrecto.',
'confirmation' => '¡Tu cuenta se ha confirmado!',
'wrong_confirmation' => 'Código de confirmación incorrecto.',
'password_forgot' => 'La información sobre el cambio de tu contraseña se ha enviado a tu dirección de correo electrónico.',
'password_reset' => 'Tu contraseña se ha cambiado con éxito.',
'wrong_password_reset' => 'Contraseña no válida. Inténtalo de nuevo',
),
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja',
'remove_logo_link' => 'Haz click aquí',
],
'pro_plan_remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja',
'pro_plan_remove_logo_link' => 'Haz click aquí',
'logout' => 'Cerrar sesión',
'sign_up_to_save' => 'Registrate para guardar tu trabajo',
'agree_to_terms' => 'Estoy de acuerdo con los términos de Invoice Ninja :terms',
@ -414,7 +402,7 @@ return array(
'active' => 'Activo',
'pending' => 'Pendiente',
'deleted_user' => 'Usario eliminado con éxito',
'limit_users' => 'Lo sentimos, esta acción excederá el límite de '.MAX_NUM_USERS.' usarios',
'limit_users' => 'Lo sentimos, esta acción excederá el límite de :limit usarios',
'confirm_email_invoice' => '¿Estás seguro que quieres enviar esta factura?',
'confirm_email_quote' => '¿Estás seguro que quieres enviar este presupuesto?',
'confirm_recurring_email_invoice' => 'Se ha marcado esta factura como recurrente, estás seguro que quieres enviar esta factura?',
@ -444,7 +432,7 @@ return array(
'more_designs_title' => 'Diseños adicionales para factura',
'more_designs_cloud_header' => 'Pase a Pro para añadir más diseños de facturas',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Obtenga 6 diseños más para facturas por sólo '.INVOICE_DESIGNS_PRICE, // comprobar
'more_designs_self_host_header' => 'Obtenga 6 diseños más para facturas por sólo $:price', // comprobar
'more_designs_self_host_text' => '',
'buy' => 'Comprar',
'bought_designs' => 'Añadidos con exito los diseños de factura',
@ -702,7 +690,7 @@ return array(
'email_error' => 'Ocurrió un problema enviando el correo',
'confirm_recurring_timing' => 'Nota: correos enviados cada hora en punto.',
'old_browser' => 'Por favor use un <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">navegador mas actual</a>',
'old_browser' => 'Por favor use un <a href=":link" target="_blank">navegador mas actual</a>',
'payment_terms_help' => 'Establezca la fecha de pago de factura por defecto',
'unlink_account' => 'Cuenta desvinculada',
'unlink' => 'Desvincular',
@ -799,11 +787,10 @@ return array(
'invoice_quote_number' => 'Números de Factura y Presupuesto',
'invoice_charges' => 'Cargos de factura',
'invitation_status' => [
'sent' => 'Correo Enviado',
'opened' => 'Correo abierto',
'viewed' => 'Factura vista',
],
'invitation_status_sent' => 'Correo Enviado',
'invitation_status_opened' => 'Correo abierto',
'invitation_status_viewed' => 'Factura vista',
'notification_invoice_bounced' => 'No podemos entregar la factura :invoice a :contact.',
'notification_invoice_bounced_subject' => 'No se puede entregar la factura :invoice',
'notification_quote_bounced' => 'No podemos entregar el presupuesto :invoice a :contact.',
@ -924,14 +911,12 @@ return array(
'no_mapper' => 'Mapeo no válido para el fichero',
'invalid_csv_header' => 'Cabecera CSV no Válida',
'email_errors' => [
'inactive_client' => 'No se pueden enviar correos a Clientes inactivos',
'inactive_contact' => 'No se pueden enviar correos a Contactos inactivos',
'inactive_invoice' => 'No se pueden enviar correos de Facturas inactivas',
'user_unregistered' => 'Por favor registra tu cuenta para enviar correos',
'user_unconfirmed' => 'Por favor confirma tu cuenta para enviar correos',
'invalid_contact_email' => 'Correo de contacto no válido',
],
'email_error_inactive_client' => 'No se pueden enviar correos a Clientes inactivos',
'email_error_inactive_contact' => 'No se pueden enviar correos a Contactos inactivos',
'email_error_inactive_invoice' => 'No se pueden enviar correos de Facturas inactivas',
'email_error_user_unregistered' => 'Por favor registra tu cuenta para enviar correos',
'email_error_user_unconfirmed' => 'Por favor confirma tu cuenta para enviar correos',
'email_error_invalid_contact_email' => 'Correo de contacto no válido',
'client_portal' => 'Portal Cliente',
'admin' => 'Admin.',
@ -985,7 +970,7 @@ return array(
'email_designs' => 'Diseños de correo',
'assigned_when_sent' => 'Asignado al enviar',
'white_label_custom_css' => ':link para $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link para $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Comprar licencia de marca blanca',
// Expense / vendor
@ -1091,7 +1076,7 @@ return array(
'archived_bank_account' => 'Cuenta Bancaria archivada correctamente',
'created_bank_account' => 'Cuenta Bancaria creada correctamente',
'validate_bank_account' => 'Validar Cuenta Bancaria',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Usuario',
@ -1126,7 +1111,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1157,14 +1142,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1182,8 +1167,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1209,17 +1194,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1228,11 +1211,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1262,9 +1245,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1284,5 +1267,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);

View File

@ -262,7 +262,7 @@ return array(
'email_salutation' => 'Cher :name,',
'email_signature' => 'Cordialement,',
'email_from' => 'L\'équipe Invoice Ninja',
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter :link',
'invoice_link_message' => 'Pour voir la facture de votre client cliquez sur le lien ci-après :',
'notification_invoice_paid_subject' => 'La facture :invoice a été payée par le client :client',
'notification_invoice_sent_subject' => 'La facture :invoice a été envoyée au client :client',
@ -271,7 +271,7 @@ return array(
'notification_invoice_sent' => 'Le client suivant :client a reçu par courriel la facture :invoice d\'un montant de :amount',
'notification_invoice_viewed' => 'Le client suivant :client a vu la facture :invoice d\'un montant de :amount',
'reset_password' => 'Vous pouvez réinitialiser votre mot de passe en cliquant sur le lien suivant :',
'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support :'.CONTACT_EMAIL,
'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support : :email',
// Payment page
'secure_payment' => 'Paiement sécurisé',
@ -280,22 +280,9 @@ return array(
'expiration_year' => 'Année d\'expiration',
'cvv' => 'Cryptogramme visuel',
// Security alerts
'security' => array(
'too_many_attempts' => 'Trop de tentatives. Essayez à nouveau dans quelques minutes.',
'wrong_credentials' => 'Courriel ou mot de passe incorrect',
'confirmation' => 'Votre compte a été validé !',
'wrong_confirmation' => 'Code de confirmation incorrect.',
'password_forgot' => 'Les informations de réinitialisation de votre mot de passe vous ont été envoyées par courriel.',
'password_reset' => 'Votre mot de passe a été modifié avec succès.',
'wrong_password_reset' => 'Mot de passe incorrect. Veuillez réessayer',
),
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link pour supprimer le logo Invoice Ninja en souscrivant au Plan Pro',
'remove_logo_link' => 'Cliquez ici',
],
'pro_plan_remove_logo' => ':link pour supprimer le logo Invoice Ninja en souscrivant au Plan Pro',
'pro_plan_remove_logo_link' => 'Cliquez ici',
'logout' => 'Se déconnecter',
'sign_up_to_save' => 'Connectez vous pour sauvegarder votre travail',
@ -412,7 +399,7 @@ return array(
'active' => 'Actif',
'pending' => 'En attente',
'deleted_user' => 'Utilisateur supprimé',
'limit_users' => 'Désolé, ceci excédera la limite de '.MAX_NUM_USERS.' utilisateurs',
'limit_users' => 'Désolé, ceci excédera la limite de :limit utilisateurs',
'confirm_email_invoice' => 'Voulez-vous vraiment envoyer cette facture par courriel ?',
'confirm_email_quote' => 'Voulez-vous vraiment envoyer ce devis par courriel ?',
@ -446,7 +433,7 @@ return array(
'more_designs_title' => 'Modèles de factures additionnels',
'more_designs_cloud_header' => 'Passez au Plan Pro pour plus de modèles',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement '.INVOICE_DESIGNS_PRICE.'$',
'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement $:price',
'more_designs_self_host_text' => '',
'buy' => 'Acheter',
'bought_designs' => 'Les nouveaux modèles ont été ajoutés avec succès',
@ -695,7 +682,7 @@ return array(
'email_error' => 'Il y a eu un problème en envoyant le courriel',
'confirm_recurring_timing' => 'Note : les courriels sont envoyés au début de l\'heure.',
'old_browser' => 'Merci d\'utiliser un <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">navigateur plus récent</a>',
'old_browser' => 'Merci d\'utiliser un <a href=":link" target="_blank">navigateur plus récent</a>',
'payment_terms_help' => 'Définir la date d\'échéance par défaut de la facture',
'unlink_account' => 'Dissocier le compte',
'unlink' => 'Dissocier',
@ -791,11 +778,10 @@ return array(
'invoice_quote_number' => 'Numéro des devis & factures',
'invoice_charges' => 'Charges de facturation',
'invitation_status' => [
'sent' => 'Email envoyé',
'opened' => 'Email ouvert',
'viewed' => 'Facture vue',
],
'invitation_status_sent' => 'Email envoyé',
'invitation_status_opened' => 'Email ouvert',
'invitation_status_viewed' => 'Facture vue',
'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.',
'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice',
'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.',
@ -918,14 +904,12 @@ return array(
'no_mapper' => 'Mappage invalide pour ce fichier',
'invalid_csv_header' => 'En-tête du fichier CSV invalide',
'email_errors' => [
'inactive_client' => 'Les mails ne peuvent être envoyés aux clients inactifs',
'inactive_contact' => 'Les mails ne peuvent être envoyés aux contacts inactifs',
'inactive_invoice' => 'Les mails ne peuvent être envoyés aux factures inactives',
'user_unregistered' => 'Veuillez vous inscrire afin d\'envoyer des mails',
'user_unconfirmed' => 'Veuillez confirmer votre compte afin de permettre l\'envoi de mail',
'invalid_contact_email' => 'Adresse mail du contact invalide',
],
'email_error_inactive_client' => 'Les mails ne peuvent être envoyés aux clients inactifs',
'email_error_inactive_contact' => 'Les mails ne peuvent être envoyés aux contacts inactifs',
'email_error_inactive_invoice' => 'Les mails ne peuvent être envoyés aux factures inactives',
'email_error_user_unregistered' => 'Veuillez vous inscrire afin d\'envoyer des mails',
'email_error_user_unconfirmed' => 'Veuillez confirmer votre compte afin de permettre l\'envoi de mail',
'email_error_invalid_contact_email' => 'Adresse mail du contact invalide',
'client_portal' => 'Portail client',
'admin' => 'Admin',
@ -979,7 +963,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Acheter une licence marque blanche',
// Expense / vendor
@ -1086,7 +1070,7 @@ return array(
'archived_bank_account' => 'Compte bancaire archivé',
'created_bank_account' => 'Compte bancaire créé',
'validate_bank_account' => 'Valider le compte bancaire',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Attention: votre mot de passe peut être transmis en clair, pensez à activer HTTPS.',
'username' => 'Nom d\'utilisateur',
@ -1121,7 +1105,7 @@ return array(
'trial_call_to_action' => 'Commencer l\'essai gratuit',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Impayé',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'Liste des factures',
@ -1152,14 +1136,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Générer un mot de passe automatiquement',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expiré',
'invalid_card_number' => 'Le numéro de carte bancaire est invalide.',
'invalid_expiry' => 'La date d\'expiration est invalide.',
'invalid_cvv' => 'Le code de sécurité est incorrect.',
'cost' => 'Coût',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Propriétaire',
'administrator' => 'Administrateur',
@ -1177,8 +1161,8 @@ return array(
'create_all_help' => 'Autoriser l\'utilisateur à créer et éditer tous les enregistrements',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'Voir le paiement',
'view_payment' => 'Voir le paiement',
'january' => 'Janvier',
'february' => 'Février',
'march' => 'Mars',
@ -1204,17 +1188,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1223,11 +1205,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1257,9 +1239,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1279,5 +1261,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);

View File

@ -262,7 +262,7 @@ return array(
'email_salutation' => 'Cher :name,',
'email_signature' => 'Cordialement,',
'email_from' => 'L\'équipe Invoice Ninja',
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter :link',
'invoice_link_message' => 'Pour voir la facture de votre client cliquez sur le lien ci-après :',
'notification_invoice_paid_subject' => 'La facture :invoice a été payée par le client :client',
'notification_invoice_sent_subject' => 'La facture :invoice a été envoyée au client :client',
@ -271,7 +271,7 @@ return array(
'notification_invoice_sent' => 'Le client suivant :client a reçu par courriel la facture :invoice d\'un montant de :amount',
'notification_invoice_viewed' => 'Le client suivant :client a vu la facture :invoice d\'un montant de :amount',
'reset_password' => 'Vous pouvez réinitialiser votre mot de passe en cliquant sur le lien suivant :',
'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support :' . CONTACT_EMAIL,
'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support : :email',
// Payment page
'secure_payment' => 'Paiement sécurisé',
@ -280,22 +280,9 @@ return array(
'expiration_year' => 'Année d\'expiration',
'cvv' => 'CVV',
// Security alerts
'confide' => array(
'too_many_attempts' => 'Trop de tentatives. Veuillez réessayer dans quelques minutes.',
'wrong_credentials' => 'Courriel ou mot de passe incorrect',
'confirmation' => 'Votre compte a été validé !',
'wrong_confirmation' => 'Code de confirmation incorrect.',
'password_forgot' => 'Les informations de réinitialisation de votre mot de passe vous ont été envoyées par courriel.',
'password_reset' => 'Votre mot de passe a été modifié avec succès.',
'wrong_password_reset' => 'Mot de passe incorrect. Veuillez réessayer',
),
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link pour supprimer le logo Invoice Ninja en souscrivant au plan pro',
'remove_logo_link' => 'Cliquez ici',
],
'pro_plan_remove_logo' => ':link pour supprimer le logo Invoice Ninja en souscrivant au plan pro',
'pro_plan_remove_logo_link' => 'Cliquez ici',
'logout' => 'Déconnexion',
'sign_up_to_save' => 'Connectez-vous pour sauvegarder votre travail',
@ -412,7 +399,7 @@ return array(
'active' => 'Actif',
'pending' => 'En attente',
'deleted_user' => 'Utilisateur supprimé',
'limit_users' => 'Désolé, ceci excédera la limite de ' . MAX_NUM_USERS . ' utilisateurs',
'limit_users' => 'Désolé, ceci excédera la limite de :limit utilisateurs',
'confirm_email_invoice' => 'Voulez-vous vraiment envoyer cette facture par courriel ?',
'confirm_email_quote' => 'Voulez-vous vraiment envoyer cette soumission par courriel ?',
@ -447,7 +434,7 @@ return array(
'more_designs_title' => 'Modèles de factures additionnels',
'more_designs_cloud_header' => 'Passez au Plan Pro pour obtenir plus de modèles',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement '.INVOICE_DESIGNS_PRICE.'$',
'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement $:price',
'more_designs_self_host_text' => '',
'buy' => 'Acheter',
'bought_designs' => 'Les nouveaux modèles ont été ajoutés avec succès',
@ -697,7 +684,7 @@ return array(
'email_error' => 'Il y a eu un problème avec l\'envoi du courriel',
'confirm_recurring_timing' => 'Note: Les courriels sont envoyés au début de chaque heure.',
'old_browser' => 'Veuillez utiliser un <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">navigateur plus récent</a>',
'old_browser' => 'Veuillez utiliser un <a href=":link" target="_blank">navigateur plus récent</a>',
'payment_terms_help' => 'Défini la date d\'échéance par défaut',
'unlink_account' => 'Délié le compte',
'unlink' => 'Délié',
@ -731,7 +718,7 @@ return array(
'recent_payments' => 'Paiements reçus',
'outstanding' => 'Impayés',
'manage_companies' => 'Gérer les entreprises',
'total_revenue' => 'Revenus',
'total_revenue' => 'Revenus',
'current_user' => 'Utilisateur en cours',
'new_recurring_invoice' => 'Nouvelle facture récurrente',
@ -794,11 +781,10 @@ return array(
'invoice_quote_number' => 'Numéros de factures et de soumissions',
'invoice_charges' => 'Frais de facturation',
'invitation_status' => [
'sent' => 'Courriel envoyé',
'opened' => 'Courriel ouvert',
'viewed' => 'Facture consultée',
],
'invitation_status_sent' => 'Courriel envoyé',
'invitation_status_opened' => 'Courriel ouvert',
'invitation_status_viewed' => 'Facture consultée',
'notification_invoice_bounced' => 'Impossible d\'envoyer la facture :invoice à :contact.',
'notification_invoice_bounced_subject' => 'Impossible d\'envoyer la facture :invoice',
'notification_quote_bounced' => 'Impossible d\'envoyer la soumission :invoice à :contact.',
@ -919,14 +905,12 @@ return array(
'no_mapper' => 'Aucun liens de champs valides pour ce fichier',
'invalid_csv_header' => 'Entête CSV invalide',
'email_errors' => [
'inactive_client' => 'Aucun courriel ne peut être envoyé à un client inactif',
'inactive_contact' => 'Aucun courriel ne peut être envoyé à un contact inactif',
'inactive_invoice' => 'Aucun courriel ne peut être envoyé à une facture inactive',
'user_unregistered' => 'Veuillez vous créer un compte pour envoyer des courriels',
'user_unconfirmed' => 'Veuillez confirmer votre compte pour pouvoir envoyer des courriels',
'invalid_contact_email' => 'Ce courriel est invalide',
],
'email_error_inactive_client' => 'Aucun courriel ne peut être envoyé à un client inactif',
'email_error_inactive_contact' => 'Aucun courriel ne peut être envoyé à un contact inactif',
'email_error_inactive_invoice' => 'Aucun courriel ne peut être envoyé à une facture inactive',
'email_error_user_unregistered' => 'Veuillez vous créer un compte pour envoyer des courriels',
'email_error_user_unconfirmed' => 'Veuillez confirmer votre compte pour pouvoir envoyer des courriels',
'email_error_invalid_contact_email' => 'Ce courriel est invalide',
'client_portal' => 'Portail client',
'admin' => 'Admin',
@ -980,7 +964,7 @@ return array(
'email_designs' => 'Modèles de courriel',
'assigned_when_sent' => 'Assignée lors de l\'envoi',
'white_label_custom_css' => ':link à $'.WHITE_LABEL_PRICE.' pour activer les styles personnalisés et supporter notre projet.',
'white_label_custom_css' => ':link à $:price pour activer les styles personnalisés et supporter notre projet.',
'white_label_purchase_link' => 'Achetez une licence sans pub',
// Expense / vendor
@ -1084,7 +1068,7 @@ return array(
'archived_bank_account' => 'Le compte bancaire a été archivé',
'created_bank_account' => 'Le compte bancaire a été créé',
'validate_bank_account' => 'Valider le compte bancaire',
'bank_accounts_help' => 'Veuillez vous connecter à un compte bancaire pour importer automatiquement les dépenses et créer les fournisseurs. Supporte American Express et <a href="'.OFX_HOME_URL.'" target="_blank"> plus de 400 banques américaines.</a>',
'bank_accounts_help' => 'Veuillez vous connecter à un compte bancaire pour importer automatiquement les dépenses et créer les fournisseurs. Supporte American Express et <a href=":link" target="_blank"> plus de 400 banques américaines.</a>',
'bank_password_help' => 'Note: votre mot de passe est transmis de façon sécuritaire et n\'est jamais enregistré sur nos serveurs.',
'bank_password_warning' => 'Avertissement: votre mot de passe pourrait être transmis sans cryptage, pensez à activer HTTPS.',
'username' => 'Nom d\'utilisateur',
@ -1119,7 +1103,7 @@ return array(
'trial_call_to_action' => 'Démarrez votre essai gratuit',
'trial_success' => 'Le Plan Pro, version d\'essai gratuit pour 2 semaines a été activé',
'overdue' => 'En souffrance',
'white_label_text' => 'Achetez une licence sans pub d\'un an à $'.WHITE_LABEL_PRICE.' pour retirer le logo de Invoice Ninja du portail client et supporter notre projet.',
'white_label_text' => 'Achetez une licence sans pub d\'un an à $:price pour retirer le logo de Invoice Ninja du portail client et supporter notre projet.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1150,14 +1134,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1175,8 +1159,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1202,17 +1186,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1221,11 +1203,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1255,9 +1237,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1277,6 +1259,6 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
);

View File

@ -1,4 +1,4 @@
<?php
<?php
return array(
@ -117,7 +117,7 @@ return array(
'billed_client' => 'Cliente fatturato',
'billed_clients' => 'Clienti fatturati',
'active_client' => 'cliente attivo',
'active_clients' => 'clienti attivi',
'active_clients' => 'clienti attivi',
'invoices_past_due' => 'Fatture Scadute', /* Insoluti */
'upcoming_invoices' => 'Prossime fatture',
'average_invoice' => 'Fattura media',
@ -262,7 +262,7 @@ return array(
'email_salutation' => 'Caro :name,',
'email_signature' => 'Distinti saluti,',
'email_from' => 'Il Team di InvoiceNinja',
'user_email_footer' => 'Per modificare le impostazioni di notifiche via email per favore accedi a: '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Per modificare le impostazioni di notifiche via email per favore accedi a: :link',
'invoice_link_message' => 'Per visualizzare la tua fattura del cliente clicca sul link qui sotto:',
'notification_invoice_paid_subject' => 'La fattura :invoice è stata pagata da :client',
'notification_invoice_sent_subject' => 'La fattura :invoice è stata inviata a :client',
@ -271,31 +271,18 @@ return array(
'notification_invoice_sent' => 'Al seguente cliente :client è stata inviata via email la fattura :invoice di :amount.',
'notification_invoice_viewed' => 'Il seguente cliente :client ha visualizzato la fattura :invoice di :amount.',
'reset_password' => 'Puoi resettare la password del tuo account cliccando sul link qui sotto:',
'reset_password_footer' => 'Se non sei stato tu a voler resettare la password per favore invia un\'email di assistenza a: ' . CONTACT_EMAIL,
'reset_password_footer' => 'Se non sei stato tu a voler resettare la password per favore invia un\'email di assistenza a: :email',
// Payment page
'secure_payment' => 'Pagamento Sicuro',
'card_number' => 'Numero Carta',
'expiration_month' => 'Mese di Scadenza',
'expiration_month' => 'Mese di Scadenza',
'expiration_year' => 'Anno di Scadenza',
'cvv' => 'CVV',
// Security alerts
'security' => [
'too_many_attempts' => 'Troppi tentativi fatti. Riprova tra qualche minuto.',
'wrong_credentials' => 'Email o password non corretti.',
'confirmation' => 'Il tuo account è stato confermato!',
'wrong_confirmation' => 'Codice di verifica errato.',
'password_forgot' => 'I dati per resettare la tua password sono stati inviati alla tua email.',
'password_reset' => 'La tua password è stata cambiata con successo.',
'wrong_password_reset' => 'Password errata. Riprova',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link per rimuovere il logo di Invoice Ninja aderendo al programma pro',
'remove_logo_link' => 'Clicca qui',
],
'pro_plan_remove_logo' => ':link per rimuovere il logo di Invoice Ninja aderendo al programma pro',
'pro_plan_remove_logo_link' => 'Clicca qui',
'logout' => 'Log Out', /* Esci */
'sign_up_to_save' => 'Registrati per salvare il tuo lavoro',
@ -387,7 +374,7 @@ return array(
'notification_quote_sent_subject' => 'Il preventivo :invoice è stato inviato a :client',
'notification_quote_viewed_subject' => 'Il preventivo :invoice è stato visualizzato da :client',
'notification_quote_sent' => 'Al seguente cliente :client è stata inviato il preventivo :invoice per un importo di :amount.',
'notification_quote_viewed' => 'Il seguente cliente :client ha visualizzato il preventivo :invoice di :amount.',
'notification_quote_viewed' => 'Il seguente cliente :client ha visualizzato il preventivo :invoice di :amount.',
'session_expired' => 'La vostra sessione è scaduta.',
@ -412,7 +399,7 @@ return array(
'active' => 'Active',
'pending' => 'Pending',
'deleted_user' => 'Successfully deleted user',
'limit_users' => 'Sorry, this will exceed the limit of ' . MAX_NUM_USERS . ' users',
'limit_users' => 'Sorry, this will exceed the limit of :limit users',
'confirm_email_invoice' => 'Are you sure you want to email this invoice?',
'confirm_email_quote' => 'Are you sure you want to email this quote?',
@ -435,7 +422,7 @@ return array(
'share_invoice_counter' => 'Share invoice counter',
'invoice_issued_to' => 'Invoice issued to',
'invalid_counter' => 'To prevent a possible conflict please set either an invoice or quote number prefix',
'mark_sent' => 'Mark sent',
'mark_sent' => 'Mark sent',
'gateway_help_1' => ':link to sign up for Authorize.net.',
@ -447,7 +434,7 @@ return array(
'more_designs_title' => 'Additional Invoice Designs',
'more_designs_cloud_header' => 'Go Pro for more invoice designs',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price',
'more_designs_self_host_text' => '',
'buy' => 'Buy',
'bought_designs' => 'Successfully added additional invoice designs',
@ -699,7 +686,7 @@ return array(
'email_error' => 'There was a problem sending the email',
'confirm_recurring_timing' => 'Note: emails are sent at the start of the hour.',
'old_browser' => 'Please use a <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">newer browser</a>',
'old_browser' => 'Please use a <a href=":link" target="_blank">newer browser</a>',
'payment_terms_help' => 'Sets the default invoice due date',
'unlink_account' => 'Unlink Account',
'unlink' => 'Unlink',
@ -796,11 +783,10 @@ return array(
'invoice_quote_number' => 'Numerazione Fatture e Preventivi',
'invoice_charges' => 'Invoice Charges',
'invitation_status' => [
'sent' => 'Email Sent',
'opened' => 'Email Openend',
'viewed' => 'Invoice Viewed',
],
'invitation_status_sent' => 'Email Sent',
'invitation_status_opened' => 'Email Openend',
'invitation_status_viewed' => 'Invoice Viewed',
'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.',
'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice',
'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.',
@ -921,14 +907,12 @@ return array(
'no_mapper' => 'No valid mapping for file',
'invalid_csv_header' => 'Invalid CSV Header',
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'client_portal' => 'Client Portal',
'admin' => 'Admin',
@ -982,7 +966,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1089,7 +1073,7 @@ return array(
'archived_bank_account' => 'Successfully archived bank account',
'created_bank_account' => 'Successfully created bank account',
'validate_bank_account' => 'Validate Bank Account',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Username',
@ -1124,7 +1108,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1155,14 +1139,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1180,8 +1164,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'Gennaio',
'february' => 'Febbraio',
'march' => 'Marzo',
@ -1207,17 +1191,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1226,11 +1208,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1260,9 +1242,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1282,5 +1264,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);

View File

@ -993,40 +993,26 @@ $LANG = array(
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications',
'reset_password_footer' => 'If you did not request this password reset please email our support: '.CONTACT_EMAIL,
'limit_users' => 'Sorry, this will exceed the limit of '.MAX_NUM_USERS.' users',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE,
'old_browser' => 'Please use a <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">newer browser</a>',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'security' => [
'too_many_attempts' => 'Too many attempts. Try again in few minutes.',
'wrong_credentials' => 'メールアドレスもしくはパスワードが正しくありません。',
'confirmation' => 'アカウントが確認されました!',
'wrong_confirmation' => '確認コードが違っています。',
'password_forgot' => 'The information regarding password reset was sent to your email.',
'password_reset' => 'パスワードが変更されました。',
'wrong_password_reset' => 'パスワードが正しくありません。もう一度入力してください。',
],
'pro_plan' => [
'remove_logo' => 'プロプランに加入して、Invoice Ninjaのロゴを消す。 :link',
'remove_logo_link' => 'こちらをクリック',
],
'invitation_status' => [
'sent' => 'メール送付済',
'opened' => 'メール開封済',
'viewed' => '請求書閲覧済',
],
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'user_email_footer' => 'To adjust your email notification settings please visit :link',
'reset_password_footer' => 'If you did not request this password reset please email our support: :email',
'limit_users' => 'Sorry, this will exceed the limit of :limit users',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price',
'old_browser' => 'Please use a <a href=":link" target="_blank">newer browser</a>',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'pro_plan_remove_logo' => 'プロプランに加入して、Invoice Ninjaのロゴを消す。 :link',
'pro_plan_remove_logo_link' => 'こちらをクリック',
'invitation_status_sent' => 'メール送付済',
'invitation_status_opened' => 'メール開封済',
'invitation_status_viewed' => '請求書閲覧済',
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'navigation' => 'ナビゲーション',
'list_invoices' => '請求書一覧',
@ -1057,14 +1043,14 @@ $LANG = array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1082,8 +1068,8 @@ $LANG = array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1109,17 +1095,15 @@ $LANG = array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1128,11 +1112,11 @@ $LANG = array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1162,9 +1146,9 @@ $LANG = array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1184,10 +1168,10 @@ $LANG = array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
return $LANG;
?>.
?>.

View File

@ -1,4 +1,4 @@
<?php
<?php
return array(
@ -117,7 +117,7 @@ return array(
'billed_client' => 'billed client',
'billed_clients' => 'billed clients',
'active_client' => 'active client',
'active_clients' => 'active clients',
'active_clients' => 'active clients',
'invoices_past_due' => 'Invoices Past Due',
'upcoming_invoices' => 'Upcoming invoices',
'average_invoice' => 'Average invoice',
@ -262,41 +262,28 @@ return array(
'email_salutation' => 'Dear :name,',
'email_signature' => 'Regards,',
'email_from' => 'The Invoice Ninja Team',
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'To adjust your email notification settings please visit :link',
'invoice_link_message' => 'To view your client invoice click the link below:',
'notification_invoice_paid_subject' => 'Invoice :invoice was paid by :client',
'notification_invoice_sent_subject' => 'Invoice :invoice was sent to :client',
'notification_invoice_viewed_subject' => 'Invoice :invoice was viewed by :client',
'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.',
'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.',
'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.',
'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.',
'reset_password' => 'You can reset your account password by clicking the following button:',
'reset_password_footer' => 'If you did not request this password reset please email our support: ' . CONTACT_EMAIL,
'reset_password_footer' => 'If you did not request this password reset please email our support: :email',
// Payment page
'secure_payment' => 'Secure Payment',
'card_number' => 'Card number',
'expiration_month' => 'Expiration month',
'expiration_month' => 'Expiration month',
'expiration_year' => 'Expiration year',
'cvv' => 'CVV',
// Security alerts
'security' => [
'too_many_attempts' => 'Too many attempts. Try again in few minutes.',
'wrong_credentials' => 'Incorrect email or password.',
'confirmation' => 'Your account has been confirmed!',
'wrong_confirmation' => 'Wrong confirmation code.',
'password_forgot' => 'The information regarding password reset was sent to your email.',
'password_reset' => 'Your password has been changed successfully.',
'wrong_password_reset' => 'Invalid password. Try again',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
'remove_logo_link' => 'Click here',
],
'pro_plan_remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
'pro_plan_remove_logo_link' => 'Click here',
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
@ -312,11 +299,11 @@ return array(
'pro_plan_product' => 'Pro Plan',
'pro_plan_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_success' => 'Thanks for choosing Invoice Ninja\'s Pro plan!<p/>&nbsp;<br/>
<b>Next Steps</b><p/>A payable invoice has been sent to the email
address associated with your account. To unlock all of the awesome
Pro features, please follow the instructions on the invoice to pay
<b>Next Steps</b><p/>A payable invoice has been sent to the email
address associated with your account. To unlock all of the awesome
Pro features, please follow the instructions on the invoice to pay
for a year of Pro-level invoicing.<p/>
Can\'t find the invoice? Need further assistance? We\'re happy to help
Can\'t find the invoice? Need further assistance? We\'re happy to help
-- email us at contact@invoiceninja.com',
'unsaved_changes' => 'You have unsaved changes',
@ -342,7 +329,7 @@ return array(
'archive_product' => 'Archive Product',
'updated_product' => 'Successfully updated product',
'created_product' => 'Successfully created product',
'archived_product' => 'Successfully archived product',
'archived_product' => 'Successfully archived product',
'pro_plan_custom_fields' => ':link to enable custom fields by joining the Pro Plan',
'advanced_settings' => 'Advanced Settings',
@ -395,7 +382,7 @@ return array(
'notification_quote_sent_subject' => 'Quote :invoice was sent to :client',
'notification_quote_viewed_subject' => 'Quote :invoice was viewed by :client',
'notification_quote_sent' => 'The following client :client was emailed Quote :invoice for :amount.',
'notification_quote_viewed' => 'The following client :client viewed Quote :invoice for :amount.',
'notification_quote_viewed' => 'The following client :client viewed Quote :invoice for :amount.',
'session_expired' => 'Your session has expired.',
@ -420,7 +407,7 @@ return array(
'active' => 'Active',
'pending' => 'Pending',
'deleted_user' => 'Successfully deleted user',
'limit_users' => 'Sorry, this will exceed the limit of ' . MAX_NUM_USERS . ' users',
'limit_users' => 'Sorry, this will exceed the limit of :limit users',
'confirm_email_invoice' => 'Are you sure you want to email this invoice?',
'confirm_email_quote' => 'Are you sure you want to email this quote?',
@ -443,7 +430,7 @@ return array(
'share_invoice_counter' => 'Share invoice counter',
'invoice_issued_to' => 'Invoice issued to',
'invalid_counter' => 'To prevent a possible conflict please set either an invoice or quote number prefix',
'mark_sent' => 'Mark sent',
'mark_sent' => 'Mark sent',
'gateway_help_1' => ':link to sign up for Authorize.net.',
@ -455,7 +442,7 @@ return array(
'more_designs_title' => 'Additional Invoice Designs',
'more_designs_cloud_header' => 'Go Pro for more invoice designs',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price',
'more_designs_self_host_text' => '',
'buy' => 'Buy',
'bought_designs' => 'Successfully added additional invoice designs',
@ -706,7 +693,7 @@ return array(
'email_error' => 'There was a problem sending the email',
'confirm_recurring_timing' => 'Note: emails are sent at the start of the hour.',
'old_browser' => 'Please use a <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">newer browser</a>',
'old_browser' => 'Please use a <a href=":link" target="_blank">newer browser</a>',
'payment_terms_help' => 'Sets the default invoice due date',
'unlink_account' => 'Unlink Account',
'unlink' => 'Unlink',
@ -740,7 +727,7 @@ return array(
'recent_payments' => 'Recent Payments',
'outstanding' => 'Outstanding',
'manage_companies' => 'Manage Companies',
'total_revenue' => 'Total Revenue',
'total_revenue' => 'Total Revenue',
'current_user' => 'Current User',
'new_recurring_invoice' => 'New Recurring Invoice',
@ -803,11 +790,10 @@ return array(
'invoice_quote_number' => 'Invoice and Quote Numbers',
'invoice_charges' => 'Invoice Charges',
'invitation_status' => [
'sent' => 'Email Sent',
'opened' => 'Email Openend',
'viewed' => 'Invoice Viewed',
],
'invitation_status_sent' => 'Email Sent',
'invitation_status_opened' => 'Email Openend',
'invitation_status_viewed' => 'Invoice Viewed',
'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.',
'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice',
'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.',
@ -928,14 +914,12 @@ return array(
'no_mapper' => 'No valid mapping for file',
'invalid_csv_header' => 'Invalid CSV Header',
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'client_portal' => 'Client Portal',
'admin' => 'Admin',
@ -989,7 +973,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1096,7 +1080,7 @@ return array(
'archived_bank_account' => 'Successfully archived bank account',
'created_bank_account' => 'Successfully created bank account',
'validate_bank_account' => 'Validate Bank Account',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Username',
@ -1131,7 +1115,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1162,14 +1146,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1187,8 +1171,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1214,17 +1198,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1233,11 +1215,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1267,9 +1249,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1289,5 +1271,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
);

View File

@ -1,4 +1,4 @@
<?php
<?php
return array(
@ -117,7 +117,7 @@ return array(
'billed_client' => 'fakturert klient',
'billed_clients' => 'fakturerte klienter',
'active_client' => 'aktiv klient',
'active_clients' => 'aktive klienter',
'active_clients' => 'aktive klienter',
'invoices_past_due' => 'Forfalte Fakturaer',
'upcoming_invoices' => 'Forestående Fakturaer',
'average_invoice' => 'Gjennomsnittlige Fakturaer',
@ -261,16 +261,16 @@ return array(
'email_salutation' => 'Kjære :name,',
'email_signature' => 'Med vennlig hilsen,',
'email_from' => 'Invoice Ninja Gjengen',
'user_email_footer' => 'For å justere varslingsinnstillingene vennligst besøk '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'For å justere varslingsinnstillingene vennligst besøk :link',
'invoice_link_message' => 'Hvis du vil se din klientfaktura klikk på lenken under:',
'notification_invoice_paid_subject' => 'Faktura :invoice betalt av :client',
'notification_invoice_sent_subject' => 'Faktura :invoice sendt til :client',
'notification_invoice_viewed_subject' => 'Faktura :invoice sett av :client',
'notification_invoice_paid' => 'En betaling pålydende :amount ble gjort av :client for faktura :invoice.',
'notification_invoice_sent' => 'E-post har blitt sendt til :client - Faktura :invoice pålydende :amount.',
'notification_invoice_viewed' => ':client har nå sett faktura :invoice pålydende :amount.',
'notification_invoice_viewed' => ':client har nå sett faktura :invoice pålydende :amount.',
'reset_password' => 'Du kan nullstille ditt passord ved å besøke følgende lenke:',
'reset_password_footer' => 'Hvis du ikke ba om å få nullstillt ditt passord, vennligst kontakt kundeservice: ' . CONTACT_EMAIL,
'reset_password_footer' => 'Hvis du ikke ba om å få nullstillt ditt passord, vennligst kontakt kundeservice: :email',
// Payment page
@ -280,22 +280,9 @@ return array(
'expiration_year' => 'Utløpsår',
'cvv' => 'CVV',
// Security alerts
'security' => [
'too_many_attempts' => 'For mange forsøk. Prøv igjen om noen få minutter.',
'wrong_credentials' => 'Feil e-post eller passord.',
'confirmation' => 'Din konto har blitt bekreftet!',
'wrong_confirmation' => 'Feil bekreftelseskode.',
'password_forgot' => 'Informasjonen om tilbakestilling av passord ble sendt til e-postadressen.',
'password_reset' => 'Passordet ditt er endret.',
'wrong_password_reset' => 'Ugyldig passord. Prøv på nytt',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link for å fjerne Invoice Ninja-logoen, oppgrader til en Pro Plan',
'remove_logo_link' => 'Klikk her',
],
'pro_plan_remove_logo' => ':link for å fjerne Invoice Ninja-logoen, oppgrader til en Pro Plan',
'pro_plan_remove_logo_link' => 'Klikk her',
'logout' => 'Logg ut',
'sign_up_to_save' => 'Registrer deg for å lagre arbeidet ditt',
@ -311,11 +298,11 @@ return array(
'pro_plan_product' => 'Pro Plan',
'pro_plan_description' => 'Ett års innmelding i Invoice Ninja Pro Plan.',
'pro_plan_success' => 'Takk for at du valgte Invoice Ninja\'s Pro plan!<p/>&nbsp;<br/>
<b>Neste steg</b><p/>en betalbar faktura er sendt til e-postadressen
som er tilknyttet kontoen din. For å låse opp alle de utrolige
Pro-funksjonene, kan du følge instruksjonene fakturaen til å
<b>Neste steg</b><p/>en betalbar faktura er sendt til e-postadressen
som er tilknyttet kontoen din. For å låse opp alle de utrolige
Pro-funksjonene, kan du følge instruksjonene fakturaen til å
betale for et år med Pro-nivå funksjoner.<p/>
Finner du ikke fakturaen? Trenger du mer hjelp? Vi hjelper deg gjerne om det skulle være noe
Finner du ikke fakturaen? Trenger du mer hjelp? Vi hjelper deg gjerne om det skulle være noe
-- kontakt oss contact@invoiceninja.com',
'unsaved_changes' => 'Du har ulagrede endringer',
@ -341,7 +328,7 @@ return array(
'archive_product' => 'Arkiver produkt',
'updated_product' => 'Produkt oppdatert',
'created_product' => 'Produkt lagret',
'archived_product' => 'Produkt arkivert',
'archived_product' => 'Produkt arkivert',
'pro_plan_custom_fields' => ':link for å aktivere egendefinerte felt ved å delta i Pro Plan',
'advanced_settings' => 'Avanserte innstillinger',
@ -394,7 +381,7 @@ return array(
'notification_quote_sent_subject' => 'Tilbud :invoice sendt til :client',
'notification_quote_viewed_subject' => 'Tilbudet :invoice er nå sett av :client',
'notification_quote_sent' => 'Følgende klient :client ble sendt tilbudsfaktura :invoice pålydende :amount.',
'notification_quote_viewed' => 'Følgende klient :client har nå sett tilbudsfakturaen :invoice pålydende :amount.',
'notification_quote_viewed' => 'Følgende klient :client har nå sett tilbudsfakturaen :invoice pålydende :amount.',
'session_expired' => 'Økten er utløpt.',
@ -419,7 +406,7 @@ return array(
'active' => 'Aktiv',
'pending' => 'Avventer',
'deleted_user' => 'Bruker slettet',
'limit_users' => 'Dessverre, vil dette overstige grensen på ' . MAX_NUM_USERS . ' brukere',
'limit_users' => 'Dessverre, vil dette overstige grensen på :limit brukere',
'confirm_email_invoice' => 'Er du sikker på at du ønsker å e-poste denne fakturaen?',
'confirm_email_quote' => 'Er du sikker på at du ønsker å e-poste dette tilbudet?',
@ -453,7 +440,7 @@ return array(
'more_designs_title' => 'Flere Faktura Design',
'more_designs_cloud_header' => 'Gå Pro for flere faktura design',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Få 6 flere design for bare $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Få 6 flere design for bare $:price',
'more_designs_self_host_text' => '',
'buy' => 'Kjøp',
'bought_designs' => 'Det ble suksessfullt lagt til flere design',
@ -702,7 +689,7 @@ return array(
'email_error' => 'Det oppstod et problem med utsending av e-posten',
'confirm_recurring_timing' => 'Info: e-poster er sendt på starten av en time.',
'old_browser' => 'Vennligst bruk en <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">nyere nettleser</a>',
'old_browser' => 'Vennligst bruk en <a href=":link" target="_blank">nyere nettleser</a>',
'payment_terms_help' => 'Setter standard faktura dato',
'unlink_account' => 'Frakoble Konto',
'unlink' => 'Frakoble',
@ -799,11 +786,9 @@ return array(
'invoice_quote_number' => 'Faktura og Tilbuds Nummer',
'invoice_charges' => 'Faktura Kostnader',
'invitation_status' => [
'sent' => 'E-post Sendt',
'opened' => 'E-post Åpnet',
'viewed' => 'Faktura Vist',
],
'invitation_status_sent' => 'E-post Sendt',
'invitation_status_opened' => 'E-post Åpnet',
'invitation_status_viewed' => 'Faktura Vist',
'notification_invoice_bounced' => 'Vi klarte ikke å levere Faktura :invoice til :contact.',
'notification_invoice_bounced_subject' => 'Klarte ikke å levere Faktura :invoice',
@ -926,14 +911,12 @@ return array(
'no_mapper' => 'No valid mapping for file',
'invalid_csv_header' => 'Invalid CSV Header',
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'client_portal' => 'Client Portal',
'admin' => 'Admin',
@ -987,7 +970,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1094,7 +1077,7 @@ return array(
'archived_bank_account' => 'Successfully archived bank account',
'created_bank_account' => 'Successfully created bank account',
'validate_bank_account' => 'Validate Bank Account',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Username',
@ -1129,7 +1112,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1160,14 +1143,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1185,8 +1168,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1212,17 +1195,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1231,11 +1212,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1265,9 +1246,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1287,5 +1268,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
);

View File

@ -261,7 +261,7 @@ return array(
'email_salutation' => 'Beste :name,',
'email_signature' => 'Met vriendelijke groeten,',
'email_from' => 'Het InvoiceNinja Team',
'user_email_footer' => 'Ga alstublieft naar '.SITE_URL.'/settings/notifications om uw e-mail notificatie instellingen aan te passen',
'user_email_footer' => 'Ga alstublieft naar :link om uw e-mail notificatie instellingen aan te passen',
'invoice_link_message' => 'Klik op volgende link om de Factuur van uw klant te bekijken:',
'notification_invoice_paid_subject' => 'Factuur :invoice is betaald door :client',
'notification_invoice_sent_subject' => 'Factuur :invoice is gezonden door :client',
@ -270,7 +270,7 @@ return array(
'notification_invoice_sent' => 'De volgende klant :client heeft Factuur :invoice voor :amount gemaild gekregen.',
'notification_invoice_viewed' => 'De volgende klant :client heeft Factuur :invoice voor :amount bekeken.',
'reset_password' => 'U kunt het wachtwoord van uw account resetten door op de volgende link te klikken:',
'reset_password_footer' => 'Neem a.u.b. contact op met onze helpdesk indien u deze wachtwoordreset niet heeft aangevraagd. Het e-mailadres van de helpdesk is '.CONTACT_EMAIL,
'reset_password_footer' => 'Neem a.u.b. contact op met onze helpdesk indien u deze wachtwoordreset niet heeft aangevraagd. Het e-mailadres van de helpdesk is :email',
// Payment page
'secure_payment' => 'Veilige betaling',
@ -279,22 +279,9 @@ return array(
'expiration_year' => 'Verval jaar',
'cvv' => 'CVV',
// Security alerts
'security' => [
'too_many_attempts' => 'Te veel pogingen. Probeer opnieuw binnen enkele minuten.',
'wrong_credentials' => 'Verkeerd e-mailadres of wachtwoord.',
'confirmation' => 'Uw account is bevestigd!',
'wrong_confirmation' => 'Verkeerde bevestigingscode.',
'password_forgot' => 'De informatie over uw wachtwoordreset is verzonden naar uw e-mailadres.',
'password_reset' => 'Uw wachtwoord is succesvol aangepast.',
'wrong_password_reset' => 'Ongeldig wachtwoord. Probeer opnieuw',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link om het InvoiceNinja logo te verwijderen door het pro plan te nemen',
'remove_logo_link' => 'Klik hier',
],
'pro_plan_remove_logo' => ':link om het InvoiceNinja logo te verwijderen door het pro plan te nemen',
'pro_plan_remove_logo_link' => 'Klik hier',
'logout' => 'Afmelden',
'sign_up_to_save' => 'Registreer u om uw werk op te slaan',
@ -415,7 +402,7 @@ return array(
'active' => 'Actief',
'pending' => 'In afwachting',
'deleted_user' => 'Gebruiker succesvol verwijderd',
'limit_users' => 'Sorry, dit zou de limiet van '.MAX_NUM_USERS.' gebruikers overschrijden',
'limit_users' => 'Sorry, dit zou de limiet van :limit gebruikers overschrijden',
'confirm_email_invoice' => 'Weet u zeker dat u deze factuur wilt e-mailen?',
'confirm_email_quote' => 'Weet u zeker dat u deze offerte wilt e-mailen?',
@ -449,7 +436,7 @@ return array(
'more_designs_title' => 'Aanvullende factuurontwerpen',
'more_designs_cloud_header' => 'Neem Pro Plan voor meer factuurontwerpen',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Krijg 6 extra factuurontwerpen voor maar $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Krijg 6 extra factuurontwerpen voor maar $:price',
'more_designs_self_host_text' => '',
'buy' => 'Koop',
'bought_designs' => 'Aanvullende factuurontwerpen succesvol toegevoegd',
@ -698,7 +685,7 @@ return array(
'email_error' => 'Er was een probleem met versturen van de e-mail',
'confirm_recurring_timing' => 'Opmerking: e-mails worden aan het begin van het uur verzonden.',
'old_browser' => 'Gebruik a.u.b. een <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">moderne browser</a>',
'old_browser' => 'Gebruik a.u.b. een <a href=":link" target="_blank">moderne browser</a>',
'payment_terms_help' => 'Stel de standaard factuurvervaldatum in',
'unlink_account' => 'Koppel account los',
'unlink' => 'Koppel los',
@ -795,11 +782,10 @@ return array(
'invoice_quote_number' => 'Factuur- en offertenummers',
'invoice_charges' => 'Facturatiekosten',
'invitation_status' => [
'sent' => 'E-mail verstuurd',
'opened' => 'E-mail geopend',
'viewed' => 'Factuur bekeken',
],
'invitation_status_sent' => 'E-mail verstuurd',
'invitation_status_opened' => 'E-mail geopend',
'invitation_status_viewed' => 'Factuur bekeken',
'notification_invoice_bounced' => 'We konden factuur :invoice niet afleveren bij :contact.',
'notification_invoice_bounced_subject' => 'Factuur :invoice kon niet worden afgeleverd',
'notification_quote_bounced' => 'We konden offerte :invoice niet afleveren bij :contact.',
@ -921,14 +907,12 @@ return array(
'no_mapper' => 'Geen geldige mapping voor bestand',
'invalid_csv_header' => 'Ongeldige CSV kop',
'email_errors' => [
'inactive_client' => 'E-mails kunnen niet worden verstuurd naar inactieve klanten',
'inactive_contact' => 'E-mails kunnen niet worden verstuurd naar inactieve contactpersonen',
'inactive_invoice' => 'E-mails kunnen niet worden verstuurd naar inactieve facturen',
'user_unregistered' => 'Registreer een account om e-mails te kunnen versturen',
'user_unconfirmed' => 'Bevestig uw account om e-mails te kunnen versturen',
'invalid_contact_email' => 'Ongeldig e-mailadres van contactpersoon',
],
'email_error_inactive_client' => 'E-mails kunnen niet worden verstuurd naar inactieve klanten',
'email_error_inactive_contact' => 'E-mails kunnen niet worden verstuurd naar inactieve contactpersonen',
'email_error_inactive_invoice' => 'E-mails kunnen niet worden verstuurd naar inactieve facturen',
'email_error_user_unregistered' => 'Registreer een account om e-mails te kunnen versturen',
'email_error_user_unconfirmed' => 'Bevestig uw account om e-mails te kunnen versturen',
'email_error_invalid_contact_email' => 'Ongeldig e-mailadres van contactpersoon',
'client_portal' => 'Klantenportaal',
'admin' => 'Admin',
@ -982,7 +966,7 @@ return array(
'email_designs' => 'E-mail Ontwerpen',
'assigned_when_sent' => 'Toegwezen zodra verzonden',
'white_label_custom_css' => ':link voor $'.WHITE_LABEL_PRICE.' om eigen opmaak te gebruiken en ons project te ondersteunen.',
'white_label_custom_css' => ':link voor $:price om eigen opmaak te gebruiken en ons project te ondersteunen.',
'white_label_purchase_link' => 'Koop een whitelabel licentie',
// Expense / vendor
@ -1086,7 +1070,7 @@ return array(
'archived_bank_account' => 'Bankrekening succesvol gearchiveerd',
'created_bank_account' => 'Bankrekening succesvol toegevoegd',
'validate_bank_account' => 'Bankrekening valideren',
'bank_accounts_help' => 'Koppel een bankrekening om automatisch uitgaven en leveranciers te importeren. Ondersteund American Express en <a href="'.OFX_HOME_URL.'" target="_blank">400+ banken uit de VS.</a>',
'bank_accounts_help' => 'Koppel een bankrekening om automatisch uitgaven en leveranciers te importeren. Ondersteund American Express en <a href=":link" target="_blank">400+ banken uit de VS.</a>',
'bank_password_help' => 'Opmerking: uw wachtwoord wordt beveiligd verstuurd en wordt nooit op onze servers opgeslagen.',
'bank_password_warning' => 'Waarschuwing: uw wachtwoord wordt mogelijk als leesbare tekst verzonden, overweeg HTTPS in te schakelen.',
'username' => 'Gebruikersnaam',
@ -1121,7 +1105,7 @@ return array(
'trial_call_to_action' => 'Start gratis probeerversie',
'trial_success' => 'De gratis twee weken durende probeerversie van het pro plan is succesvol geactiveerd.',
'overdue' => 'Verlopen',
'white_label_text' => 'Koop een &eacute;&eacute;n jaar geldige white label licentie van $'.WHITE_LABEL_PRICE.' om de Invoice Ninja logo\'s in het klantenportaal te verbergen en ons project te ondersteunen.',
'white_label_text' => 'Koop een &eacute;&eacute;n jaar geldige white label licentie van $:price om de Invoice Ninja logo\'s in het klantenportaal te verbergen en ons project te ondersteunen.',
'navigation' => 'Navigatie',
'list_invoices' => 'Toon Facturen',
@ -1152,14 +1136,14 @@ return array(
'enable_portal_password_help'=>'Geeft u de mogelijkheid om een wachtwoord in te stellen voor elke contactpersoon. Als er een wachtwoord is ingesteld moet de contactpersoon het wachtwoord invoeren voordat deze facturen kan bekijken.',
'send_portal_password'=>'Wachtwoord automatisch genereren',
'send_portal_password_help'=>'Als er geen wachtwoord is ingesteld zal deze automatisch worden gegenereerd en verzonden bij de eerste factuur.',
'expired' => 'Verlopen',
'invalid_card_number' => 'Het creditcardnummer is niet geldig.',
'invalid_expiry' => 'De verloopdatum is niet geldig.',
'invalid_cvv' => 'Het CVV-nummer is niet geldig.',
'cost' => 'Kosten',
'create_invoice_for_sample' => 'Opmerking: maak uw eerste factuur om hier een voorbeeld te zien.',
// User Permissions
'owner' => 'Eigenaar',
'administrator' => 'Beheerder',
@ -1178,7 +1162,7 @@ return array(
'view_all_help' => 'Gebruiker toestemming geven om regels te bekijken die hij niet heeft gemaakt',
'edit_all_help' => 'Gebruiker toestemming geven om regels te bewerken die hij niet heeft gemaakt',
'view_payment' => 'Betaling bekijken',
'january' => 'januari',
'february' => 'februari',
'march' => 'maart',
@ -1204,17 +1188,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1223,11 +1205,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1257,9 +1239,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1279,5 +1261,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
);

View File

@ -992,40 +992,26 @@ $LANG = array(
'overdue' => 'Zaległy',
'white_label_text' => 'Kup white label licencję na JEDEN ROK za $'.WHITE_LABEL_PRICE.' aby usunąć z portalu klienta logo Invoice Ninja i wesprzeć nasz projekt.',
'user_email_footer' => 'Aby dostosować ustawienia powiadomień email, zobacz '.SITE_URL.'/settings/notifications',
'reset_password_footer' => 'If you did not request this password reset please email our support: '.CONTACT_EMAIL,
'limit_users' => 'Sorry, this will exceed the limit of '.MAX_NUM_USERS.' users',
'more_designs_self_host_header' => 'Kup 6 szablonów faktur za jedyne $'.INVOICE_DESIGNS_PRICE,
'old_browser' => 'Proszę użyć <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">nowszej przeglądarki</a>',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'security' => [
'too_many_attempts' => 'Zbyt wiele prób. Spróbuj ponownie za kilka minut.',
'wrong_credentials' => 'Nieprawidłowy e-mail lub hasło.',
'confirmation' => 'Twoje konto zostało potwierdzone!',
'wrong_confirmation' => 'Błędny kod potwierdzający.',
'password_forgot' => 'Informacje dotyczące resetowania hasła zostały wysłane na Twój adres e-mail.',
'password_reset' => 'Twoje hasło zostało zmienione.',
'wrong_password_reset' => 'Nieprawidłowe hasło. Spróbuj ponownie',
],
'pro_plan' => [
'remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
'remove_logo_link' => 'Kliknij tutaj',
],
'invitation_status' => [
'sent' => 'E-mail wysłany',
'opened' => 'Email otwarty',
'viewed' => 'Przeglądana faktura',
],
'email_errors' => [
'inactive_client' => 'E-maile nie mogą być wysyłane do klientów nieaktywnych',
'inactive_contact' => 'E-mail nie może zostać wysłany do nieaktywnych kontaktów',
'inactive_invoice' => 'E-mail nie może zostać wysłany do nieaktywnych faktur',
'user_unregistered' => 'Proszę zarejestrować swoje konto, aby wysyłać e-maile',
'user_unconfirmed' => 'Proszę potwierdzić swoje konto do wysyłania e-maili',
'invalid_contact_email' => 'Nieprawidłowy e-mail kontaktowy',
],
'white_label_text' => 'Kup white label licencję na JEDEN ROK za $:price aby usunąć z portalu klienta logo Invoice Ninja i wesprzeć nasz projekt.',
'user_email_footer' => 'Aby dostosować ustawienia powiadomień email, zobacz :link',
'reset_password_footer' => 'If you did not request this password reset please email our support: :email',
'limit_users' => 'Sorry, this will exceed the limit of :limit users',
'more_designs_self_host_header' => 'Kup 6 szablonów faktur za jedyne $:price',
'old_browser' => 'Proszę użyć <a href=":link" target="_blank">nowszej przeglądarki</a>',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'pro_plan_remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
'pro_plan_remove_logo_link' => 'Kliknij tutaj',
'invitation_status_sent' => 'E-mail wysłany',
'invitation_status_opened' => 'Email otwarty',
'invitation_status_viewed' => 'Przeglądana faktura',
'email_error_inactive_client' => 'E-maile nie mogą być wysyłane do klientów nieaktywnych',
'email_error_inactive_contact' => 'E-mail nie może zostać wysłany do nieaktywnych kontaktów',
'email_error_inactive_invoice' => 'E-mail nie może zostać wysłany do nieaktywnych faktur',
'email_error_user_unregistered' => 'Proszę zarejestrować swoje konto, aby wysyłać e-maile',
'email_error_user_unconfirmed' => 'Proszę potwierdzić swoje konto do wysyłania e-maili',
'email_error_invalid_contact_email' => 'Nieprawidłowy e-mail kontaktowy',
'navigation' => 'Nawigacja',
'list_invoices' => 'Lista faktur',
@ -1054,14 +1040,14 @@ $LANG = array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Wygasło',
'invalid_card_number' => 'Numer karty kredytowej jest nieprawidłowy.',
'invalid_expiry' => 'Data ważności jest nieprawidłowa.',
'invalid_cvv' => 'Kod CVV jest nieprawidłowy.',
'cost' => 'Koszt',
'create_invoice_for_sample' => 'Notatka: aby zobaczyć podgląd, utwórz fakturę.',
// User Permissions
'owner' => 'Właściciel',
'administrator' => 'Administrator',
@ -1080,7 +1066,7 @@ $LANG = array(
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'Zobacz wpłatę',
'january' => 'Styczeń',
'february' => 'Luty',
'march' => 'Marzec',
@ -1093,7 +1079,7 @@ $LANG = array(
'october' => 'Październik',
'november' => 'Listopad',
'december' => 'Grudzień',
// Documents
'documents_header' => 'Dokumenty:',
'email_documents_header' => 'Dokumenty:',
@ -1106,17 +1092,15 @@ $LANG = array(
'document_email_attachment' => 'Załącz dokumenty',
'download_documents' => 'Ściągnij dokumenty (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Upuść pliki lub kliknij, aby przesłać',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'Plik jest zbyt duży ({{filesize}}MiB). Max rozmiar pliku: {{maxFilesize}}MiB.',
'InvalidFileType' => 'Nie możesz przesłać plików tego typu.',
'ResponseError' => 'Serwer zwraca {{statusCode}} kod.',
'CancelUpload' => 'Anuluj przesyłanie',
'CancelUploadConfirmation' => 'Czy na pewno chcesz anulować przesyłanie pliku?',
'RemoveFile' => 'Usuń plik',
),
'dropzone_default_message' => 'Upuść pliki lub kliknij, aby przesłać',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'Plik jest zbyt duży ({{filesize}}MiB). Max rozmiar pliku: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'Nie możesz przesłać plików tego typu.',
'dropzone_response_error' => 'Serwer zwraca {{statusCode}} kod.',
'dropzone_cancel_upload' => 'Anuluj przesyłanie',
'dropzone_cancel_upload_confirmation' => 'Czy na pewno chcesz anulować przesyłanie pliku?',
'dropzone_remove_file' => 'Usuń plik',
'documents' => 'Dokumenty',
'document_date' => 'Data dokumentu',
'document_size' => 'Rozmiar',
@ -1125,11 +1109,11 @@ $LANG = array(
'enable_client_portal_help' => 'Pokaż/ukryj portal klienta.',
'enable_client_portal_dashboard' => 'Pulpit',
'enable_client_portal_dashboard_help' => 'Pokaż/ukryj pulpit w panelu klienta.',
// Plans
'account_management' => 'Zarządzanie kontem',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Aktualizuj',
'plan_change' => 'Zmień plan',
'pending_change_to' => 'Zmienia się na',
@ -1159,9 +1143,9 @@ $LANG = array(
'plan_paid' => 'Termin rozpoczął',
'plan_started' => 'Plan rozpoczął',
'plan_expires' => 'Plan Wygasa',
'white_label_button' => 'Biała etykieta',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Plan Enterprise',
@ -1181,9 +1165,9 @@ $LANG = array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
return $LANG;
?>.
?>.

View File

@ -258,7 +258,7 @@ return array(
'email_salutation' => 'Caro :name,',
'email_signature' => 'Atenciosamente,',
'email_from' => 'Equipe InvoiceNinja',
'user_email_footer' => 'Para ajustar suas configurações de notificações de e-mail acesse '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'Para ajustar suas configurações de notificações de e-mail acesse :link',
'invoice_link_message' => 'Para visualizar a fatura do seu cliente clique no link abaixo:',
'notification_invoice_paid_subject' => 'Fatura :invoice foi pago por :client',
'notification_invoice_sent_subject' => 'Fatura :invoice foi enviado por :client',
@ -267,7 +267,7 @@ return array(
'notification_invoice_sent' => 'O cliente :client foi notificado por e-mail referente à fatura :invoice de :amount.',
'notification_invoice_viewed' => 'O cliente :client visualizou a fatura :invoice de :amount.',
'reset_password' => 'Você pode redefinir a sua senha clicando no seguinte link:',
'reset_password_footer' => 'Se você não solicitou a redefinição de sua senha por favor envie um e-mail para o nosso suporte: '.CONTACT_EMAIL,
'reset_password_footer' => 'Se você não solicitou a redefinição de sua senha por favor envie um e-mail para o nosso suporte: :email',
// Payment page
'secure_payment' => 'Pagamento Seguro',
@ -276,23 +276,9 @@ return array(
'expiration_year' => 'Ano de expiração',
'cvv' => 'CVV',
// This File was missing the security alerts. I'm not familiar with this language, Can someone translate?
// Security alerts
'security' => [
'too_many_attempts' => 'Muitas tentativas. Tente novamente em alguns minutos.',
'wrong_credentials' => 'E-mail ou senha incorretos.',
'confirmation' => 'Sua conta foi confirmada!',
'wrong_confirmation' => 'Código de confirmação incorreto.',
'password_forgot' => 'As informações para redefinição de senha foi enviada para seu e-mail.',
'password_reset' => 'Senha atualizada com sucesso.',
'wrong_password_reset' => 'Senha inválida. Tente novamente',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link para remover a logo do Invoice Ninja contratando o plano profissional',
'remove_logo_link' => 'Clique aqui',
],
'pro_plan_remove_logo' => ':link para remover a logo do Invoice Ninja contratando o plano profissional',
'pro_plan_remove_logo_link' => 'Clique aqui',
'logout' => 'Sair',
'sign_up_to_save' => 'Faça login para salvar o seu trabalho',
@ -413,7 +399,7 @@ return array(
'active' => 'Ativo',
'pending' => 'Pendente',
'deleted_user' => 'Usuário deletado',
'limit_users' => 'Desculpe, isto irá exceder o limite de '.MAX_NUM_USERS.' usuários',
'limit_users' => 'Desculpe, isto irá exceder o limite de :limit usuários',
'confirm_email_invoice' => 'Deseja enviar esta fatura?',
'confirm_email_quote' => 'Deseja enviar este orçamento?',
@ -447,7 +433,7 @@ return array(
'more_designs_title' => 'Modelo Adicionais',
'more_designs_cloud_header' => 'Adquira o Plano Pro para mais modelos',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Obtenha mais 6 modelos de faturas por apenas $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Obtenha mais 6 modelos de faturas por apenas $:price',
'more_designs_self_host_text' => '',
'buy' => 'Comprar',
'bought_designs' => 'Novos Modelos Adicionados',
@ -695,7 +681,7 @@ return array(
'email_error' => 'Houve um problema ao enviar o e-mail',
'confirm_recurring_timing' => 'Aviso: e-mails são enviados na hora de início.',
'old_browser' => 'Utilize um <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">navegador atualizado</a>',
'old_browser' => 'Utilize um <a href=":link" target="_blank">navegador atualizado</a>',
'payment_terms_help' => 'Defina a data de vencimento padrão',
'unlink_account' => 'Desvincular Conta',
'unlink' => 'Desvincular',
@ -792,11 +778,10 @@ return array(
'invoice_quote_number' => 'Numero de Faturas e Orçamentos',
'invoice_charges' => 'Encargos da Fatura',
'invitation_status' => [
'sent' => 'E-mail Enviado',
'opened' => 'E-mail Aberto',
'viewed' => 'E-mail Visualizado',
],
'invitation_status_sent' => 'E-mail Enviado',
'invitation_status_opened' => 'E-mail Aberto',
'invitation_status_viewed' => 'E-mail Visualizado',
'notification_invoice_bounced' => 'Não foi possível entregar a Fatura :invoice para :contact.',
'notification_invoice_bounced_subject' => 'Fatura :invoice não foi entregue',
'notification_quote_bounced' => 'Não foi possível entregar o Orçamento :invoice para :contact.',
@ -908,14 +893,12 @@ return array(
'include' => 'Incluir',
'logo_too_large' => 'Sua logo tem :size, para uma melhor performance sugerimos que este tamanho não ultrapasse 200KB',
'email_errors' => [
'inactive_client' => 'Não é possível enviar e-mails para clientes intativos',
'inactive_contact' => 'Não é possível enviar e-mails para contatos intativos',
'inactive_invoice' => 'Não é possível enviar e-mails em faturas intativas',
'user_unregistered' => 'Registre sua conta para enviar e-mails',
'user_unconfirmed' => 'Confirme sua conta para enviar e-mails',
'invalid_contact_email' => 'E-mail do contato inválido',
],
'email_error_inactive_client' => 'Não é possível enviar e-mails para clientes intativos',
'email_error_inactive_contact' => 'Não é possível enviar e-mails para contatos intativos',
'email_error_inactive_invoice' => 'Não é possível enviar e-mails em faturas intativas',
'email_error_user_unregistered' => 'Registre sua conta para enviar e-mails',
'email_error_user_unconfirmed' => 'Confirme sua conta para enviar e-mails',
'email_error_invalid_contact_email' => 'E-mail do contato inválido',
'import_freshbooks' => 'Importar de FreshBooks',
'import_data' => 'Importar Dados',
@ -979,7 +962,7 @@ return array(
'email_designs' => 'Design de E-mails',
'assigned_when_sent' => 'Assinar quando enviar',
'white_label_custom_css' => ':link apenas $'.WHITE_LABEL_PRICE.' para permitir um estilo personalizado e apoiar o nosso projecto.',
'white_label_custom_css' => ':link apenas $:price para permitir um estilo personalizado e apoiar o nosso projecto.',
'white_label_purchase_link' => 'Adquira uma licença white label',
// Expense / vendor
@ -1083,7 +1066,7 @@ return array(
'archived_bank_account' => 'Conta bancária arquivada com sucesso',
'created_bank_account' => 'Conta bancária criada com sucesso',
'validate_bank_account' => 'Validar Conta Bancária',
'bank_accounts_help' => 'Conecte sua conta bancária para importar suas despesas e criar fornecedores. Suporte ao American Express e <a href="'.OFX_HOME_URL.'" target="_blank">400+ bancos americanos.</a>',
'bank_accounts_help' => 'Conecte sua conta bancária para importar suas despesas e criar fornecedores. Suporte ao American Express e <a href=":link" target="_blank">400+ bancos americanos.</a>',
'bank_password_help' => 'Nota: sua senha é transferida de forma segura e não será armazenada em nossos servidores.',
'bank_password_warning' => 'Atenção: sua senha será transferida de forma não segura, considere habilitar HTTPS.',
'username' => 'Usuário',
@ -1118,7 +1101,7 @@ return array(
'trial_call_to_action' => 'Iniciar período de testes',
'trial_success' => 'Duas semanas de testes foi habilitado com sucesso',
'overdue' => 'Vencido',
'white_label_text' => 'Adquira UM ano de licença white label por $'.WHITE_LABEL_PRICE.' para remover a marca Invoice Ninja do portal do cliente e ajudar nosso projeto.',
'white_label_text' => 'Adquira UM ano de licença white label por $:price para remover a marca Invoice Ninja do portal do cliente e ajudar nosso projeto.',
'navigation' => 'Navegação',
'list_invoices' => 'Listar Faturas',
@ -1149,14 +1132,14 @@ return array(
'enable_portal_password_help'=>'Permite definir uma senha para cada contato. Se uma senha for definida, o contato deverá informar sua senha antes de visualizar a fatura.',
'send_portal_password'=>'Gerar senha automaticamente',
'send_portal_password_help'=>'Se uma senha não for definida, uma senha será gerada e enviada juntamente com a primeira fatura.',
'expired' => 'Expireda',
'invalid_card_number' => 'Cartão de Crédito inválido.',
'invalid_expiry' => 'Data para expirar não é valida.',
'invalid_cvv' => 'O código CVV não é válido.',
'cost' => 'Custo',
'create_invoice_for_sample' => 'Nota: cria sua primeira fatura para visualizar aqui.',
// User Permissions
'owner' => 'Proprietário',
'administrator' => 'Administrador',
@ -1174,8 +1157,8 @@ return array(
'create_all_help' => 'Permite o usuário criar e alterar todos os regitros',
'view_all_help' => 'Permite usuario visualizar regitros que ele não criou',
'edit_all_help' => 'Permite usuario editar regitros que ele não criou',
'view_payment' => 'Visualizar ',
'view_payment' => 'Visualizar ',
'january' => 'Janeiro',
'february' => 'Fevereiro',
'march' => 'Março',
@ -1201,17 +1184,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1220,11 +1201,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1254,9 +1235,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1276,5 +1257,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);
);

View File

@ -262,7 +262,7 @@ return array(
'email_salutation' => 'Hej :name,',
'email_signature' => 'Vänliga hälsningar,',
'email_from' => 'Invoice Ninja teamet',
'user_email_footer' => 'För att anpassa dina e-post notifieringar gå till '.SITE_URL.'/settings/notifications',
'user_email_footer' => 'För att anpassa dina e-post notifieringar gå till :link',
'invoice_link_message' => 'För att se din kundfaktura klicka på länken nedan:',
'notification_invoice_paid_subject' => 'Faktura :invoice är betald av :client',
'notification_invoice_sent_subject' => 'Faktura :invoice är skickad till :client',
@ -271,7 +271,7 @@ return array(
'notification_invoice_sent' => 'Följande kund :client har mailats fakturan :invoice på :amount.',
'notification_invoice_viewed' => 'Följande kund :client har sett fakturan :invoice på :amount.',
'reset_password' => 'Du kan återställa ditt lösenord genom att klicka på länken nedan:',
'reset_password_footer' => 'Om du inte begärt en återställning av ditt lösenord så var snäll och maila vår support: '.CONTACT_EMAIL,
'reset_password_footer' => 'Om du inte begärt en återställning av ditt lösenord så var snäll och maila vår support: :email',
// Payment page
'secure_payment' => 'Säker betalning',
@ -280,22 +280,9 @@ return array(
'expiration_year' => 'Giltig till år',
'cvv' => 'CVV',
// Security alerts
'confide' => [
'too_many_attempts' => 'För många felaktiga försök. Pröva igen om ett par minuter.',
'wrong_credentials' => 'Felaktig e-postadress eller lösenord.',
'confirmation' => 'Ditt konto har bekräftats!',
'wrong_confirmation' => 'Felaktig bekräftelsekod.',
'password_forgot' => 'Information angående återställning av ditt lösenord har skickats till dig via e-post.',
'password_reset' => 'Ditt lösenord har uppdaterats.',
'wrong_password_reset' => 'Felaktigt lösenord. Försök igen',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link för att ta bort Invoice Ninja loggan genom att uppgradera till Pro Plan',
'remove_logo_link' => 'Klicka här',
],
'pro_plan_remove_logo' => ':link för att ta bort Invoice Ninja loggan genom att uppgradera till Pro Plan',
'pro_plan_remove_logo_link' => 'Klicka här',
'logout' => 'Logga ut',
'sign_up_to_save' => 'Registrera dig för att spara ditt arbete',
@ -418,7 +405,7 @@ return array(
'active' => 'Aktiv',
'pending' => 'Avvaktar',
'deleted_user' => 'Användare borttagen',
'limit_users' => 'Ledsen, men du får skapa max '.MAX_NUM_USERS.' användare',
'limit_users' => 'Ledsen, men du får skapa max :limit användare',
'confirm_email_invoice' => 'Är du säker på att du vill maila denna fakturan?',
'confirm_email_quote' => 'Är du säker på att du vill maila denna offerten?',
@ -452,7 +439,7 @@ return array(
'more_designs_title' => 'Fler fakturalayouter',
'more_designs_cloud_header' => 'Uppgrader till Pro för fler fakturalayouter',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Få ytterliggare 6 fakturalayouter för bara $'.INVOICE_DESIGNS_PRICE,
'more_designs_self_host_header' => 'Få ytterliggare 6 fakturalayouter för bara $:price',
'more_designs_self_host_text' => '',
'buy' => 'Köp',
'bought_designs' => 'Fler fakturalayouter tillagda',
@ -701,7 +688,7 @@ return array(
'email_error' => 'There was a problem sending the email',
'confirm_recurring_timing' => 'Note: emails are sent at the start of the hour.',
'old_browser' => 'Please use a <a href="'.OUTDATE_BROWSER_URL.'" target="_blank">newer browser</a>',
'old_browser' => 'Please use a <a href=":link" target="_blank">newer browser</a>',
'payment_terms_help' => 'Sets the default invoice due date',
'unlink_account' => 'Unlink Account',
'unlink' => 'Unlink',
@ -798,11 +785,10 @@ return array(
'invoice_quote_number' => 'Invoice and Quote Numbers',
'invoice_charges' => 'Invoice Charges',
'invitation_status' => [
'sent' => 'Email Sent',
'opened' => 'Email Openend',
'viewed' => 'Invoice Viewed',
],
'invitation_status_sent' => 'Email Sent',
'invitation_status_opened' => 'Email Openend',
'invitation_status_viewed' => 'Invoice Viewed',
'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.',
'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice',
'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.',
@ -923,14 +909,12 @@ return array(
'no_mapper' => 'No valid mapping for file',
'invalid_csv_header' => 'Invalid CSV Header',
'email_errors' => [
'inactive_client' => 'Emails can not be sent to inactive clients',
'inactive_contact' => 'Emails can not be sent to inactive contacts',
'inactive_invoice' => 'Emails can not be sent to inactive invoices',
'user_unregistered' => 'Please register your account to send emails',
'user_unconfirmed' => 'Please confirm your account to send emails',
'invalid_contact_email' => 'Invalid contact email',
],
'email_error_inactive_client' => 'Emails can not be sent to inactive clients',
'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts',
'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices',
'email_error_user_unregistered' => 'Please register your account to send emails',
'email_error_user_unconfirmed' => 'Please confirm your account to send emails',
'email_error_invalid_contact_email' => 'Invalid contact email',
'client_portal' => 'Client Portal',
'admin' => 'Admin',
@ -984,7 +968,7 @@ return array(
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.',
'white_label_purchase_link' => 'Purchase a white label license',
// Expense / vendor
@ -1091,7 +1075,7 @@ return array(
'archived_bank_account' => 'Successfully archived bank account',
'created_bank_account' => 'Successfully created bank account',
'validate_bank_account' => 'Validate Bank Account',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href="'.OFX_HOME_URL.'" target="_blank">400+ US banks.</a>',
'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and <a href=":link" target="_blank">400+ US banks.</a>',
'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.',
'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.',
'username' => 'Username',
@ -1126,7 +1110,7 @@ return array(
'trial_call_to_action' => 'Start Free Trial',
'trial_success' => 'Successfully enabled two week free pro plan trial',
'overdue' => 'Overdue',
'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.',
'navigation' => 'Navigation',
'list_invoices' => 'List Invoices',
@ -1157,14 +1141,14 @@ return array(
'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.',
'send_portal_password'=>'Generate password automatically',
'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.',
'expired' => 'Expired',
'invalid_card_number' => 'The credit card number is not valid.',
'invalid_expiry' => 'The expiration date is not valid.',
'invalid_cvv' => 'The CVV is not valid.',
'cost' => 'Cost',
'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.',
// User Permissions
'owner' => 'Owner',
'administrator' => 'Administrator',
@ -1182,8 +1166,8 @@ return array(
'create_all_help' => 'Allow user to create and modify records',
'view_all_help' => 'Allow user to view records they didn\'t create',
'edit_all_help' => 'Allow user to modify records they didn\'t create',
'view_payment' => 'View Payment',
'view_payment' => 'View Payment',
'january' => 'January',
'february' => 'February',
'march' => 'March',
@ -1209,17 +1193,15 @@ return array(
'document_email_attachment' => 'Attach Documents',
'download_documents' => 'Download Documents (:size)',
'documents_from_expenses' => 'From Expenses:',
'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage
'DefaultMessage' => 'Drop files or click to upload',
'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.',
'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.',
'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'InvalidFileType' => 'You can\'t upload files of this type.',
'ResponseError' => 'Server responded with {{statusCode}} code.',
'CancelUpload' => 'Cancel upload',
'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?',
'RemoveFile' => 'Remove file',
),
'dropzone_default_message' => 'Drop files or click to upload',
'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.',
'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.',
'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.',
'dropzone_invalid_file_type' => 'You can\'t upload files of this type.',
'dropzone_response_error' => 'Server responded with {{statusCode}} code.',
'dropzone_cancel_upload' => 'Cancel upload',
'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?',
'dropzone_remove_file' => 'Remove file',
'documents' => 'Documents',
'document_date' => 'Document Date',
'document_size' => 'Size',
@ -1228,11 +1210,11 @@ return array(
'enable_client_portal_help' => 'Show/hide the client portal.',
'enable_client_portal_dashboard' => 'Dashboard',
'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.',
// Plans
'account_management' => 'Account Management',
'plan_status' => 'Plan Status',
'plan_upgrade' => 'Upgrade',
'plan_change' => 'Change Plan',
'pending_change_to' => 'Changes To',
@ -1262,9 +1244,9 @@ return array(
'plan_paid' => 'Term Started',
'plan_started' => 'Plan Started',
'plan_expires' => 'Plan Expires',
'white_label_button' => 'White Label',
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
'enterprise_plan_product' => 'Enterprise Plan',
@ -1284,5 +1266,5 @@ return array(
'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.',
'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.',
'return_to_app' => 'Return to app',
);

View File

@ -2,7 +2,7 @@
@section('head')
@parent
@include('money_script')
<style type="text/css">
@ -37,7 +37,7 @@
->data_bind('combobox: bank_id')
->addOption('', '')
->fromQuery($banks, 'name', 'id')
->blockHelp('texts.bank_accounts_help') !!}
->blockHelp(trans('texts.bank_accounts_help', ['link' => OFX_HOME_URL])) !!}
@endif
{!! Former::password('bank_username')
@ -70,7 +70,7 @@
<td data-bind="text: masked_account_number"></td>
<td data-bind="text: balance"></td>
<td style="text-align:center">
<input type="checkbox" value="1"
<input type="checkbox" value="1"
data-bind="checked: includeAccount, attr: {name: 'bank_accounts[' + $index() + '][include]'}"/>
</td>
</tr>
@ -110,19 +110,19 @@
<tbody data-bind="foreach: filteredTransactions">
<tr>
<td style="text-align:center">
<input type="checkbox" value="1"
<input type="checkbox" value="1"
data-bind="checked: includeTransaction, attr: {name: 'bank_accounts[' + $index() + '][include]'}"/>
</td>
<td>
<input type="text" class="form-control"
<input type="text" class="form-control"
data-bind="value: vendor.pretty, valueUpdate: 'afterkeydown'"/>
</td>
<td>
<input type="text" class="form-control"
<input type="text" class="form-control"
data-bind="value: info, valueUpdate: 'afterkeydown'"/>
</td>
<td>
<input type="text" class="form-control"
<input type="text" class="form-control"
data-bind="value: memo, valueUpdate: 'afterkeydown'"/>
</td>
<td data-bind="text: date" nowrap></td>
@ -162,7 +162,7 @@
<p/>&nbsp;<p/>
{!! Former::actions(
count(Cache::get('banks')) > 0 ?
count(Cache::get('banks')) > 0 ?
Button::normal(trans('texts.cancel'))
->withAttributes([
'data-bind' => 'visible: !importResults()',
@ -308,9 +308,9 @@
}
}
}
},
owner: self
owner: self
})
self.amount.pretty = ko.computed({
@ -351,7 +351,7 @@
self.filteredTransactions = ko.computed(function() {
if (!model.filter()) {
return self.transactions();
return self.transactions();
} else {
return ko.utils.arrayFilter(self.transactions(), function(transaction) {
return transaction.isMatch(model.filter());
@ -478,11 +478,16 @@
return self.countExpenses() == 0;
}, self);
};
window.model = new ViewModel();
ko.applyBindings(model);
@if (!empty($transactions))
loadTransactions({!! $transactions !!});
model.setPage('import');
@endif
</script>
@stop
@stop

View File

@ -1,31 +1,35 @@
@extends('header')
@section('content')
@parent
@include('accounts.nav', ['selected' => ACCOUNT_BANKS])
@section('content')
@parent
@include('accounts.nav', ['selected' => ACCOUNT_BANKS])
{!! Button::primary(trans('texts.add_bank_account'))
<div class="pull-right">
{!! Button::normal(trans('texts.import_ofx'))
->asLinkTo(URL::to('/bank_accounts/import_ofx'))
->appendIcon(Icon::create('open')) !!}
{!! Button::primary(trans('texts.add_bank_account'))
->asLinkTo(URL::to('/bank_accounts/create'))
->withAttributes(['class' => 'pull-right'])
->appendIcon(Icon::create('plus-sign')) !!}
</div>
@include('partials.bulk_form', ['entityType' => ENTITY_BANK_ACCOUNT])
@include('partials.bulk_form', ['entityType' => ENTITY_BANK_ACCOUNT])
{!! Datatable::table()
->addColumn(
{!! Datatable::table()
->addColumn(
trans('texts.name'),
trans('texts.integration_type'),
trans('texts.action'))
->setUrl(url('api/bank_accounts/'))
->setOptions('sPaginationType', 'bootstrap')
->setOptions('bFilter', false)
->setOptions('bAutoWidth', false)
->setOptions('aoColumns', [[ "sWidth"=> "50%" ], [ "sWidth"=> "30%" ], ["sWidth"=> "20%"]])
->setOptions('aoColumnDefs', [['bSortable'=>false, 'aTargets'=>[2]]])
->render('datatable') !!}
->setUrl(url('api/bank_accounts/'))
->setOptions('sPaginationType', 'bootstrap')
->setOptions('bFilter', false)
->setOptions('bAutoWidth', false)
->setOptions('aoColumns', [[ "sWidth"=> "50%" ], [ "sWidth"=> "30%" ], ["sWidth"=> "20%"]])
->setOptions('aoColumnDefs', [['bSortable'=>false, 'aTargets'=>[2]]])
->render('datatable') !!}
<script>
<script>
window.onDatatableReady = actionListHandler;
</script>
</script>
@stop
@stop

View File

@ -6,7 +6,7 @@
<link href='https://fonts.googleapis.com/css?family=Roboto+Mono' rel='stylesheet' type='text/css'>
@stop
@section('content')
@section('content')
@parent
{!! Former::open_for_files()
@ -21,7 +21,7 @@
@if (!Utils::isNinja() && !Auth::user()->account->hasFeature(FEATURE_WHITE_LABEL))
<div class="alert alert-warning" style="font-size:larger;">
<center>
{!! trans('texts.white_label_custom_css', ['link'=>'<a href="#" onclick="$(\'#whiteLabelModal\').modal(\'show\');">'.trans('texts.white_label_purchase_link').'</a>']) !!}
{!! trans('texts.white_label_custom_css', ['price' => WHITE_LABEL_PRICE, 'link'=>'<a href="#" onclick="$(\'#whiteLabelModal\').modal(\'show\');">'.trans('texts.white_label_purchase_link').'</a>']) !!}
</center>
</div>
@endif
@ -92,5 +92,5 @@
$('#send_portal_password').prop('disabled', !checked);
}
fixCheckboxes();
</script>
@stop
</script>
@stop

View File

@ -0,0 +1,30 @@
@extends('header')
@section('content')
@parent
@include('accounts.nav', ['selected' => ACCOUNT_BANKS])
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ trans('texts.import_ofx') }}</h3>
</div>
<div class="panel-body">
{!! Former::open_for_files('bank_accounts/import_ofx')
->rules(['ofx_file' => 'required'])
->addClass('warn-on-exit') !!}
{!! Former::file("ofx_file") !!}
</div>
</div>
{!! Former::actions(
Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('settings/bank_accounts'))->appendIcon(Icon::create('remove-circle')),
Button::success(trans('texts.upload'))->submit()->large()->appendIcon(Icon::create('open'))
) !!}
{!! Former::close() !!}
@stop

View File

@ -1,7 +1,7 @@
@if (!Utils::isPro() && isset($advanced) && $advanced)
<div class="alert alert-warning" style="font-size:larger;">
<center>
{!! trans('texts.pro_plan_advanced_settings', ['link'=>'<a href="#" onclick="showProPlan(\''.$selected.'\')">'.trans('texts.pro_plan.remove_logo_link').'</a>']) !!}
{!! trans('texts.pro_plan_advanced_settings', ['link'=>'<a href="#" onclick="showProPlan(\''.$selected.'\')">'.trans('texts.pro_plan_remove_logo_link').'</a>']) !!}
</center>
</div>
@endif
@ -22,11 +22,11 @@
</div>
<div class="list-group">
@foreach ($settings as $section)
<a href="{{ URL::to("settings/{$section}") }}" class="list-group-item {{ $selected === $section ? 'selected' : '' }}"
<a href="{{ URL::to("settings/{$section}") }}" class="list-group-item {{ $selected === $section ? 'selected' : '' }}"
style="width:100%;text-align:left">{{ trans("texts.{$section}") }}</a>
@endforeach
@if ($type === ADVANCED_SETTINGS && !Utils::isNinjaProd())
<a href="{{ URL::to("settings/system_settings") }}" class="list-group-item {{ $selected === 'system_settings' ? 'selected' : '' }}"
<a href="{{ URL::to("settings/system_settings") }}" class="list-group-item {{ $selected === 'system_settings' ? 'selected' : '' }}"
style="width:100%;text-align:left">{{ trans("texts.system_settings") }}</a>
@endif
</div>
@ -34,4 +34,4 @@
@endforeach
</div>
<div class="col-md-9">
<div class="col-md-9">

View File

@ -21,6 +21,6 @@
</div>
&nbsp;
<div>
{{ trans('texts.reset_password_footer') }}
{{ trans('texts.reset_password_footer', ['email' => CONTACT_EMAIL]) }}
</div>
@stop
@stop

View File

@ -8,4 +8,4 @@
{!! trans('texts.email_signature') !!}
{!! trans('texts.email_from') !!}
{!! trans('texts.user_email_footer') !!}
{!! trans('texts.user_email_footer', ['link' => URL::to('/settings/notifications')]) !!}

View File

@ -5,4 +5,4 @@
{!! trans('texts.email_signature') !!}
{!! trans('texts.email_from') !!}
{!! trans('texts.user_email_footer') !!}
{!! trans('texts.user_email_footer', ['link' => URL::to('/settings/notifications')]) !!}

View File

@ -5,4 +5,4 @@
{!! trans('texts.email_signature') !!}
{!! trans('texts.email_from') !!}
{!! trans('texts.user_email_footer') !!}
{!! trans('texts.user_email_footer', ['link' => URL::to('/settings/notifications')]) !!}

View File

@ -21,6 +21,6 @@
</div>
&nbsp;
<div>
{{ trans('texts.reset_password_footer') }}
{{ trans('texts.reset_password_footer', ['email' => CONTACT_EMAIL]) }}
</div>
@stop
@stop

View File

@ -5,4 +5,4 @@
{!! trans('texts.email_signature') !!}
{!! trans('texts.email_from') !!}
{!! trans('texts.user_email_footer') !!}
{!! trans('texts.user_email_footer', ['link' => URL::to('/settings/notifications')]) !!}

View File

@ -14,7 +14,7 @@
@stop
@section('content')
{!! Former::open($url)->addClass('warn-on-exit main-form')->method($method) !!}
<div style="display:none">
{!! Former::text('action') !!}
@ -216,13 +216,13 @@
@else
$('#amount').focus();
@endif
@if (Auth::user()->account->isPro())
@if (Auth::user()->account->hasFeature(FEATURE_DOCUMENTS))
$('.main-form').submit(function(){
if($('#document-upload .fallback input').val())$(this).attr('enctype', 'multipart/form-data')
else $(this).removeAttr('enctype')
})
// Initialize document upload
dropzone = new Dropzone('#document-upload', {
url:{!! json_encode(url('document')) !!},
@ -231,8 +231,8 @@
},
acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!},
addRemoveLinks:true,
@foreach(trans('texts.dropzone') as $key=>$text)
"dict{{strval($key)}}":"{{strval($text)}}",
@foreach(['default_message', 'fallback_message', 'fallback_text', 'file_too_big', 'invalid_file_type', 'response_error', 'cancel_upload', 'cancel_upload_confirmation', 'remove_file'] as $key)
"dict{{strval($key)}}":"{{trans('texts.dropzone_'.Utils::toClassCase($key))}}",
@endforeach
maxFileSize:{{floatval(MAX_DOCUMENT_SIZE/1000)}},
});
@ -286,7 +286,7 @@
}
}
}
if (data) {
ko.mapping.fromJS(data, self.mapping, this);
}
@ -327,11 +327,11 @@
}
var expenseCurrencyId = self.expense_currency_id() || self.account_currency_id();
var invoiceCurrencyId = self.invoice_currency_id() || self.account_currency_id();
return expenseCurrencyId != invoiceCurrencyId
return expenseCurrencyId != invoiceCurrencyId
|| invoiceCurrencyId != self.account_currency_id()
|| expenseCurrencyId != self.account_currency_id();
})
self.addDocument = function() {
var documentModel = new DocumentModel();
self.documents.push(documentModel);
@ -359,9 +359,9 @@
if (data) {
self.update(data);
}
}
}
@if (Auth::user()->account->hasFeature(FEATURE_DOCUMENTS))
function handleDocumentAdded(file){
if(file.mock)return;
@ -384,4 +384,4 @@
@endif
</script>
@stop
@stop

View File

@ -4,25 +4,25 @@
@section('head')
<link href="//fonts.googleapis.com/css?family=Roboto:400,700,900,100|Roboto+Slab:400,300,700&subset=latin,latin-ext" rel="stylesheet" type="text/css">
<link href="{{ asset('css/built.css') }}?no_cache={{ NINJA_VERSION }}" rel="stylesheet" type="text/css"/>
<link href="{{ asset('css/built.css') }}?no_cache={{ NINJA_VERSION }}" rel="stylesheet" type="text/css"/>
<style type="text/css">
body {
background-color: #EEEEEE;
padding-top: 114px;
padding-top: 114px;
}
/* Fix for header covering stuff when the screen is narrower */
@media screen and (min-width: 1200px) {
body {
padding-top: 56px;
padding-top: 56px;
}
}
@media screen and (max-width: 768px) {
body {
padding-top: 56px;
padding-top: 56px;
}
}
@ -53,12 +53,12 @@
}
@if (!Auth::check() || !Auth::user()->registered)
function validateSignUp(showError)
function validateSignUp(showError)
{
var isFormValid = true;
$(['first_name','last_name','email','password']).each(function(i, field) {
var $input = $('form.signUpForm #new_'+field),
val = $.trim($input.val());
val = $.trim($input.val());
var isValid = val && val.length >= (field == 'password' ? 6 : 1);
if (isValid && field == 'email') {
isValid = isValidEmailAddress(val);
@ -96,8 +96,8 @@
type: 'POST',
url: '{{ URL::to('signup/validate') }}',
data: 'email=' + $('form.signUpForm #new_email').val(),
success: function(result) {
if (result == 'available') {
success: function(result) {
if (result == 'available') {
submitSignUp();
} else {
$('#errorTaken').show();
@ -106,19 +106,19 @@
$('#working').hide();
}
}
});
});
}
function submitSignUp() {
$.ajax({
type: 'POST',
url: '{{ URL::to('signup/submit') }}',
data: 'new_email=' + encodeURIComponent($('form.signUpForm #new_email').val()) +
'&new_password=' + encodeURIComponent($('form.signUpForm #new_password').val()) +
'&new_first_name=' + encodeURIComponent($('form.signUpForm #new_first_name').val()) +
data: 'new_email=' + encodeURIComponent($('form.signUpForm #new_email').val()) +
'&new_password=' + encodeURIComponent($('form.signUpForm #new_password').val()) +
'&new_first_name=' + encodeURIComponent($('form.signUpForm #new_first_name').val()) +
'&new_last_name=' + encodeURIComponent($('form.signUpForm #new_last_name').val()) +
'&go_pro=' + $('#go_pro').val(),
success: function(result) {
success: function(result) {
if (result) {
handleSignedUp();
NINJA.isRegistered = true;
@ -142,7 +142,7 @@
function checkForEnter(event)
{
if (event.keyCode === 13){
event.preventDefault();
event.preventDefault();
validateServerSignUp();
return false;
}
@ -154,10 +154,10 @@
NINJA.formIsChanged = false;
}
if (force || NINJA.isRegistered) {
if (force || NINJA.isRegistered) {
window.location = '{{ URL::to('logout') }}';
} else {
$('#logoutModal').modal('show');
$('#logoutModal').modal('show');
}
}
@ -197,7 +197,7 @@
window.location = '/settings/account_management#changePlanModel';
}
} else {
$('#proPlanModal').modal('hide');
$('#proPlanModal').modal('hide');
$('#go_pro').val('true');
showSignUp();
}
@ -262,7 +262,7 @@
$('#navbar-options').hide();
$('#search-form').show();
$('#search').focus();
if (!window.loadedSearchData) {
trackEvent('/activity', '/search');
$.get('{{ URL::route('getSearchData') }}', function(data) {
@ -279,7 +279,7 @@
templates: {
header: '&nbsp;<span style="font-weight:600;font-size:16px">{{ Auth::user()->account->custom_client_label1 }}</span>'
}
}
}
@endif
@if (Auth::check() && Auth::user()->account->custom_client_label2)
,{
@ -290,7 +290,7 @@
templates: {
header: '&nbsp;<span style="font-weight:600;font-size:16px">{{ Auth::user()->account->custom_client_label2 }}</span>'
}
}
}
@endif
@foreach (['clients', 'contacts', 'invoices', 'quotes', 'navigation'] as $type)
,{
@ -305,19 +305,19 @@
@endforeach
).on('typeahead:selected', function(element, datum, name) {
window.location = datum.url;
}).focus();
}).focus();
window.loadedSearchData = true;
});
}
}
function hideSearch() {
$('#search-form').hide();
$('#navbar-options').show();
}
$(function() {
window.setTimeout(function() {
window.setTimeout(function() {
$(".alert-hide").fadeOut();
}, 3000);
@ -341,7 +341,7 @@
$(['first_name','last_name','email','password']).each(function(i, field) {
var $input = $('form.signUpForm #new_'+field);
if (!$input.val()) {
$input.focus();
$input.focus();
return false;
}
});
@ -350,7 +350,7 @@
@if (Auth::check() && !Utils::isNinja() && !Auth::user()->registered)
$('#closeSignUpButton').hide();
showSignUp();
showSignUp();
@elseif(Session::get('sign_up') || Input::get('sign_up'))
showSignUp();
@endif
@ -385,7 +385,7 @@
});
</script>
</script>
@stop
@ -404,7 +404,7 @@
<a href="{{ URL::to(NINJA_WEB_URL) }}" class='navbar-brand' target="_blank">
{{-- Per our license, please do not remove or modify this link. --}}
<img src="{{ asset('images/invoiceninja-logo.png') }}" style="height:20px;width:auto;padding-right:10px"/>
</a>
</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
@ -437,9 +437,9 @@
@endif
<span class="caret"></span>
</div>
<span class="glyphicon glyphicon-user nav-account-icon" style="padding-left:0px"
title="{{ Auth::user()->account->getDisplayName() }}"/>
</button>
<span class="glyphicon glyphicon-user nav-account-icon" style="padding-left:0px"
title="{{ Auth::user()->account->getDisplayName() }}"/>
</button>
<ul class="dropdown-menu user-accounts">
@if (session(SESSION_USER_ACCOUNTS))
@foreach (session(SESSION_USER_ACCOUNTS) as $item)
@ -468,12 +468,12 @@
@endforeach
@else
@include('user_account', [
'account_name' => Auth::user()->account->name ?: trans('texts.untitled'),
'account_name' => Auth::user()->account->name ?: trans('texts.untitled'),
'user_name' => Auth::user()->getDisplayName(),
'logo_url' => Auth::user()->account->getLogoURL(),
'selected' => true,
])
@endif
@endif
<li class="divider"></li>
@if (Utils::isAdmin())
@if (count(session(SESSION_USER_ACCOUNTS)) > 1)
@ -486,9 +486,9 @@
</ul>
</div>
</div>
<ul class="nav navbar-nav navbar-right navbar-settings">
</div>
<ul class="nav navbar-nav navbar-right navbar-settings">
<li class="dropdown">
@if (Utils::isAdmin())
<a href="{{ URL::to('/settings') }}" class="dropdown-toggle">
@ -509,18 +509,18 @@
</ul>
<ul class="nav navbar-nav navbar-right navbar-search">
<ul class="nav navbar-nav navbar-right navbar-search">
<li class="dropdown">
<a href="#" onclick="showSearch()">
<span class="glyphicon glyphicon-search" title="{{ trans('texts.search') }}"/>
</a>
<ul class="dropdown-menu">
<ul class="dropdown-menu">
@if (count(Session::get(RECENTLY_VIEWED)) == 0)
<li><a href="#">{{ trans('texts.no_items') }}</a></li>
@else
@foreach (Session::get(RECENTLY_VIEWED) as $link)
@if (property_exists($link, 'accountId') && $link->accountId == Auth::user()->account_id)
<li><a href="{{ $link->url }}">{{ $link->name }}</a></li>
<li><a href="{{ $link->url }}">{{ $link->name }}</a></li>
@endif
@endforeach
@endif
@ -531,12 +531,12 @@
<form id="search-form" class="navbar-form navbar-right" role="search" style="display:none">
<div class="form-group">
<input type="text" id="search" style="width: 240px;padding-top:0px;padding-bottom:0px"
<input type="text" id="search" style="width: 240px;padding-top:0px;padding-bottom:0px"
class="form-control" placeholder="{{ trans('texts.search') . ': ' . trans('texts.search_hotkey')}}">
</div>
</form>
</div><!-- /.navbar-collapse -->
@ -545,7 +545,7 @@
<br/>
<div class="container">
@include('partials.warn_session', ['redirectTo' => '/dashboard'])
@if (Session::has('warning'))
@ -558,8 +558,8 @@
</div>
@elseif (Session::has('news_feed_message'))
<div class="alert alert-info">
{!! Session::get('news_feed_message') !!}
<a href="#" onclick="hideMessage()" class="pull-right">{{ trans('texts.hide') }}</a>
{!! Session::get('news_feed_message') !!}
<a href="#" onclick="hideMessage()" class="pull-right">{{ trans('texts.hide') }}</a>
</div>
@endif
@ -571,7 +571,7 @@
{!! Form::breadcrumbs(isset($entityStatus) ? $entityStatus : '') !!}
@endif
@yield('content')
@yield('content')
</div>
@ -600,7 +600,7 @@
{!! Former::text('go_pro') !!}
</div>
<div class="row signup-form">
<div class="col-md-11 col-md-offset-1">
{!! Former::checkbox('terms_checkbox')->label(' ')->text(trans('texts.agree_to_terms', ['terms' => '<a href="'.URL::to('terms').'" target="_blank">'.trans('texts.terms_of_service').'</a>']))->raw() !!}
@ -610,7 +610,7 @@
<div class="col-md-4 col-md-offset-1">
<h4>{{ trans('texts.sign_up_using') }}</h4><br/>
@foreach (App\Services\AuthService::$providers as $provider)
<a href="{{ URL::to('auth/' . $provider) }}" class="btn btn-primary btn-block"
<a href="{{ URL::to('auth/' . $provider) }}" class="btn btn-primary btn-block"
onclick="setSocialLoginProvider('{{ strtolower($provider) }}')" id="{{ strtolower($provider) }}LoginButton">
<i class="fa fa-{{ strtolower($provider) }}"></i> &nbsp;
{{ $provider }}
@ -623,12 +623,12 @@
<div style="border-right:thin solid #CCCCCC;height:110px;width:8px;margin-top:10px;"></div>
</div>
<div class="col-md-6">
@else
@else
<div class="col-md-12">
@endif
{{ Former::setOption('TwitterBootstrap3.labelWidths.large', 1) }}
{{ Former::setOption('TwitterBootstrap3.labelWidths.small', 1) }}
{!! Former::text('new_first_name')
->placeholder(trans('texts.first_name'))
->autocomplete('given-name')
@ -644,7 +644,7 @@
{!! Former::password('new_password')
->placeholder(trans('texts.password'))
->label(' ') !!}
{{ Former::setOption('TwitterBootstrap3.labelWidths.large', 4) }}
{{ Former::setOption('TwitterBootstrap3.labelWidths.small', 4) }}
</div>
@ -655,9 +655,9 @@
</div>
{!! Former::close() !!}
<center><div id="errorTaken" style="display:none">&nbsp;<br/>{{ trans('texts.email_taken') }}</div></center>
<br/>
@ -679,7 +679,7 @@
<br/>&nbsp;
</div>
<div class="modal-footer" id="signUpFooter" style="margin-top: 0px">
<div class="modal-footer" id="signUpFooter" style="margin-top: 0px">
<button type="button" class="btn btn-default" id="closeSignUpButton" data-dismiss="modal">{{ trans('texts.close') }} <i class="glyphicon glyphicon-remove-circle"></i></button>
<button type="button" class="btn btn-primary" id="saveSignUpButton" onclick="validateServerSignUp()" disabled>{{ trans('texts.save') }} <i class="glyphicon glyphicon-floppy-disk"></i></button>
</div>
@ -696,14 +696,14 @@
<h4 class="modal-title" id="myModalLabel">{{ trans('texts.logout') }}</h4>
</div>
<div class="container">
<div class="container">
<h3>{{ trans('texts.are_you_sure') }}</h3>
<p>{{ trans('texts.erase_data') }}</p>
<p>{{ trans('texts.erase_data') }}</p>
</div>
<div class="modal-footer" id="signUpFooter">
<div class="modal-footer" id="signUpFooter">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.cancel') }}</button>
<button type="button" class="btn btn-primary" onclick="logout(true)">{{ trans('texts.logout') }}</button>
<button type="button" class="btn btn-primary" onclick="logout(true)">{{ trans('texts.logout') }}</button>
</div>
</div>
</div>
@ -717,7 +717,7 @@
<div class="pull-right">
<img onclick="hideProPlan()" class="close" src="{{ asset('images/pro_plan/close.png') }}"/>
</div>
</div>
<div class="row">
<div class="col-md-7 left-side">
@ -758,7 +758,7 @@
@if (Utils::isNinjaProd())
@if (Auth::check() && Auth::user()->isTrial())
{!! trans(Auth::user()->account->getCountTrialDaysLeft() == 0 ? 'texts.trial_footer_last_day' : 'texts.trial_footer', [
'count' => Auth::user()->account->getCountTrialDaysLeft(),
'count' => Auth::user()->account->getCountTrialDaysLeft(),
'link' => '<a href="javascript:submitProPlan()">' . trans('texts.click_here') . '</a>'
]) !!}
@endif
@ -766,8 +766,8 @@
{{ trans('texts.powered_by') }}
{{-- Per our license, please do not remove or modify this section. --}}
{!! link_to('https://www.invoiceninja.com/?utm_source=powered_by', 'InvoiceNinja.com', ['target' => '_blank', 'title' => 'invoiceninja.com']) !!} -
{!! link_to(RELEASES_URL, 'v' . NINJA_VERSION, ['target' => '_blank', 'title' => trans('texts.trello_roadmap')]) !!} |
@if (Auth::user()->account->hasFeature(FEATURE_WHITE_LABEL))
{!! link_to(RELEASES_URL, 'v' . NINJA_VERSION, ['target' => '_blank', 'title' => trans('texts.trello_roadmap')]) !!} |
@if (Auth::user()->account->hasFeature(FEATURE_WHITE_LABEL))
{{ trans('texts.white_labeled') }}
@else
<a href="#" onclick="loadImages('#whiteLabelModal');$('#whiteLabelModal').modal('show');">{{ trans('texts.white_label_link') }}</a>
@ -781,7 +781,7 @@
</div>
<div class="panel-body">
<p>{{ trans('texts.white_label_text')}}</p>
<p>{{ trans('texts.white_label_text', ['price' => WHITE_LABEL_PRICE])}}</p>
<div class="row">
<div class="col-md-6">
<h4>{{ trans('texts.before') }}</h4>
@ -794,7 +794,7 @@
</div>
</div>
<div class="modal-footer" id="signUpFooter" style="margin-top: 0px">
<div class="modal-footer" id="signUpFooter" style="margin-top: 0px">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.close') }} </button>
{{-- DropdownButton::success_lg(trans('texts.buy'), [
['url' => URL::to(""), 'label' => trans('texts.pay_with_paypal')],

View File

@ -17,7 +17,7 @@
label.control-label[for=invoice_number] {
font-weight: normal !important;
}
select.tax-select {
width: 50%;
float: left;
@ -79,7 +79,7 @@
&nbsp;&nbsp;<div class="label label-danger">{{ trans('texts.deleted') }}</div>
@endif
</h4>
@can('view', $invoice->client)
@can('edit', $invoice->client)
<a id="editClientLink" class="pointer" data-bind="click: $root.showClientForm">{{ trans('texts.edit_client') }}</a> |
@ -90,7 +90,7 @@
</div>
<div style="display:none">
@endif
{!! Former::select('client')->addOption('', '')->data_bind("dropdown: client")->addClass('client-input')->addGroupClass('client_select closer-row') !!}
<div class="form-group" style="margin-bottom: 8px">
@ -440,7 +440,7 @@
->options($taxRateOptions)
->addClass('tax-select')
->data_bind('value: tax1')
->raw() !!}
->raw() !!}
<input type="text" name="tax_name1" data-bind="value: tax_name1" style="display:none">
<input type="text" name="tax_rate1" data-bind="value: tax_rate1" style="display:none">
{!! Former::select('')
@ -448,7 +448,7 @@
->options($taxRateOptions)
->addClass('tax-select')
->data_bind('value: tax2')
->raw() !!}
->raw() !!}
<input type="text" name="tax_name2" data-bind="value: tax_name2" style="display:none">
<input type="text" name="tax_rate2" data-bind="value: tax_rate2" style="display:none">
</td>
@ -550,7 +550,7 @@
@if (!Auth::user()->account->isPro())
<div style="font-size:larger">
{!! trans('texts.pro_plan.remove_logo', ['link'=>'<a href="#" onclick="showProPlan(\'remove_logo\')">'.trans('texts.pro_plan.remove_logo_link').'</a>']) !!}
{!! trans('texts.pro_plan_remove_logo', ['link'=>'<a href="#" onclick="showProPlan(\'remove_logo\')">'.trans('texts.pro_plan_remove_logo_link').'</a>']) !!}
</div>
@endif
@ -590,7 +590,7 @@
{!! Former::text('client[work_phone]')
->label('work_phone')
->data_bind("value: work_phone, valueUpdate: 'afterkeydown'") !!}
</span>
@if (Auth::user()->hasFeature(FEATURE_INVOICE_SETTINGS))
@ -777,7 +777,7 @@
var $clientSelect = $('select#client');
var invoiceDesigns = {!! $invoiceDesigns !!};
var invoiceFonts = {!! $invoiceFonts !!};
$(function() {
// create client dictionary
for (var i=0; i<clients.length; i++) {
@ -865,7 +865,7 @@
}
@endif
// display blank instead of '0'
if (!NINJA.parseFloat(model.invoice().discount())) model.invoice().discount('');
if (!NINJA.parseFloat(model.invoice().partial())) model.invoice().partial('');
@ -987,13 +987,13 @@
@endif
applyComboboxListeners();
@if (Auth::user()->account->hasFeature(FEATURE_DOCUMENTS))
$('.main-form').submit(function(){
if($('#document-upload .dropzone .fallback input').val())$(this).attr('enctype', 'multipart/form-data')
else $(this).removeAttr('enctype')
})
// Initialize document upload
dropzone = new Dropzone('#document-upload .dropzone', {
url:{!! json_encode(url('document')) !!},
@ -1002,8 +1002,8 @@
},
acceptedFiles:{!! json_encode(implode(',',\App\Models\Document::$allowedMimes)) !!},
addRemoveLinks:true,
@foreach(trans('texts.dropzone') as $key=>$text)
"dict{{strval($key)}}":"{{strval($text)}}",
@foreach(['default_message', 'fallback_message', 'fallback_text', 'file_too_big', 'invalid_file_type', 'response_error', 'cancel_upload', 'cancel_upload_confirmation', 'remove_file'] as $key)
"dict{{Utils::toClassCase($key)}}":"{{trans('texts.dropzone_'.$key)}}",
@endforeach
maxFileSize:{{floatval(MAX_DOCUMENT_SIZE/1000)}},
});
@ -1245,7 +1245,7 @@
}
onPartialChange(true);
return true;
}
@ -1400,24 +1400,24 @@
number = number.replace('{$custom2}', client.custom_value2 ? client.custom_value1 : '');
model.invoice().invoice_number(number);
}
@if ($account->hasFeature(FEATURE_DOCUMENTS))
function handleDocumentAdded(file){
if(file.mock)return;
file.index = model.invoice().documents().length;
model.invoice().addDocument({name:file.name, size:file.size, type:file.type});
}
function handleDocumentRemoved(file){
model.invoice().removeDocument(file.public_id);
refreshPDF(true);
}
function handleDocumentUploaded(file, response){
file.public_id = response.document.public_id
model.invoice().documents()[file.index].update(response.document);
refreshPDF(true);
if(response.document.preview_url){
dropzone.emit('thumbnail', file, response.document.preview_url);
}

View File

@ -13,9 +13,9 @@
<div class="container">
@if (Utils::isNinja())
<h3>{{ trans('texts.more_designs_cloud_header') }}</h3>
<p>{{ trans('texts.more_designs_cloud_text') }}</p>
<p>{{ trans('texts.more_designs_cloud_text') }}</p>
@else
<h3>{{ trans('texts.more_designs_self_host_header') }}</h3>
<h3>{{ trans('texts.more_designs_self_host_header', ['price' => INVOICE_DESIGNS_PRICE]) }}</h3>
<p>{{ trans('texts.more_designs_self_host_text') }}</p>
@endif
</div>
@ -44,9 +44,9 @@
<p>&nbsp;</p>
</center>
<div class="modal-footer" id="signUpFooter">
<div class="modal-footer" id="signUpFooter">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.cancel') }}</button>
@if (Utils::isNinjaProd())
<button type="button" class="btn btn-primary" onclick="showProPlan('invoice_designs')">{{ trans('texts.go_pro') }}</button>
@else
@ -61,7 +61,7 @@
<script type="text/javascript">
window.logoImages = {};
logoImages.imageLogo1 = "{{ Form::image_data('images/report_logo1.jpg') }}";
logoImages.imageLogoWidth1 =120;
logoImages.imageLogoHeight1 = 40
@ -79,7 +79,7 @@
if (window.invoice) {
invoice.image = window.accountLogo;
invoice.imageWidth = {{ $account->getLogoWidth() }};
invoice.imageHeight = {{ $account->getLogoHeight() }};
invoice.imageHeight = {{ $account->getLogoHeight() }};
}
@endif
@ -95,9 +95,9 @@
NINJA.secondaryColor = "";
NINJA.fontSize = 9;
NINJA.headerFont = "Roboto";
NINJA.bodyFont = "Roboto";
NINJA.bodyFont = "Roboto";
@endif
var invoiceLabels = {!! json_encode($account->getInvoiceLabels()) !!};
if (window.invoice) {
@ -113,21 +113,21 @@
//console.log('refresh PDF - force: ' + force + ' ' + (new Date()).getTime())
return getPDFString(refreshPDFCB, force);
}
function refreshPDFCB(string) {
if (!string) return;
PDFJS.workerSrc = '{{ asset('js/pdf_viewer.worker.js') }}';
var forceJS = {{ Auth::check() && Auth::user()->force_pdfjs ? 'false' : 'true' }};
// Temporarily workaround for: https://code.google.com/p/chromium/issues/detail?id=574648
if (forceJS && (isFirefox || (isChrome && (!isChrome48 || {{ isset($viewPDF) && $viewPDF ? 'true' : 'false' }})))) {
// Temporarily workaround for: https://code.google.com/p/chromium/issues/detail?id=574648
if (forceJS && (isFirefox || (isChrome && (!isChrome48 || {{ isset($viewPDF) && $viewPDF ? 'true' : 'false' }})))) {
$('#theFrame').attr('src', string).show();
} else {
} else {
if (isRefreshing) {
needsRefresh = true;
return;
}
isRefreshing = true;
var pdfAsArray = convertDataURIToBinary(string);
var pdfAsArray = convertDataURIToBinary(string);
PDFJS.getDocument(pdfAsArray).then(function getPdfHelloWorld(pdf) {
pdf.getPage(1).then(function getPageHelloWorld(page) {
@ -147,7 +147,7 @@
refreshPDF();
}
});
});
});
}
}
@ -157,4 +157,4 @@
$('#moreDesignsModal').modal('show');
}
</script>
</script>

View File

@ -70,7 +70,7 @@
var thousand = currency.thousand_separator;
var decimal = currency.decimal_separator;
var code = currency.code;
var swapSymbol = false;
var swapSymbol = currency.swap_currency_symbol;
if (countryId && currencyId == {{ CURRENCY_EURO }}) {
var country = countryMap[countryId];

View File

@ -87,6 +87,15 @@
{{ Former::populateField('state', 'NY') }}
{{ Former::populateField('postal_code', '10118') }}
{{ Former::populateField('country_id', 840) }}
<script>
$(function() {
$('#card_number').val('4242424242424242');
$('#cvv').val('1234');
$('#expiration_month').val(1);
$('#expiration_year').val({{ date_create()->modify('+3 year')->format('Y') }});
})
</script>
@endif
@ -480,4 +489,4 @@
<a href="https://plaid.com/products/auth/" target="_blank" style="display:none" id="secured_by_plaid"><img src="{{ URL::to('images/plaid-logowhite.svg') }}">{{ trans('texts.secured_by_plaid') }}</a>
<script src="https://cdn.plaid.com/link/stable/link-initialize.js"></script>
@endif
@stop
@stop